Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Statsmodels Python使用较少的一个预测器预测线性回归_Python_Regression_Statsmodels_Predict - Fatal编程技术网

Statsmodels Python使用较少的一个预测器预测线性回归

Statsmodels Python使用较少的一个预测器预测线性回归,python,regression,statsmodels,predict,Python,Regression,Statsmodels,Predict,我在一年的数据集中训练了一个线性回归模型,其中包含20个预测因子。下面是x20,它是一个数组列表,每个数组都是要输入线性回归的预测值。y是我拟合的观测值,模型是得到的线性回归模型。在培训期间选择观察值和预测值(除最后一天(24小时)外,我将对其进行验证或预测): 我想在我的验证日使用这一模型,使用所有20个预测值,然后仅使用19个预测值,看看当使用较少的预测值时,技能有多大的差异。我尝试将predictor20设置为x19中的一个零数组,您将在下面看到,但这似乎给了我奇怪的结果: #######

我在一年的数据集中训练了一个线性回归模型,其中包含20个预测因子。下面是x20,它是一个数组列表,每个数组都是要输入线性回归的预测值。y是我拟合的观测值,模型是得到的线性回归模型。在培训期间选择观察值和预测值(除最后一天(24小时)外,我将对其进行验证或预测):

我想在我的验证日使用这一模型,使用所有20个预测值,然后仅使用19个预测值,看看当使用较少的预测值时,技能有多大的差异。我尝试将predictor20设置为x19中的一个零数组,您将在下面看到,但这似乎给了我奇怪的结果:

##################predict with regression model##################
x20=[predictor1[-(num_verifydays)*24:],predictor2[-(num_verifydays)*24:],
predictor3[-(num_verifydays)*24:],predictor4[-(num_verifydays)*24:],
predictor5[-(num_verifydays)*24:],predictor6[-(num_verifydays)*24:],
predictor7[-(num_verifydays)*24:],predictor8[-(num_verifydays)*24:],
predictor9[-(num_verifydays)*24:],predictor10[-(num_verifydays)*24:],
predictor11[-(num_verifydays)*24:],predictor12[-(num_verifydays)*24:],
predictor13[-(num_verifydays)*24:],predictor14[-(num_verifydays)*24:],
predictor15[-(num_verifydays)*24:],predictor16[-(num_verifydays)*24:],
predictor17[-(num_verifydays)*24:],predictor18[-(num_verifydays)*24:],
predictor19[-(num_verifydays)*24:],predictor20[-(num_verifydays)*24:]]

x19=[predictor1[-(num_verifydays)*24:],predictor2[-(num_verifydays)*24:],
predictor3[-(num_verifydays)*24:],predictor4[-(num_verifydays)*24:],
predictor5[-(num_verifydays)*24:],predictor6[-(num_verifydays)*24:],
predictor7[-(num_verifydays)*24:],predictor8[-(num_verifydays)*24:],
predictor9[-(num_verifydays)*24:],predictor10[-(num_verifydays)*24:],
predictor11[-(num_verifydays)*24:],predictor12[-(num_verifydays)*24:],
predictor13[-(num_verifydays)*24:],predictor14[-(num_verifydays)*24:],
predictor15[-(num_verifydays)*24:],predictor16[-(num_verifydays)*24:],
predictor17[-(num_verifydays)*24:],predictor18[-(num_verifydays)*24:],
predictor19[-(num_verifydays)*24:],np.zeros(num_verifydays*24)]

x20 = np.asarray(x20).T.tolist()
x19 = np.asarray(x19).T.tolist()

results20 = model.predict(x20)
results19 = model.predict(x19)

你应该拟合两个不同的模型,一个有19个外生变量,另一个有20个。这在统计上比在19个变量集上测试20个变量的模型更可靠,因为拟合系数会有所不同

model19 = sm.OLS(y,x19, missing='drop').fit()
model20 = sm.OLS(y,x20, missing='drop').fit()
你的数据频率是多少?使用一个1天(n=1)的测试数据集并不能让您了解变量重要性的真实情况

观察该变量重要性的其他方法是观察两个模型之间增加或损失的增量R平方


也考虑检查<代码> SkEXEX/COD>的功能。< /P>我的数据是每小时一次。我对模型进行了364天的训练,然后通过预测1天(第365天)来测试我的代码,我将在以后使用更长的训练期和验证期。基本上,我有一个独立于此的筛选回归代码,它从一个非常大的潜在预测值列表中选择,并根据R平方调整值选择最佳的20个。所以我使用这20个预测值,然后去掉最后一个。我就这样试试看!谢谢以每小时一次的频率,那么选择样本就更有意义了。

model19 = sm.OLS(y,x19, missing='drop').fit()
model20 = sm.OLS(y,x20, missing='drop').fit()