向统计模型(或Patsy)添加系数的正则化]]

问题描述 投票:0回答:1

鉴于我具有以下patsy公式,

'y ~ a + b + c'

并将其传递给statsmodels.ols,如何在回归系数中添加正则项?

在这种情况下,我希望创建自己的惩罚函数,而不仅仅是使用ridge,套索或elasticnet回归。

这是一个可重现的示例,其数据与我的问题相似:

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

a = np.clip(np.random.normal(loc=60, scale=40, size=(100)), 0, 100)
b = np.clip(np.random.normal(loc=40, scale=40, size=(100)), 0, 100)
c = np.clip(np.random.normal(loc=20, scale=20, size=(100)), 0, 100)

y = (
    32 * (a + 8 * np.random.random(a.shape))
    + 21 * (b + 5 * np.random.random(b.shape))
    + 36 * (c + 5 * np.random.random(c.shape))
) + (50 * np.random.random(a.shape))

data = pd.DataFrame(
    data=np.array([a, b, c, y]).T,
    columns=['a', 'b', 'c', 'y']
)

formula = 'y ~ a + b + c'

mod = smf.ols(formula=formula, data=data,)

鉴于我有以下patsy公式'y〜a + b + c'并将其传递给statsmodels.ols,如何在回归系数中添加正则项?在这种情况下,我想创建我的...

python pandas regression statsmodels patsy
1个回答
0
投票

OLS依靠线性代数计算来计算参数估计,因此无法直接处理需要非线性优化的扩展。

© www.soinside.com 2019 - 2024. All rights reserved.