[R-es] Mann-Whitney con datos temporales

José Trujillo Carmona trujillo en unex.es
Mie Mar 30 09:24:53 CEST 2016


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]]



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