[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