对统计模型的混合线性模型使用Lasso交叉验证吗?

时间:2019-01-11 11:05:34

标签: python scikit-learn cross-validation statsmodels mixed-models

我正在寻找一种在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的初学者,因此一些帮助或替代解决方案都很棒!

谢谢!

0 个答案:

没有答案