[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