statsmodels——稳健线性回归中的权重
statsmodels -- weights in robust linear regression
我正在查看 statsmodels 中的稳健线性回归,但找不到指定此回归的 "weights" 的方法。例如,在最小二乘回归中,为每个观察值分配权重。类似于 WLS 在 statsmodels 中所做的。
或者有什么办法可以绕过它吗?
RLM 目前不允许用户指定权重。权重在内部用于实现重新加权的最小二乘拟合方法。
如果权重具有方差权重的解释以解释观察之间的不同方差,则重新调整数据(endog y 和 exog x)与 WLS 类比将产生加权参数估计。
WLS 在 whiten
方法中使用它来重新缩放 y 和 x
X = np.asarray(X)
if X.ndim == 1:
return X * np.sqrt(self.weights)
elif X.ndim == 2:
return np.sqrt(self.weights)[:, None]*X
我不确定是否所有可用的额外结果都适用于重新缩放的模型。
编辑 根据评论跟进
在 WLS 中,等价 W*( Y_est - Y )^2 = (sqrt(W)*Y_est - sqrt(W)*Y)^2 表示参数估计是与权重的解释无关。
在 RLM 中,我们有一个非线性 objective 函数 g((y - y_est) / sigma),一般情况下不等价
fw * g((y - y_est) / sigma) != g((y - y_est) * sw / sigma )
其中 fw 是频率权重,sw 是尺度或方差权重,sigma 是残差的估计尺度或标准差。 (一般找不到fw对应的sw。)
这意味着在 RLM 中我们不能使用数据的重新缩放来计算频率权重。
旁白:statsmodels目前的发展是向GLM添加不同的权重类别,以开发可以添加到其他模型的模式。目标是至少将 freq_weights、var_weights 和 prob_weights 作为模型的选项与 Stata 相似。
我正在查看 statsmodels 中的稳健线性回归,但找不到指定此回归的 "weights" 的方法。例如,在最小二乘回归中,为每个观察值分配权重。类似于 WLS 在 statsmodels 中所做的。
或者有什么办法可以绕过它吗?
RLM 目前不允许用户指定权重。权重在内部用于实现重新加权的最小二乘拟合方法。
如果权重具有方差权重的解释以解释观察之间的不同方差,则重新调整数据(endog y 和 exog x)与 WLS 类比将产生加权参数估计。
WLS 在 whiten
方法中使用它来重新缩放 y 和 x
X = np.asarray(X)
if X.ndim == 1:
return X * np.sqrt(self.weights)
elif X.ndim == 2:
return np.sqrt(self.weights)[:, None]*X
我不确定是否所有可用的额外结果都适用于重新缩放的模型。
编辑 根据评论跟进
在 WLS 中,等价 W*( Y_est - Y )^2 = (sqrt(W)*Y_est - sqrt(W)*Y)^2 表示参数估计是与权重的解释无关。
在 RLM 中,我们有一个非线性 objective 函数 g((y - y_est) / sigma),一般情况下不等价
fw * g((y - y_est) / sigma) != g((y - y_est) * sw / sigma )
其中 fw 是频率权重,sw 是尺度或方差权重,sigma 是残差的估计尺度或标准差。 (一般找不到fw对应的sw。)
这意味着在 RLM 中我们不能使用数据的重新缩放来计算频率权重。
旁白:statsmodels目前的发展是向GLM添加不同的权重类别,以开发可以添加到其他模型的模式。目标是至少将 freq_weights、var_weights 和 prob_weights 作为模型的选项与 Stata 相似。