OLSResults的f_pvalue属性背后的空假设是什么?这个docstring并不特别有用。
首先,我认为零假设是所有估计系数同时为零(包括常数项)。然而,我开始认为,被检验的假设是,除常数项外,所有估计参数同时为零(即b1 = b2 =.= bp = 0,不包括b0)。
例如,假设y是一个目标数组,而X是一个numpy特征矩阵(一个常量项和p特性)。
# Silly example
from statsmodels.api import OLS
m = OLS(endog=y, exog=X).fit()
# What is being tested here?
print(m.f_pvalue)有人知道什么是空假设吗?
发布于 2022-04-26 13:05:54
感谢@Josef把事情弄清楚了。根据文献资料
F-完全指定模型的统计量。 当采用非鲁棒协方差时,将模型的均方误差除以残差的均方误差。否则,使用类似Wald的二次型计算,以检验所有系数(不包括常数)是否为零。
为了证明事实是这样:
# Libraries
import numpy as np
import pandas as pd
from statsmodels.api import OLS
from sklearn.datasets import load_boston
# Load target
y = pd.DataFrame(load_boston()['target'], columns=['price'])
# Load features
X = pd.DataFrame(load_boston()['data'], columns=load_boston()['feature_names'])
# Add constant
X['CONST'] = 1
# One feature
m1 = OLS(endog=y, exog=X[['CONST','CRIM']]).fit()
print(f'm1 pvalue: {m1.f_pvalue}')
# Multiple features
m2 = OLS(endog=y, exog=X[['CONST','CRIM','AGE']]).fit()
print(f'm2 pvalue: {m2.f_pvalue}')
# Manually test H0: all coefficients are zero (excluding b0)
print('Manual F-test for m1', m1.f_test(r_matrix=np.matrix([[0,0],[0,1]])),
'Manual F-test for m2', m2.f_test(r_matrix=np.matrix([[0,0,0],[0,1,0],[0,0,1]])),
sep='\n')
# Output
"""
> m1 pvalue: 1.1739870821944483e-19
> m2 pvalue: 2.2015246345918656e-27
> Manual F-test for m1
> <F test: F=array([[89.48611476]]), p=1.1739870821945733e-19, df_denom=504, df_num=1>
> Manual F-test for m2
> <F test: F=array([[69.51929476]]), p=2.2015246345920063e-27, df_denom=503, > df_num=2>
"""所以是的,f_pvalue匹配手工输入空假设的p值.
https://stackoverflow.com/questions/72006654
复制相似问题