使用时间滞后预测变量(独立变量)进行线性回归以进行预测

时间:2018-11-01 12:09:22

标签: r time-series linear-regression forecasting

我正在预测印度某个地理区域(阿萨姆邦和梅加拉亚邦细分)的月平均降水量。为此,我将月平均气温数据和月平均相对湿度数据(从NOAA网站上针对该地理区域的netCDF4文件中提取并进行空间平均)用作自变量(预测变量)。

出于预测目的,我想将线性回归建模为以降水为因变量,以“空气温度”和“相对湿度”数据为自变量,以使它们在回归中具有时滞效应

线性回归方程应类似于:

Please follow this link for the equation

在这里,“ Y”是降水,“ X”是气温,“ Z”是相对湿度。

“培训数据”示例如下:

   ID       Time Precipitation Air_Temperature Relative_Humidity
1   1 1948-01-01           105        20.31194          81.64137
2   2 1948-02-01           397        21.21052          80.20120
3   3 1948-03-01           594        22.14363          81.94274
4   4 1948-04-01          2653        20.79417          78.89908
5   5 1948-05-01          7058        20.43589          82.99959
6   6 1948-06-01          5328        18.10059          77.91983
7   7 1948-07-01          4882        16.63936          76.25758
8   8 1948-08-01          3979        16.56065          76.89210
9   9 1948-09-01          2625        16.95542          76.80116
10 10 1948-10-01          2578        17.13323          75.62411

“测试数据”的一部分如下:

        ID       Time Precipitation Air_Temperature Relative_Humidity
    1  663 2003-03-01           862        21.27210          79.77419
    2  664 2003-04-01          1812        20.44042          79.42500
    3  665 2003-05-01          1941        19.24267          79.57057
    4  666 2003-06-01          4981        18.53784          80.67292
    5  667 2003-07-01          4263        17.21581          79.97178
    6  668 2003-08-01          2436        16.88686          81.37097
    7  669 2003-09-01          2322        16.23134          77.63333
    8  670 2003-10-01          2220        17.40589          81.14516
    9  671 2003-11-01           131        19.01159          79.15000
    10 672 2003-12-01           241        20.86234          79.05847

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

根据您在评论中的澄清,这是使用lag中的dplyr函数产生滞后变量的多种方法之一(我还在此处添加新行以供以后预测):

df %>%
   add_row(ID = 11, Time = "1948-11-01") %>%
   mutate(Air_Temperature_lagged = dplyr::lag(Air_Temperature, 1),
          Relative_Humidity_lagged = dplyr::lag(Relative_Humidity, 1)) -> df.withlags

然后,您可以使用lm拟合简单的线性回归,以Precipitation作为因变量,并将其他两个变量的滞后版本用作预测变量:

precip.model <- lm(data = df.withlags, Precipitation ~ Air_Temperature_lagged + Relative_Humidity_lagged)

然后,您可以使用Air_Temperature函数将系数应用于Relative_Humiditypredict中的最新值,以预测1948年11月的降水。

predict(precip.model, newdata = df.withlags)
  1        2        3        4        5        6        7        8        9       10       11 
  NA 2929.566 3512.551 3236.421 3778.742 2586.012 3473.482 3615.884 3426.378 3534.965 3893.255 

模型的预测为3893.255

请注意,由于您的预测变量中没有更多信息,因此该模型仅允许您预测未来的某个时间段。