Hola!
Muchas gracias por la ayuda, pero lo que quiero hacer es que yo se cual es
el outlier, es el numero 14478 puede ser un error de transcripcion o lo que
sea pero lo que me gustaria hacer seria que a traves de algun tipo de test
me dijera que esse es el outlier y poder borrarlo de la base de datos
porque no puedo borrarlo porque si; no se si me explico.
Y cuando hago la chi cuadrado me sale esto pero no es el numero que quiero
> chisq.out.test(as.numeric(time$TimeDiff))
chi-squared test for outlier
data: as.numeric(time$TimeDiff)
X-squared = 24.9399, p-value = 5.915e-07
alternative hypothesis: highest value 435 is an outlier
Entonces no se como podria hacer para poder borrarlo de forma logica.
Muchas gracias, un saludo
2014-07-11 18:23 GMT+00:00 Javier Villacampa González <
[email protected]>:
> Tu fichero tiene los decimales como puntos y no como comas como tu le
> indicas. Te dejo un ejemplo
>
>
> #---------------------------------------------------------------------------------------------------------------------
> setwd(dir="c:/Users/usuario/Desktop/")
> library(outliers)
> filename<-"timediff.csv"
> time<-read.csv(filename, sep=";",header=TRUE,dec=".") # Esto es lo que has
> de cambiar
> chisq.out.test(time$TimeDiff)
>
>
> # Ayuda adicional
> #---------------------------------------------------------------------
> # Si no supones normalidad
> #---------------------------------------------------------------------
> time.without.outs <- data.frame(row.names= 1:dim(time)[1], dif = time )
>
>
> x <- boxplot(time.without.outs$TimeDiff,range= 1.5) # Quita los outliers
> que se van más de 1.5 rangos itercuartilicios. Puedes poner otro criterio
> pero este es el habitual
>
> time.without.outs$out.rg <- F
> time.without.outs[ time.without.outs$TimeDiff %in% x$out,]$out.rg <- T #
> Localizamos los outliers con la condición elegida
>
> time.without.outs$TimeDiff.without.out.rg <- time.without.outs$TimeDiff
> time.without.outs[ time.without.outs$out.rg,]$TimeDiff.without.out.rg <-
> NA # Borramos los outliers
>
> #---------------------------------------------------------------------
> # Si supones normalidad bien lo puedes hacer asà también
> #---------------------------------------------------------------------
>
>
> time.without.outs$out.rg.norm <- F
> time.without.outs[ time.without.outs$TimeDiff %in% x$out,]$out.rg.norm <- T
> x <- abs(scale(time.without.outs$TimeDiff)) # Normalizamos la variable
>
> time.without.outs$out.rg.norm <- F
> time.without.outs[ x >= qnorm(0.995),]$out.rg.norm <- T # Quitmos los
> datos que estén alejados 99.5 % en la distro (suponiedo normalidad)
>
> time.without.outs$TimeDiff.without.out.norm <- time.without.outs$TimeDiff
> time.without.outs[
> time.without.outs$out.rg.norm,]$TimeDiff.without.out.norm <- NA
>
>
> #---------------------------------------------------------------------
> # Si quieres quitar ambos
> #---------------------------------------------------------------------
>
> time.without.outs$TimeDiff.without.out.norm.rg <-
> time.without.outs$TimeDiff
> time.without.outs[ time.without.outs$out.rg |
> time.without.outs$out.rg.norm,]$TimeDiff.without.out.norm.rg <- NA
>
> summary(time.without.outs)
>
> # Donde
>
> # TimeDiff.without.out.rg Son los datos sin outliers utilizando un
> criterio tÃpico cuando no se sabe la distribución de tus datos
> # TimeDiff.without.out.norm Son los datos sin outliers asumiendo la
> normalidad de tus datos
> qqnorm(time.without.outs$TimeDiff.without.out.rg);
> qqline(time.without.outs$TimeDiff.without.out.rg, col = 2, lwd = 2)
> qqnorm(time.without.outs$TimeDiff.without.out.norm);
> qqline(time.without.outs$TimeDiff.without.out.norm, col = 2, lwd =2)
>
> hist(time.without.outs$TimeDiff.without.out.rg)
> hist(time.without.outs$TimeDiff.without.out.norm)
> ks.test(x= time$TimeDiff, "pnorm", mean(time$TimeDiff), sd(time$TimeDiff))
> # A la vista de estos exploratorios yo no lo supondrÃa.
> # TimeDiff.without.out.norm.rg son los datos sin outliers según los dos
> criterios
>
> # De todas maneras tienes un valor que yo creo que has introducido mal
> max(time.without.outs$TimeDiff) # Este valor es claramente un error de
> transcripción de datos.
>
> --
>
>
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es