Hola Marta,
si observas cualquier artÃculo de psicologÃa esto es una práctica tÃpica.
Te digo psicologÃa porque creo que tus datos son de ese tipo. Tienes
bibiligrafÃa de artÃculos cientificos en las que se quitan valores
siguiendo los criterios que te he dicho solo has de buscar bibliografÃa del
campo en el que te mueces. Osea que nos quitarlos por que sÃ, aunque en
cada area de ciencia tienes una serie de criterios para acabar con los
ouliers. Yo personalmente me fio más de mi buena intuición(y validación)
que de un test. De todas maneras seguro que tienes un informe de como
recogiste los datos y puedes trazar el origen de este dato en concreto.
Creo que eso es mejor que cualquier test. De todas maneras a mi el test me
sale:
> 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)
chi-squared test for outlier
data: time$TimeDiff
X-squared = 73260.07, p-value < 2.2e-16
alternative hypothesis: highest value 14478.4 is an outlier
No se si te he sido de mucha ayuda.
Un saludo
2014-07-14 12:03 GMT+02:00 Marta valdes lopez <[email protected]>:
> 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