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
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.