statsmodels 线性回归和 pandas df.corr() 函数之间的不同 p 值
different p value between statsmodels linear regression and pandas df.corr() function
我正在研究房价预测数据集。它有 13 个特征,我使用的是多元线性回归模型。当我检查特征和目标值的相关性时,它显示 df.corr()
方法和 Summary()
函数的奇怪结果。
对于少数特征,p 相关系数的值很低。但是,如果我在回归后使用 summary()
函数,这些特征具有不同的 p 值。具有最低相关系数值的特征没有最高的 p 值。或者这两个不同函数得到的相关系数和p值都没有similarity/correlation。可能出了什么问题?
相关系数
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 相关。这两个函数应该给出相似的 results.but 而没有发生。下面是结果的两个图像。
pvalues
CorelationCoeff
如果您从图像中观察到 2 个结果,则相关系数最低的特征没有高 p 值。
这里的问题是,当您检查成对的 Pearson 相关性时,您没有考虑所有其他变量的影响。因此,您不能指望 Pearson 与目标的相关性与回归模型中的 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 值。
因此,如您所见,与目标的成对相关性小并不一定意味着缺少 effect/small p 值。
我正在研究房价预测数据集。它有 13 个特征,我使用的是多元线性回归模型。当我检查特征和目标值的相关性时,它显示 df.corr()
方法和 Summary()
函数的奇怪结果。
对于少数特征,p 相关系数的值很低。但是,如果我在回归后使用 summary()
函数,这些特征具有不同的 p 值。具有最低相关系数值的特征没有最高的 p 值。或者这两个不同函数得到的相关系数和p值都没有similarity/correlation。可能出了什么问题?
相关系数
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 相关。这两个函数应该给出相似的 results.but 而没有发生。下面是结果的两个图像。
pvalues
CorelationCoeff
如果您从图像中观察到 2 个结果,则相关系数最低的特征没有高 p 值。
这里的问题是,当您检查成对的 Pearson 相关性时,您没有考虑所有其他变量的影响。因此,您不能指望 Pearson 与目标的相关性与回归模型中的 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 值。
因此,如您所见,与目标的成对相关性小并不一定意味着缺少 effect/small p 值。