Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
cursos:mct:exemplo5 [2011/05/09 10:42]
paulojus
cursos:mct:exemplo5 [2011/05/27 19:00] (atual)
paulojus
Linha 1: Linha 1:
 ====== Miscelânia de tópicos ====== ====== Miscelânia de tópicos ======
  
-<fs medium>Um breve exemplo de operações matriciais - coeficientes de regressao(modelo) linear +<fs medium>Ordenação</fs> 
-</​fs><​code R> +<code R> 
-require(MASS+x <- rpois(10, lam=10
-data(hills+
-names(hills+sort(x
-X <- cbind(1, hills$dist+order(x
-y <- hills$time +x[order(x)] 
- +x[rev(order(x))
-## Há formas e formas de fazer operações... +args(order
- +order(xdecreasing=T)
-## uma forma não muito adequada: +
-solve(t(X%*% X%*% t(X%*% y +
- +
-## outra melhor: +
-solve(crossprod(X)crossprod(X,​ y)+
 </​code>​ </​code>​
  
Linha 73: Linha 68:
 </​code>​ </​code>​
  
-<fs medium>Lendo dados de teclado e da área de transferência</fs>+<fs medium>Precisão numérica/​ponto flutuante</fs> 
 + 
 +Encontrando dados replicados, e não replicados
 <code R> <code R>
-## digitar dados com <ENTERapós cada registroDigitar um <ENTERa mais para encerrar+<- rpois(25, lam=5) 
-s1 <- scan()+
 +unique(x) 
 + 
 +duplicated(x) 
 +x[!duplicated(x)] 
 +x[duplicated(x)] 
 +</code> 
 + 
 +Representação de números e ponto flutuante.\\ 
 +''​isTRUE''​ deve se usado para testar condições dentro de funções. 
 +<code R> 
 +.1 == .3/3 
 +all.equal(.1,​ .3/3) 
 +isTRUE(all.equal(0.1,​ .3/3)) 
 +identical(.1,​ .3/3) 
 +</​code>​ 
 + 
 +Mais coisas que deveriam ser iguais... mas não exatamente são ... 
 +<code R> 
 +seq(0, 1, by=0.1) == 0.3 
 + 
 +x <- c(.3, 0.4 - 0.1, 0.5 - 0.2, 0.6 - 0.3, 0.7 - 0.4) 
 +
 +unique(x) 
 +</​code>​ 
 + 
 +Um exemplo com uma função ​para resolver equação do 2o grau: 
 +<code R> 
 +eq2g <- function(a, b, c){ 
 + delta <- b^2 - 4 * a * c 
 + if(is.complex(delta) || all(delta > 0)) 
 +    ​delta ​<- sqrt(delta) 
 + else 
 +    delta <- sqrt(as.complex(delta)) 
 + return(cbind(-b + c(-1,1) * delta)/​(2*a)) 
 +
 + 
 +print(eq2g(1,​ -5, 6), dig=16)
  
-## recortar ​(CTRL-Cos seguintes +eq2g(1, c(-5, 1), 6)
-12  13  14   +
-21  21  14   +
-12  31  25 +
-15  32  29+
  
-## lendo como vetor... +eq2g(1-5, 6) - c(2, 3)
-s1 <- scan("​clipboard"​) +
-## .. e transformando para matriz +
-## le por linhasportanto para montar matriz de ser por linha  +
-matrix(s1nc=3, byrow=T)+
  
-## agora lendo diretamente como data-frame +eq2g(1/​3, ​-5/3, 6/3)
-d1 <- read.table("​clipboard"​) +
-d1+
  
-## mais opcoes +print(eq2g(1/​3, ​-5/36/3)dig=16)
-## recortar ​(CTRL-C) os seguintes +
-X;      Y;   ​Z; ​   S +
-12,3;  13;  14,2;  A +
-21,2;  21;  14,0;  A +
-12,1;  31;  25,1;  B +
-15,1;  32;  29,9;  B+
  
-d2 <- read.table("​clipboard"​sep=";"​dec=","​header=T) +eq2g(1/3-5/36/3) - c(23)
-d2+
 </​code>​ </​code>​
  
-<fs medium>​Exemplo lendo tabelas da página do MCT/​Indicadores</​fs>​ 
  
-Acessar tabelas na web por www.mct.gov.br/indicadores+<fs medium>​Objetos crescentes, substituição der valores e criação direta de vetores</fs>
  
 +Os tempos de execução podem ser substancialmetne diferentes!!
 <code R> <code R>
 +n<- 50000
  
 +system.time({
 +vec <- numeric(0)
 +for(i in 1:n) vec <- c(vec, i)
 +})
  
 +system.time({
 +vec <- numeric(n)
 +for(i in 1:n) vec[i] <- i
 +})
 +
 +system.time({
 +vec <- 1:n
 +})
 </​code>​ </​code>​
  
 +Onderm de operações
 +<code R>
 +x <- rnorm(10000,​ m=100, sd=10)
  
 +system.time({
 + lsum <- 0
 + for(i in 1:​length(x)){
 +   lsum <- lsum + log(x[i])
 +  }
 + })
 +
 +system.time(lsum <- sum(log(x)))
 +
 +c(log(12.3),​ log(16.7), log(18.3))
 +log(c(12.3, 16.7, 18.3))
 +</​code>​

QR Code
QR Code cursos:mct:exemplo5 (generated for current page)