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 anteriorRevisão anterior
Próxima revisão
Revisão anterior
cursos:mct:exemplo5 [2011/05/09 10:42] paulojuscursos: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)