[R-es] Mann-Whitney con datos temporales

Javier Martínez-López javi.martinez.lopez en gmail.com
Mie Mar 30 16:03:17 CEST 2016


En nuestro caso son series de zonas experimentales en Almería y Madrid
y pese a que no se cumple la independencia ni de las diferencias ni de
los residuos de las series suavizadas, como comentaba en el último
correo, sin embargo entiendo, como dice Carlos, que aunque estemos
sobreestimando los grados de libertad, el test no es del todo
inapropiado, al menos como algo orientativo. Pasa como en el ejemplo
que pone Carlos del aeropuerto y Colmenar, donde al aplicar el
runs.test (del paquete randtests) a las curvas y a las diferencias se
ve que están autocorrelacionadas. También he calculado el RMSE para
ver las diferencias entre curvas, que nos da una idea de su
disimilitud, quizá eso sea lo mejor. Gracias de nuevo y saludos,
Javier

2016-03-30 9:24 GMT+02:00 José Trujillo Carmona <trujillo en unex.es>:
> Ruego a los miembros de la lista disculpas por mi torpeza y el desajuste
> de los mensajes.
>
> Suelo dar "contestar" a los mensajes que contesto y en esta lista tengo
> que acordarme de pinchar en "contestar a la lista".
>
> Envié mi última contestación solo a Carlos y el me ha contestado
> avisando del error de procedimiento y explicando mejor bajo que
> situación muy plausible la diferencia sí eliminaría la autocorrelación.
>
> Creo que no cabe objeción a su consideración actual, si el efecto
> temporal es exactamente el mismo, si no está desplazado en el tiempo ni
> en intensidad (siempre 4 grados y la diferencia es en el mismo tiempo)
> efectivamente la diferencia eliminaría la autocorrelación.
>
> Ya digo en anterior mensaje que la solución para sabe en qué caso
> estamos es fácil: se aplica la diferencia y se contrasta la independencia.
>
> Saludos.
>
>
> El 30/03/16 a las 01:07, Carlos J. Gil Bellosta escribió:
>> Hola, ¿qué tal?
>>
>> Me has escrito solo a mí. No sé si querías mandar el mensaje a la
>> lista o no.
>>
>> En cualquier caso, estamos de acuerdo. Bajo tus hipótesis, no tengo
>> nada que objetar.
>>
>> Yo tenía en mente otra estructura para el problema: la del que dice
>> "en Colmenar [siempre] hace 4 grados menos que en Madrid". Es decir,
>> que si la temperatura de Madrid es de 12 grados, en Colmenar estará
>> haciendo alrededor de 8. De otra manera, T_c = T_m - N(4, sigma).
>>
>> No sé cómo de lejos estarán los sensores del tipo que ha escrito la
>> pregunta, pero _mi_ estructura probabilística puede justificarse en
>> algunos casos. Para Madrid y Colmenar, por ejemplo. He bajado las
>> temperaturas de las últimas 24 horas en Madrid (Barajas) y Colmenar
>> <http://www.aemet.es/es/eltiempo/observacion/ultimosdatos?k=mad&l=3191E&w=0&datos=det&x=h24&f=temperatura>
>> (en el problema original también había una serie de 24 medidas) y mira:
>>
>> aeropuerto <-
>> read.csv("/home/carlos/Downloads/ultimosdatos_3129_datos-horarios.csv", skip
>> = 2, fileEncoding = "latin1")
>> aeropuerto <- aeropuerto[,2]
>>
>> colmenar <-
>> read.csv("/home/carlos/Downloads/ultimosdatos_3191E_datos-horarios.csv",
>> skip = 2, fileEncoding = "latin1")
>> colmenar <- colmenar[,2]
>>
>> temperaturas <-
>> structure(list(aeropuerto = c(10.9, 12.7, 14.9, 15.8, 17.5, 18.5,
>> 18.8, 18.4, 17.9, 17.4, 16.1, 14.9, 13.6, 12.8, 11.5, 10.5, 9.9,
>> 9.8, 9.8, 9.7, 9.4, 8.8, 9.9, 11), colmenar = c(8.4, 9.4, 10,
>> 11.2, 12.5, 14.3, 14.1, 14.3, 13.5, 12.9, 12.2, 11.4, 10.3, 8.4,
>> 7.3, 7, 7.1, 6.6, 6.4, 6.3, 6.2, 5.9, 5.7, 6.2)), .Names = c("aeropuerto",
>> "colmenar"), row.names = c(NA, -24L), class = "data.frame")
>>
>> plot(aeropuerto, ylim = c(min(colmenar), max(aeropuerto)), type = "l")
>> lines(colmenar, col = "red")
>>
>> Y si tomas diferencias verás que no parecen seguir ningún tipo de
>> patrón temporal.
>>
>> Ahora bien, ¿puedo hacer un t-test? Casi seguro que no se justifica
>> del todo por el hecho de que sobreestimo los grados de libertad
>> (piensa que podría tener tantos como quisiera tomando, por ejemplo,
>> medidas de temperatura cada nanosegundo). Pero no sería una solución
>> "tremendamente mala". Incluso podría ponerme en el lado conservador de
>> infraestimar el número de grados de libertad (i.e., usar una t de
>> Student con un par de grados de libertad y aún así encontrar
>> diferencias significativas).
>>
>> La otra alternativa sería crear un modelo que ajuste la temperatura en
>> función de la hora y la ubicación (p.e., usando GAM) y viendo si mi
>> coeficiente de la ubicación es significativamente distinto de cero. De
>> nuevo, todo lo anterior, bajo _mis_ hipótesis. Que seguro que no se
>> cumplen si las ubicaciones son Madrid y Santander.
>>
>> Ahora bien, no sabemos cuáles (las tuyas o las mías) son más creíbles
>> en el caso que da lugar a la pregunta. ¡No nos lo han dicho!
>>
>> Un saludo,
>>
>> Carlos J. Gil Bellosta
>> http://www.datanalytics.com
>>
>>
>>
>>
>> El 29 de marzo de 2016, 17:33, José Trujillo Carmona
>> <trujillo en unex.es> escribió:
>>
>>     No estoy de acuerdo con Carlos.
>>
>>     Si la estructura temporal viniese dada por un modelo determinista,
>>     como si el tiempo fuese una variable extrínseca, y con la misma
>>     función y los mismos parámetros, Carlos tendría razón.
>>
>>     Pero si la estructura temporal es de naturaleza estocástica, como
>>     un modelo ARIMA por ejemplo, entonces no es cierto que las
>>     diferencias eliminen la estructura.
>>
>>     Ejemplo al canto. Me ciño al modelo MA(1) donde es más fácil de
>>     probar. Todo modelo ARIMA se puede expresar como un MA(inf) así
>>     que lo que digo es generalizable.
>>
>>     En el modelo MA(1) la estructura de las observaciones es:
>>
>>     X(t) = m1 + e(t) + q e(t-1)
>>
>>     Donde m1 es la media de la serie (en un residuo de un modelo,
>>     normalmente es cero) e(1), e(2), ... e(t) son ruido blanco.
>>
>>     Una segunda serie con la misma estructura (coeficiente) q vendría
>>     dada por:
>>
>>     Y(t) = m2 + f(t) + q f(t-1)
>>
>>     Donde f(1), f(2), ... f(t) son igualmente ruido blanco incorrelado
>>     con el anterior.
>>
>>     Las diferencias son:
>>
>>     X(t) = m1 - m2 + e(t) - f(t) + q (e(t-1)  - f(t-1)) = mD + g(t) +
>>     q g(t-1)
>>
>>     Donde evidentemente MD = m1 -m2
>>     y g(t) = e(t) - f(t) es también ruido blanco.
>>
>>     Como se puede ver las diferencias guardan la misma estructura que
>>     las series originales.
>>
>>     Y tampoco la diferencia eliminaría la estructura si ésta fuese por
>>     ejemplo una sinusoide algo desfasada, en la que ocurriría algo
>>     similar al modelo ARIMA. Incluso si fuesen dos sinusoides en fase
>>     pero con distinta amplitud la estructura temporal se mantendría.
>>     Creo que es fácil de comprobar, no me voy a extender aquí. Un
>>     pequeño gráfico que se verá solo con fuentes anchura constante:
>>
>>     X ^"-._.-"^"-._
>>
>>     Y "-._.-"^"-._.
>>
>>     D=X-Y
>>     D ----....----.
>>
>>
>>     En el caso que nos ocupa, asumir que dos lugares muy alejados no
>>     solo tienen el mismo comportamiento temporal, sino que se trata de
>>     dos sinusoides en fase y con la misma amplitud (único caso en el
>>     que desaparece la estructura temporal mediante la diferencia) me
>>     parece poco probable.
>>
>>     De todos modos una vez hallada la diferencia se puede probar si
>>     sonase la flauta.
>>
>>     Saludos.
>>
>>
>>     El 29/03/16 a las 14:08, Carlos J. Gil Bellosta escribió:
>>>     Hola, ¿qué tal?
>>>
>>>     Estoy de acuerdo en todo menos en una cosa: que si las series están
>>>     autocorrelaccionadas (que lo estarán casi seguro), las diferencias también
>>>     lo estarán (necesariamente). Porque la primera cosa que se me ocurre (y no
>>>     me parece descabellada) es que si el efecto de la ubicación es aditivo, es
>>>     decir, si las temperaturas son
>>>
>>>     temp(t) + a1 + e1(t) para el sitio 1
>>>     temp(t) + a2 + e2(t) para el sitio 2
>>>
>>>     al tomar las diferencias hora a hora desaparecería el efecto de la serie
>>>     temporal subyacente, independientemente de su estructura y la prueba
>>>     pareada lo sería sobre la diferencia entre a1 y a2. Y la prueba por parejas
>>>     (de horas) tendría sentido.
>>>
>>>     Se puede comprobar (incluso a ojo; o más bien, primero y fundamentalmente a
>>>     ojo) si las diferencias tienen algún tipo de estructura temporal; en este
>>>     caso, quedaría invalidado todo lo dicho. Por supuesto.
>>>
>>>     Eso sí, sigue existiendo el problema de si las diferencias se deben a las
>>>     ubicaciones o a los sensores.
>>>
>>>     Salud,
>>>
>>>     Carlos J. Gil Bellosta
>>>     http://www.datanalytics.com
>>>
>>>     El 29 de marzo de 2016, 12:15, José Trujillo Carmona<trujillo en unex.es> <mailto:trujillo en unex.es>
>>>     escribió:
>>>
>>>>     En mi modesta opinión el problema planteado no es con las réplicas.
>>>>
>>>>     Efectivamente el problema de las réplicas existe. Al haber un único sensor
>>>>     en cada sitio no podrás saber si las diferencias las crea el sitio o el
>>>>     sensor. Para mí la solución, si fuese factible, sería intercambiar sensores
>>>>     un tiempo.
>>>>
>>>>     Pero en todo caso el problema planteado creo que es comparar los dos
>>>>     conjuntos de datos, con la salvedad de que las diferencias pueden ser
>>>>     debidas al sitio o al sensor. Este problema topa con el problema principal
>>>>     de la falta de independencia entre observaciones.
>>>>
>>>>     El test de Mann-Whitney-Wilcoxon, como los tests paramétricos
>>>>     convencionales, incluyen la suposición de que se está trabajando con una
>>>>     muestra obtenida mediante muestreo aleatorio simple, o lo que es lo mismo
>>>>     que los sucesivos valores encontrados son independientes entre sí. De hecho
>>>>     el calculo de la distribución de probabilidad del estadístico de contraste
>>>>     depende fuertemente de esta suposición.
>>>>
>>>>     La solución que propone Carlos (tomar diferencias en datos apareados) no
>>>>     resuelve para nada el problema: si las series están autocorrelacionadas,
>>>>     las diferencias también lo estarán.
>>>>
>>>>     En métodos paramétricos la solución es eliminar las componentes de
>>>>     autocorrelación hasta conseguir que la serie sea ruido blanco. Las
>>>>     soluciones no paramétricas suele ir en la misma dirección; aunque no creo
>>>>     que esté indicada la estimación de un modelo ARIMA (paramétrico). Ahora
>>>>     mismo no tengo tiempo de buscar las soluciones concretas, pero yo iría en
>>>>     la siguiente dirección:
>>>>
>>>>     1º Comprobar si efectivamente la serie está autocorrelacionada mediante
>>>>     algún test tipo test de Wald-Wolfowitz (ver en el paquete randtests). Si no
>>>>     lo estuviese la utilización directa de Mann-Whitney no tendría ningún
>>>>     problema.
>>>>
>>>>     2º Eliminar la autocorrelación mediante procedimientos de suavizado que
>>>>     por no necesitar la estimación de parámetros son "free distribution" como
>>>>     los de Suavizado Exponencial de Brown o los más complejos de Holt o incluso
>>>>     Holt-Winter.
>>>>
>>>>     Con los residuos de la serie suavizada (o alisada) hasta que las
>>>>     observaciones sean independientes entre sí, utilizar el test de
>>>>     Mann-Whitney.
>>>>
>>>>     Saludos.
>>>>
>>>>
>>>>
>>>>     El 29/03/16 a las 10:05, Carlos J. Gil Bellosta escribió:
>>>>
>>>>>     Hola, ¿qué tal?
>>>>>
>>>>>     En el peor de los casos, tendrías que comparar parejas de temperaturas
>>>>>     (por
>>>>>     hora). Es decir, con paired = T. Aún así, como dices, tendrías el problema
>>>>>     de la correlación entre medidas.
>>>>>
>>>>>     En este caso, como en casi todos, lo ideal es plantear un modelo similar a
>>>>>
>>>>>     temp ~ temp(h) + sitio + error
>>>>>
>>>>>     y ver si el coeficiente de sitio es o no cero. El problema particular de
>>>>>     este ejemplo es que temp(h) (un modelo para la temperatura en función de
>>>>>     la
>>>>>     hora) es una función no lineal. Igual podrías probar con los GAM.
>>>>>
>>>>>     Un saludo,
>>>>>
>>>>>     Carlos J. Gil Bellosta
>>>>>     http://www.datanalytics.com
>>>>>
>>>>>
>>>>>     El 28 de marzo de 2016, 16:56, Javier Martínez-López <
>>>>>     javi.martinez.lopez en gmail.com
>>>>>     <mailto:javi.martinez.lopez en gmail.com>> escribió:
>>>>>
>>>>>     Hola a tod en s,
>>>>>>     queremos hacer una comparación entre dos lugares muy alejados entre sí
>>>>>>     en relación a la temperatura de cada sitio usando medias horarias de
>>>>>>     un período determinado. Sólo hay medidas de un sensor en cada sitio y
>>>>>>     queremos saber si las diferencias son significativas o no entre
>>>>>>     sitios/curvas. Hemos usado un test de Mann–Whitney U con la función
>>>>>>     wilcox.test (paired=F) ya que los valores no son normales (n = 24; 24h
>>>>>>     en base a medias minutales). ¿Creéis que es correcto o estaríamos
>>>>>>     incumpliendo alguna asunción del test al ser datos temporales y/o no
>>>>>>     tener réplicas de los sensores?
>>>>>>
>>>>>>     Muchas gracias y saludos,
>>>>>>
>>>>>>     Javier
>>>>>>
>>>>>>     _______________________________________________
>>>>>>     R-help-es mailing list
>>>>>>     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>>>>>>     https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>>>
>>>>>              [[alternative HTML version deleted]]
>>>>>
>>>>>     _______________________________________________
>>>>>     R-help-es mailing list
>>>>>     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>>>>>     https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>>
>>>      [[alternative HTML version deleted]]
>>>
>>>     _______________________________________________
>>>     R-help-es mailing list
>>>     R-help-es en r-project.org <mailto:R-help-es en r-project.org>
>>>     https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es