如何在Python中计算线性回归中的效果检验

2024-03-29 02:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用statsmodels对熊猫数据集进行线性回归,包括一个分类变量(利手习惯;3个水平)和一个连续变量(年龄)作为预测因子。我正在寻找一种简单的方法来测试利手习惯、年龄及其相互作用的影响——也就是说,超出特定虚拟变量的影响。 我做以下工作:

res = smf.ols(formula="Score ~ C(Handedness, Sum) * center(Age)", data=myData).fit()
print(res3.params)

得到以下参数:

^{pr2}$

我想对我的模型中的所有影响进行f检验:用手习惯、年龄及其相互作用。 我能够使用f峎u测试方法分别执行每项测试:

HandednessEffect = np.array(([ 0, 1, 0, 0, 0, 0 ],[0, 0, 1, 0, 0, 0]))
AgeEffect = np.array(([ 0, 0, 0, 1, 0, 0 ]))
HandednessXAgeEffect = np.array(([ 0, 0, 0, 0, 1, 0 ],[0, 0, 0, 0, 0, 1]))
print("Effect Tests:")
print("Handedness\t\t", (res.f_test(HandednessEffect )))
print("Age\t\t", (res.f_test(AgeEffect)))
print("Handedness* Age\t", (res.f_test(HandednessXAgeEffect )))

然后得到:

Effect Tests:
Handedness       <F test: F=array([[ 1.14330425]]), p=0.3248142242736258, df_denom=68, df_num=2>
Age              <F test: F=array([[ 0.14232477]]), p=0.7071555851484095, df_denom=68, df_num=1>
Handedness * Age     <F test: F=array([[ 0.03297983]]), p=0.9675735457292447, df_denom=68, df_num=2>

我还尝试使用wald_test_terms()方法组合术语,但如果我理解正确,它会根据名称组合术语,因此如果我这样做:

print(res.wald_test_terms(skip_single=True, combine_terms=['Handedness','Age',':center(Age)']))

例如,第一个术语将所有术语与其中的“利手”结合在一起:即两个范畴术语(这是我想要的),还有交互术语(我想作为一个单独的术语)。在

有没有自动的方法来计算一个模型的所有效果测试,而不需要分别指定每个测试?例如,在JMP软件中,这是回归分析的默认输出的一部分。有什么想法吗?在


Tags: 方法testdfagenpresarraynum