我正在寻找一种在statsmodel的sklearn's LassoCV上使用Python mixed linear model的方法。
我知道MixedLM可以执行L1正则化,但是我想使用交叉验证来优化估计量和alpha值。
我也知道这个post:
但是作者仅使用交叉验证并将其应用于OLS回归。
假设我有一个小型数据集,其中包含有关不同学校学生的信息:
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
d = {'MathAch' : pd.Series([5, 10, 20, 9, 8, 17, 3, 22, 15, 5]),
'SES' : pd.Series([1.52, 0.5, 0.54, 0.67, 0.16, 1.45, 1, 2, 0.89, 0.9]),
'Sex' : pd.Series([1, 0, 1, 0, 0, 0, 1, 1, 0, 1]),
'School' : pd.Series([1, 1, 1, 1, 1, 2, 2, 2, 2, 2])}
df = pd.DataFrame(d)
具有statsmodels的混合线性模型如下所示:
md = smf.mixedlm("MathAch ~ SES + Sex", df, groups=df["School"], re_formula="~SES") # MathAch is the dependent variable, School is the grouping variable
free = sm.regression.mixed_linear_model.MixedLMParams.from_components(np.ones(md.k_fe), np.eye(md.k_re)) # I would like to have no covariance between the random coefficients
mdf = md.fit(reml=False, free=free)
print(mdf.summary())
是否可以将LassoCV应用于我的代码?
我是Python的初学者,因此一些帮助或替代解决方案都很棒!
谢谢!