使用pandas statsmodels使用.summary()
函数时,OLS回归结果包括以下字段。
coef std err t P>|t| [0.025 0.975]
如何获得标准化系数(不包括截距),与SPSS中可实现的类似?
答案 0 :(得分:1)
我们可以将估计的params
转换为exog的标准偏差。 results.t_test(transformation)计算线性变换变量的参数表。
AFAIR,以下内容应产生β系数和相应的推论统计数据。
计算标准差,但将常数设置为1。
std = model.exog.std(0)
std[0] = 1
然后使用results.t_test并查看params_table。 np.diag(std)
创建了一个转换params
的对角矩阵。
tt = results.t_test(np.diag(std))
print(tt.summary()
tt.summary_frame()
答案 1 :(得分:0)
您只需要先使用z分布(即z得分)标准化原始DataFrame,然后执行线性回归即可。
假设您将数据框命名为df
,它具有自变量x1
,x2
和x3
,并具有因变量y
。考虑以下代码:
import pandas as pd
import numpy as np
from scipy import stats
import statsmodels.formula.api as smf
# standardizing dataframe
df_z = df.select_dtypes(include=[np.number]).dropna().apply(stats.zscore)
# fitting regression
formula = 'y ~ x1 + x2 + x3'
result = smf.ols(formula, data=df_z).fit()
# checking results
result.summary()
现在,coef
将向您显示标准化的(beta)系数,以便您可以比较它们对因变量的影响。
注意:
.dropna()
。否则,stats.zscore
将返回所有NaN
的列,如果它缺少任何值。.select_dtypes()
,但要确保选择的所有列都是数字。result.params
来返回它。通常,它将以科学符号的方式显示。您可以使用类似round(result.params, 5)
之类的符号对其进行四舍五入。