construção de um objecto para calcular os outliers

Boa tarde estou a criar objectos para poder fazer o calculo dos outliers mas está a dar tudo NULL, eu queria saber porque.. dados lidos: 2008 2009 2010 2011 2012 1 49 54 57 54 56 2 53 54 55 53 59 3 52 51 52 53 52 4 57 59 59 60 63 5 63 60 63 64 62 6 58 57 59 58 63 estatísticas: #estatísticas descritivas porano<-apply(dados[-c(19,23,36,37),-1],2,function(x)c(summary(x),0)[1:7]) desviopadrao<-apply(dados[-c(19,23,36,37),-1],2,sd,na.rm=TRUE) variancia<-apply(dados[-c(19,23,36,37),-1],2,var,na.rm=TRUE) r<-apply(dados[-c(19,23,36,37),-1],2,range,na.rm=TRUE) diffr<-diff(r) iqr<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x,na.rm=TRUE)[4]-quantile(x,na.rm=TRUE)[2]}) besq<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x, na.rm=TRUE)[2]})-1.5*iqr bdt<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x, na.rm=TRUE)[4]})+1.5*iqr outliers<-list() for(i in names(dados[-c(19,23,36,37),-1])){ tmp<-dados[-c(19,23,36,37),i] outliers[[i]]<-tmp[tmp > bdt[i] | dados[-c(19,23,36,37),i] < besq[i]] } row.names(diffr) <- "Diferen?a do range" # Como o resultado do comando diff ? uma matriz, voc? precisa colocar o nome da linha antes de juntar todos os resultados rownames(porano)<-c("Mínimo","Primeiro Quartil","Mediana","Média","Terceiro Quartil","Máximo","NAs") todos_resultados_dados<-rbind(porano,"Desvio padr?o"=desviopadrao, "Vari?ncia"=variancia, diffr, iqr,besq,bdt,outliers) todos_resultados_dados porano resultado: 2008 2009 2010 2011 2012 Mínimo 48 52 56 55.33 58 Primeiro Quartil 4.708149 4.198439 4.554801 5.255589 4.6888 Mediana 22.16667 17.62689 20.74621 27.62121 21.98485 Média 19 19 19 22 18 Terceiro Quartil 6 5 7 6 7 Máximo 43 44.5 41.5 44 41.5 NAs 67 64.5 69.5 68 69.5 Desvio padr?o Numeric,0 44 Numeric,0 43 Numeric,0 Vari?ncia NULL NULL NULL NULL NULL Diferen?a do range NULL NULL NULL NULL NULL iqr NULL NULL NULL NULL NULL besq NULL NULL NULL NULL NULL bdt NULL NULL NULL NULL NULL outliers NULL NULL NULL NULL NULL porquê NULL? Cumprimentos Ana Rocha

Ana, você em primeiro lugar você esta colocando uma lista dentro de uma matrix se você quer contabilizar o número de outliers veja o tamanho do vetor que você obteve dado as condições para tal faça as alterações em vermelho porano<-apply(dados[-c(19,23,3 6,37),-1],2,function(x)c(summary(x),0)[1:7]) desviopadrao<-apply(dados[-c(19,23,36,37),-1],2,sd,na.rm=TRUE) variancia<-apply(dados[-c(19,23,36,37),-1],2,var,na.rm=TRUE) r<-apply(dados[-c(19,23,36,37),-1],2,range,na.rm=TRUE) diffr<-diff(r) iqr<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x,na.rm=TRUE)[4]-quantile(x,na.rm=TRUE)[2]}) besq<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x, na.rm=TRUE)[2]})-1.5*iqr bdt<-apply(dados[-c(19,23,36,37),-1],2,function(x){quantile(x, na.rm=TRUE)[4]})+1.5*iqr outliers<-rep(0,ncol(dados)-1) for(i in names(dados[-c(19,23,36,37),-1])){ tmp<-dados[-c(19,23,36,37),i] outliers[i]<-length(tmp[tmp > bdt[i] | dados[-c(19,23,36,37),i] < besq[i]]) } row.names(diffr) <- "Diferen?a do range" # Como o resultado do comando diff ? uma matriz, voc? precisa colocar o nome da linha antes de juntar todos os resultados rownames(porano)<-c("Mínimo","Primeiro Quartil","Mediana","Média","Terceiro Quartil","Máximo","NAs") todos_resultados_dados<-rbind(porano,"Desvio padr?o"=desviopadrao, "Vari?ncia"=variancia, diffr, iqr,besq,bdt,outliers) todos_resultados_dados Tito Conte 2013/5/17 <alanarocha@sapo.pt>
Boa tarde estou a criar objectos para poder fazer o calculo dos outliers mas está a dar tudo NULL, eu queria saber porque.. dados lidos: 2008 2009 2010 2011 2012 1 49 54 57 54 56 2 53 54 55 53 59 3 52 51 52 53 52 4 57 59 59 60 63 5 63 60 63 64 62 6 58 57 59 58 63 estatísticas: #estatísticas descritivas porano<-apply(dados[-c(19,23,**36,37),-1],2,function(x)c(** summary(x),0)[1:7]) desviopadrao<-apply(dados[-c(**19,23,36,37),-1],2,sd,na.rm=**TRUE) variancia<-apply(dados[-c(19,**23,36,37),-1],2,var,na.rm=**TRUE) r<-apply(dados[-c(19,23,36,37)**,-1],2,range,na.rm=TRUE) diffr<-diff(r) iqr<-apply(dados[-c(19,23,36,**37),-1],2,function(x){** quantile(x,na.rm=TRUE)[4]-**quantile(x,na.rm=TRUE)[2]}) besq<-apply(dados[-c(19,23,36,**37),-1],2,function(x){**quantile(x, na.rm=TRUE)[2]})-1.5*iqr bdt<-apply(dados[-c(19,23,36,**37),-1],2,function(x){**quantile(x, na.rm=TRUE)[4]})+1.5*iqr outliers<-list() for(i in names(dados[-c(19,23,36,37),-**1])){ tmp<-dados[-c(19,23,36,37),i] outliers[[i]]<-tmp[tmp > bdt[i] | dados[-c(19,23,36,37),i] < besq[i]] } row.names(diffr) <- "Diferen?a do range" # Como o resultado do comando diff ? uma matriz, voc? precisa colocar o nome da linha antes de juntar todos os resultados rownames(porano)<-c("Mínimo","**Primeiro Quartil","Mediana","Média","**Terceiro Quartil","Máximo","NAs") todos_resultados_dados<-rbind(**porano,"Desvio padr?o"=desviopadrao, "Vari?ncia"=variancia, diffr, iqr,besq,bdt,outliers) todos_resultados_dados porano resultado: 2008 2009 2010 2011 2012 Mínimo 48 52 56 55.33 58 Primeiro Quartil 4.708149 4.198439 4.554801 5.255589 4.6888 Mediana 22.16667 17.62689 20.74621 27.62121 21.98485 Média 19 19 19 22 18 Terceiro Quartil 6 5 7 6 7 Máximo 43 44.5 41.5 44 41.5 NAs 67 64.5 69.5 68 69.5 Desvio padr?o Numeric,0 44 Numeric,0 43 Numeric,0 Vari?ncia NULL NULL NULL NULL NULL Diferen?a do range NULL NULL NULL NULL NULL iqr NULL NULL NULL NULL NULL besq NULL NULL NULL NULL NULL bdt NULL NULL NULL NULL NULL outliers NULL NULL NULL NULL NULL porquê NULL? Cumprimentos Ana Rocha
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-br<https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-**guia<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
participantes (2)
-
alanarocha@sapo.pt
-
Tito Conte