【发布时间】:2021-10-09 02:14:21
【问题描述】:
似乎有两种方法可以让 OLS 适合 Python。 Sklearn 一和 Statsmodel 一。我偏爱 statsmodel 之一,因为它通过 summary() 函数给出了系数的误差。但是,我想使用 sklearn 中的 TransformedTargetRegressor 来记录我的目标。似乎我需要在 statsmodel 中的拟合系数误差和能够在 statsmodel 中转换我的目标之间做出选择。有没有一种好方法可以在任一系统中同时完成这两项工作?
在统计模型中会这样完成
import statsmodels.api as sm
X = sm.add_constant(X)
ols = sm.OLS(y, X)
ols_result = ols.fit()
print(ols_result.summary())
返回拟合系数及其误差
对于 Sklearn,您可以使用 TransformedTargetRegressor
from sklearn.compose import TransformedTargetRegressor
from sklearn.linear_model import LinearRegression
regr = TransformedTargetRegressor(regressor=LinearRegression(),func=np.log1p, inverse_func=np.expm1)
regr.fit(X, y)
print('Coefficients: \n', regr.coef_)
但是如果不自己计算系数,就无法获得系数的误差。有没有两全其美的好方法?
编辑
我在这里找到了我关心的特殊情况的一个很好的例子
【问题讨论】:
-
@PaulH 我尽我所能帮助更好地说明问题。这是一个功能问题,所以我不确定如何最好地说明它。
-
您从
TransformedTargetRegression获得了哪些您无法通过自己转换结果获得的功能? -
@coffeinjunky ols_result.summary() 如果我手动转换,则以转换后的目标单位给出结果。这就是我得到系数错误的方式。我需要它们在非转换单元中。如果有一种方法可以转换它,甚至只是转换系数及其误差,那么这将是一个值得赏金的解决方案。
-
澄清一下,您对系数及其标准误差感兴趣,因为它们在对转换结果进行回归拟合后与未转换结果相关。您说您通常会从
TransformedRegressor获得此信息,但标准错误除外。到目前为止这是正确的吗?如果是这样,为了清楚起见,您能否添加您将用来从TransformedTargetRegressor获得所需系数的确切命令?
标签: python linear-regression transform