[R-br] construção de um objecto para calcular os outliers
Tito Conte
tito.conte em gmail.com
Sexta Maio 17 15:42:05 BRT 2013
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 em 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 em 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130517/e77ade38/attachment.html>
Mais detalhes sobre a lista de discussão R-br