我使用下面的代码测试线性度,但是,状态模型认为我的模型不是线性的。输入:
import numpy as np
import statsmodels.api as sm
from statsmodels.stats.diagnostic import linear_reset
x = np.random.randn(100)
y = np.random.randn(100)
regression = sm.OLS(y, x).fit_regularized()
linear_reset(regression, power = 2, test_type = "fitted")给出错误:
TypeError: result must come from a linear regression model你知道我做错了什么吗?
发布于 2022-08-26 13:57:46
linear_reset需要一个RegressionResults对象作为第一个参数,而fit_regularized()方法以行regression = sm.OLS(y, x).fit_regularized()返回的对象是一个RegularizedResultsWrapper。
如果要使用linear_reset测试,则应该通过调用.fit()方法使用非正则OLS模型,这样返回的对象就是RegressionResultsWrapper,可以传递给linear_reset。
import numpy as np
import statsmodels.api as sm
from statsmodels.stats.diagnostic import linear_reset
x = np.random.randn(100)
y = np.random.randn(100)
regression = sm.OLS(y, x)
result = regression.fit()
linear_reset(result, power = 2, test_type = "fitted")这个错误是有意义的,因为一个是试图测试正则化模型的非线性,而函数则是一个非正则模型。
特别是,linear_reset检验假设给定的模型是一个非正则的最小二乘模型,并试图证明x与y之间关系的非线性。
如果将此检验应用于正则化模型,则上述假设不再成立,且测试结果毫无意义;例如,它可以报告一个缺失的非线性,而这可能是由正则化因子引起的,使参数的值接近于0。
https://stackoverflow.com/questions/73501475
复制相似问题