python 中每个预测变量的调整 R 方
Adjusted R square for each predictor variable in python
我有一个包含多列的 pandas 数据框。我需要执行多元线性回归。在这样做之前,我想分析每个自变量相对于因变量的 R、R2、调整后的 R2 和 p 值。
对于 R 和 R2 我没问题,因为我可以计算 R 矩阵和 select 仅因变量,然后查看它与所有自变量之间的 R 系数。然后我可以将这些值平方以获得 R2。
我的问题是如何对调整后的 R2 和 p 值做同样的事情
最后我想要得到的是这样的东西:
Variable R R2 ADJUSTED_R2 p_value
A 0.4193 0.1758 ...
B 0.2620 0.0686 ...
C 0.2535 0.0643 ...
所有的值都是关于因变量的,假设是 Y。
以下内容不会为您提供所有答案,但可以帮助您使用 python、pandas 和统计模型进行回归分析。
给定这样的数据框...
# Imports
import pandas as pd
import numpy as np
import itertools
# A datafrane with random numbers
np.random.seed(123)
rows = 12
listVars= ['y','x1', 'x2', 'x3']
rng = pd.date_range('1/1/2017', periods=rows, freq='D')
df_1 = pd.DataFrame(np.random.randint(100,150,size=(rows, len(listVars))), columns=listVars)
df_1 = df_1.set_index(rng)
print(df_1)
...您可以使用 statsmodels 库并更改以下代码段中的 result = model.rsquared
部分来获得任何回归结果:
x = df_1['x1']
x = sm.add_constant(x)
model = sm.OLS(df_1['y'], x).fit()
result = model.rsquared
print(result)
现在你有 r-squared。使用 model.pvalues
作为 p-value。并使用 dir(model)
仔细查看其他模型结果(输出中的内容比您在下面看到的要多):
现在,这应该会让您获得想要的结果。
要获得变量/列的所有组合所需的结果,问题和答案 应该会让你走得很远。
编辑: 您可以使用 model.summary()
仔细查看一些常见的回归结果。将它与 dir(model)
一起使用,您可以看到并非所有回归结果都可用 pvalues 使用 model.pvalues
的相同方式。例如,要获得 Durbin-Watson,您必须使用 durbinwatson = sm.stats.stattools.durbin_watson(model.fittedvalues, axis=0)
。
This post 已获得有关此问题的更多信息。
我有一个包含多列的 pandas 数据框。我需要执行多元线性回归。在这样做之前,我想分析每个自变量相对于因变量的 R、R2、调整后的 R2 和 p 值。 对于 R 和 R2 我没问题,因为我可以计算 R 矩阵和 select 仅因变量,然后查看它与所有自变量之间的 R 系数。然后我可以将这些值平方以获得 R2。 我的问题是如何对调整后的 R2 和 p 值做同样的事情 最后我想要得到的是这样的东西:
Variable R R2 ADJUSTED_R2 p_value
A 0.4193 0.1758 ...
B 0.2620 0.0686 ...
C 0.2535 0.0643 ...
所有的值都是关于因变量的,假设是 Y。
以下内容不会为您提供所有答案,但可以帮助您使用 python、pandas 和统计模型进行回归分析。
给定这样的数据框...
# Imports
import pandas as pd
import numpy as np
import itertools
# A datafrane with random numbers
np.random.seed(123)
rows = 12
listVars= ['y','x1', 'x2', 'x3']
rng = pd.date_range('1/1/2017', periods=rows, freq='D')
df_1 = pd.DataFrame(np.random.randint(100,150,size=(rows, len(listVars))), columns=listVars)
df_1 = df_1.set_index(rng)
print(df_1)
...您可以使用 statsmodels 库并更改以下代码段中的 result = model.rsquared
部分来获得任何回归结果:
x = df_1['x1']
x = sm.add_constant(x)
model = sm.OLS(df_1['y'], x).fit()
result = model.rsquared
print(result)
现在你有 r-squared。使用 model.pvalues
作为 p-value。并使用 dir(model)
仔细查看其他模型结果(输出中的内容比您在下面看到的要多):
现在,这应该会让您获得想要的结果。
要获得变量/列的所有组合所需的结果,问题和答案
编辑: 您可以使用 model.summary()
仔细查看一些常见的回归结果。将它与 dir(model)
一起使用,您可以看到并非所有回归结果都可用 pvalues 使用 model.pvalues
的相同方式。例如,要获得 Durbin-Watson,您必须使用 durbinwatson = sm.stats.stattools.durbin_watson(model.fittedvalues, axis=0)
。
This post 已获得有关此问题的更多信息。