¿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?
fuente
Respuestas:
¿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 comoW=K*exp(-timeElapsed/T)
, dondeK
es una constante de escala yT
es la constante de tiempo para la función de desintegración.W
funciona como peso de caja.Hasta donde sé , muchas funciones
caret
permitenweight
que 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).fuente
caret::train
esweights
.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.
fuente