微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中仅对某些模型变量执行部分F测试

如何解决如何在python中仅对某些模型变量执行部分F测试

我想在 python 中构建一个具有 65 个变量的回归模型。 然后,我只想对 python 中的 2 个选定变量执行部分 F 测试。

在偏 F 检验中,H0 将是两个变量的两个 Beta(模型中所选变量的系数)等于 0 的假设。 H1 将是 Beta 值中至少有一个不等于 0 的假设。

我到处搜索,但没有找到我的问题的答案。 我很乐意为您提供帮助。

解决方法

有关详细信息,您可以查看help page for f test on statsmodels results

例如你的数据是这样的(我只使用了 5 个变量):

import numpy as np
import pandas as pd
import statsmodels.api as sm

np.random.seed(999)

data = pd.DataFrame(np.random.uniform(0,1,(50,6)),columns=['x1','x2','x3','x4','x5','y'])

我们可以拟合回归,结果如下:

results = sm.OLS(endog= data['y'],exog=sm.add_constant(data.iloc[:,:5])).fit()
results.summary()

    coef    std err t   P>|t|   [0.025  0.975]
const   0.7432  0.201   3.700   0.001   0.338   1.148
x1  -0.0345 0.147   -0.235  0.816   -0.331  0.262
x2  -0.1758 0.151   -1.165  0.250   -0.480  0.128
x3  -0.1472 0.150   -0.982  0.331   -0.449  0.155
x4  -0.2735 0.144   -1.905  0.063   -0.563  0.016
x5  0.1143  0.135   0.845   0.403   -0.158  0.387

建立假设,在这种情况下 x3 和 x4 为零,然后执行测试:

hypotheses = '(x3 = 0),(x4 = 0)'
f_test = results.f_test(hypotheses)
print(f_test)

<F test: F=array([[2.64119819]]),p=0.08255414803527926,df_denom=44,df_num=2>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。