Re: [R-es] outliers (Marta valdes lopez)

2014-07-14 Por tema Marta valdes lopez
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 
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.gonza...@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 :
>>
>> 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.gonza...@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.ou

Re: [R-es] outliers (Marta valdes lopez)

2014-07-14 Por tema Marta valdes lopez
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.gonza...@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 :
>
> 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.gonza...@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.wit

Re: [R-es] outliers (Marta valdes lopez)

2014-07-14 Por tema Javier Villacampa González
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 :

> 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.gonza...@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)

Re: [R-es] outliers (Marta valdes lopez)

2014-07-14 Por tema Marta valdes lopez
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.gonza...@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]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es