我正在研究住房价格预测数据集。它具有13个功能,我正在使用多个线性回归模型。当我检查功能和目标值的相关性时,它显示了df.corr()
方法和Summary()
函数的奇怪结果。
对于少数特征,P相关系数的值很低。但是,如果我在回归后使用summary()
函数,则这些功能具有不同的p值。相关系数值最低的功能没有最高的P值。否则相关系数和P值没有相似性/相关性。可能出了什么问题?
相关系数
correlation_matrix = BostonHousing_df.corr().round(2)
对于p值
X=BostonHousing_df.iloc[:,:-1].values
y=BostonHousing_df.iloc[:,-1].values
X_opt = X1[:,[0,1,2,3,4,5,6,7,8,9,10,11,12,13]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()
作为dataframe.corr()方法默认情况下使用pearson corelation。
PVALUE
CoreLationCoeff
如果您观察到图像的2个结果,则具有最低的CORELATION系数的特征没有较高的P值。
这里的问题是,当您检查成对的皮尔森相关性时,您并没有考虑所有其他变量的效果。因此,您不能期望皮尔森与目标的相关性与回归模型中的p值之间存在直接关系。
这是一个极端的例子来说明这一点:
说我们有一个目标c
,该目标由两个功能a+b
的总和定义。说您有以下培训集:
a = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
b = [4, 3, 2, 1, 0, 6, 5, 4, 3, 2]
c = [5, 5, 5, 5, 5, 7, 7, 7, 7, 7]
请注意,即使a+b
完美地给您c
,如果您只检查a
和c
之间的相关性,您也将拥有0!
numpy.corrcoef(a, c)
> array([[1., 0.],
[0., 1.]])
但是,如果将这些数据插入线性回归估计器中,那么对于a
,您当然会获得极小的p值。
,如您所见,与目标的小相关性不一定意味着缺乏效果/小p值。