我正在预测印度某个地理区域(阿萨姆邦和梅加拉亚邦细分)的月平均降水量。为此,我将月平均气温数据和月平均相对湿度数据(从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
任何帮助将不胜感激。谢谢!
答案 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_Humidity
和predict
中的最新值,以预测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
。
请注意,由于您的预测变量中没有更多信息,因此该模型仅允许您预测未来的某个时间段。