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 <martavaldes85@gmail.com>:> 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 < > javier.villacampa.gonzalez@gmail.com>: > > 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]]
Hola, Si entiendo lo que quieres decirme, el problema es que hago lo que tu haces y me sale este error: Error in if (xor(((x[n] - mean(x)) < (mean(x) - x[1])), opposite)) { : missing value where TRUE/FALSE needed Entonces no se porque no me sale el test, muchas gracias por tu ayuda. Un saludo El 14 de julio de 2014, 12:31, Javier Villacampa González < javier.villacampa.gonzalez@gmail.com> escribió:> 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 <martavaldes85@gmail.com>: > > 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 < >> javier.villacampa.gonzalez@gmail.com>: >> >> 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]]
Hola de nuevo, Ya esta solucionado era cualquier error en el archivo que ya corregi. Muchas gracias, un saludo El 14 de julio de 2014, 16:40, Marta valdes lopez <martavaldes85@gmail.com> escribió:> Hola, > > Si entiendo lo que quieres decirme, el problema es que hago lo que tu > haces y me sale este error: > > Error in if (xor(((x[n] - mean(x)) < (mean(x) - x[1])), opposite)) { : > missing value where TRUE/FALSE needed > > Entonces no se porque no me sale el test, muchas gracias por tu ayuda. > > Un saludo > > > El 14 de julio de 2014, 12:31, Javier Villacampa González < > javier.villacampa.gonzalez@gmail.com> escribió: > > 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 <martavaldes85@gmail.com>: >> >> 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 < >>> javier.villacampa.gonzalez@gmail.com>: >>> >>> 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]]