Asignando más peso a observaciones más recientes en regresión

9

¿Cómo asigno más peso a las observaciones más recientes en R?

Supongo que esto es una pregunta o deseo común, pero me resulta difícil descubrir exactamente cómo implementar esto. He intentado buscar mucho para esto, pero no puedo encontrar un buen ejemplo práctico.

En mi ejemplo, tendría un gran conjunto de datos con el tiempo. Quiero decir aplicar algún tipo de ponderación exponencial de las filas de datos que son más recientes. Entonces, tendría algún tipo de función exponencial diciendo que las observaciones en 2015 son ___ más importantes para entrenar el modelo que las observaciones en 2012.

Las variables de mi conjunto de datos contienen una combinación de valores categóricos y numéricos y mi objetivo es un valor numérico, si eso es importante.

Me gustaría probar / probar esto usando modelos como GBM / Random Forest, idealmente en el paquete CARET.

pregunta-actualización

Agradezco la respuesta dada a continuación sobre cómo disminuir exponencialmente el peso por la distancia de fecha entre dos puntos.

Sin embargo, cuando se trata de entrenar este modelo en caret, ¿cómo influyen exactamente los pesos? El valor de peso en cada una de las filas de entrenamiento es la distancia entre algún punto en el futuro y cuándo ese punto ocurrió históricamente.

¿Las pesas entran en juego solo durante la predicción? Porque si entran en juego durante el entrenamiento, ¿eso no causaría todo tipo de problemas, ya que varios pliegues cruzados tendrían pesos variables, tratando de predecir algo que realmente podría tener en un momento anterior?

usuario3788557
fuente
3
Voto cerrado porque el interlocutor necesita aclarar los problemas estadísticos. No está claro para mí que GBN o RF sean apropiados aquí. Sugiriendo que esto se migre a CV.com
DWin
Okay. Agregaré un ejemplo pronto. Acabo de ver este tipo de preguntas en Internet, pero no hay ejemplos concretos de cómo aplicarlo / resolverlo.
user3788557

Respuestas:

5

¿Cómo asigno más peso a las observaciones más recientes en R?

Supongo que tiene una marca de tiempo asociada con cada observación. Puedes calcular una variable timeElapsed = modelingTime - observationTime. Ahora aplica una función exponencial simple como W=K*exp(-timeElapsed/T), donde Kes una constante de escala y Tes la constante de tiempo para la función de desintegración. Wfunciona como peso de caja.

Hasta donde sé , muchas funciones caretpermiten weightque se permita como parámetro, que es una columna de ponderaciones de casos que se proporcionará a la observación correspondiente (por lo tanto, tiene la misma longitud que #rows).

Ujjwal Kumar
fuente
1
La función en caret::traines weights.
timcdlucas
Gracias Ujjwal, pero ¿cuál es la metodología para determinar 'K' en tu ecuación? alguna directriz o mejores prácticas? Además, ¿qué quiere decir con el 'período de tiempo' para la función de descomposición?
user3788557
K es solo una constante de escala y no afectará mucho los resultados del modelo. Puede establecer algún valor para que el rango de valores de peso de la caja esté cerca del rango 0-1. Con respecto al "período de tiempo", también se denomina constante de tiempo para una función de disminución exponencial de primer orden O vida media. Puedes buscarlo en wikipedia.
Ujjwal Kumar
Por favor, vea mi actualización de mi publicación. ¿Funcionará correctamente durante el entrenamiento? ¿El modelo de entrenamiento tendrá un sesgo ya que los pesos solo se pueden aplicar cuando se usan contra el conjunto de prueba? Cuando el conjunto de entrenamiento se baraja aleatoriamente, podría ser malo si se usan pesos más altos para predecir los precios en el pasado o en un período de tiempo que no está cerca en el tiempo.
user3788557
Sin ponderaciones de casos, su entrenamiento modelo le daría la misma importancia a los datos antiguos y nuevos, pero con ponderaciones de casos propuestas, dará más importancia a los datos más nuevos, por lo que, en ese sentido, está sesgado hacia observaciones más nuevas, pero eso es que querías. No entiendo por qué "los pesos solo se pueden permitir para casos de prueba" . Además, ¿cómo se usarían los pesos más altos para los valores más antiguos cuando el conjunto de entrenamiento se baraja aleatoriamente? cuando modelingTime se mantiene igual para todos los casos de entrenamiento. Las ponderaciones de mayúsculas y minúsculas de PS no se aplican cuando solo se usa un modelo, solo se aplica al período de entrenamiento.
Ujjwal Kumar
0

Los datos (no el analista haciendo suposiciones - suposiciones) a menudo pueden sugerir la forma del esquema de ponderación. Esto se realiza a través de GLS donde los pesos apropiados para el modelo de mínimos cuadrados ponderados se obtienen de las diferencias estadísticamente significativas encontradas en la varianza del error. Eche un vistazo a la detección de cambios y valores atípicos por medio de ARIMA (procedimiento Tsay) y aquí http://docplayer.net/12080848-Outliers-level-shifts-and-variance-changes-in-time-series.html . Si desea publicar datos, hágalo aquí e intentaré ayudarlo aún más, ya que tengo acceso de rutina al software que podría iluminarlo.

Hay una versión R del software que estoy usando.

Puede consultar ¿Cómo incluir variables de control en un análisis de intervención con ARIMA? ya que tiene un ejemplo de cómo se identifican los pesos y se usan para estabilizar la varianza del error, por lo tanto, creer / descreer / descontar / ponderar / confiar efectivamente en ciertos valores anteriores.

IrishStat
fuente