python中具有两个以上不相关随机效应斜率的混合效应模型
我有多级数据,并且由于平行的电势而希望拟合Python中的混合效应模型。
无法在“ statsmodel'库中
公式
0 + log_volume ~ log_price:brand_channel_prod_cat + month:brand_channel_prod_cat +
log_price:sku + (1 | sku_brand_channel_prod_cat) + (0 + peak_vol_2019 |
sku_brand_channel_prod_cat) + (0 + peak_vol_2020 | sku_brand_channel_prod_cat) +
(0 + peak_vol_2021 | sku_brand_channel_prod_cat) + (0 + peak_vol_2022 |
sku_brand_channel_prod_cat)
编译
Random effects:
Groups Name Variance Std.Dev.
sku_brand_channel_prod_cat (Intercept) 0.08997 0.3000
sku_brand_channel_prod_cat.1 peak_vol_2019 3.93006 1.9824
sku_brand_channel_prod_cat.2 peak_vol_2020 7.57763 2.7527
sku_brand_channel_prod_cat.3 peak_vol_2021 5.87570 2.4240
sku_brand_channel_prod_cat.4 peak_vol_2022 1.11555 1.0562
Residual 0.89843 0.9479
Number of obs: 517, groups: sku_brand_channel_prod_cat, 6
Fixed effects:
Estimate Std. Error t value
(Intercept) -3.834200 3.797148 -1.010
log_price:brand_channel_prod_catblack & decker:e-commerce:drills 0.439247 0.325191 1.351
log_price:brand_channel_prod_catblack & decker:moderno:drills 0.641359 0.332692 1.928
log_price:brand_channel_prod_catblack & decker:tradicional:drills 0.634145 0.330630 1.918
brand_channel_prod_catblack & decker:e-commerce:drills:month2 -0.074913 0.469290 -0.160
brand_channel_prod_catblack & decker:moderno:drills:month2 -0.004766 0.358254 -0.013
brand_channel_prod_catblack & decker:tradicional:drills:month2 -0.397637 0.315299 -1.261
brand_channel_prod_catblack & decker:e-commerce:drills:month3 0.212537 0.457992 0.464
brand_channel_prod_catblack & decker:moderno:drills:month3 0.187813 0.357612 0.525
brand_channel_prod_catblack & decker:tradicional:drills:month3 0.426231 0.307184 1.388
brand_channel_prod_catblack & decker:moderno:drills:month4 0.324525 0.492356 0.659
brand_channel_prod_catblack & decker:tradicional:drills:month4 0.025436 0.426429 0.060
brand_channel_prod_catblack & decker:e-commerce:drills:month5 0.052820 0.594114 0.089
brand_channel_prod_catblack & decker:moderno:drills:month5 0.181913 0.484666 0.375
brand_channel_prod_catblack & decker:tradicional:drills:month5 0.202124 0.408993 0.494
brand_channel_prod_catblack & decker:e-commerce:drills:month6 0.294128 0.490044 0.600
brand_channel_prod_catblack & decker:moderno:drills:month6 0.314776 0.392402 0.802
brand_channel_prod_catblack & decker:tradicional:drills:month6 0.259283 0.337046 0.769
brand_channel_prod_catblack & decker:e-commerce:drills:month7 0.227434 0.457583 0.497
brand_channel_prod_catblack & decker:moderno:drills:month7 -0.042801 0.379362 -0.113
brand_channel_prod_catblack & decker:tradicional:drills:month7 0.183542 0.317175 0.579
brand_channel_prod_catblack & decker:e-commerce:drills:month8 0.249940 0.433196 0.577
brand_channel_prod_catblack & decker:moderno:drills:month8 0.035887 0.339384 0.106
brand_channel_prod_catblack & decker:tradicional:drills:month8 0.294459 0.298873 0.985
brand_channel_prod_catblack & decker:e-commerce:drills:month9 0.364934 0.468421 0.779
brand_channel_prod_catblack & decker:moderno:drills:month9 0.010126 0.357589 0.028
brand_channel_prod_catblack & decker:tradicional:drills:month9 -0.047276 0.296702 -0.159
brand_channel_prod_catblack & decker:e-commerce:drills:month10 -0.063301 0.460232 -0.138
brand_channel_prod_catblack & decker:moderno:drills:month10 -0.355297 0.377147 -0.942
brand_channel_prod_catblack & decker:tradicional:drills:month10 -0.363707 0.314704 -1.156
brand_channel_prod_catblack & decker:e-commerce:drills:month11 -0.309140 0.435547 -0.710
brand_channel_prod_catblack & decker:moderno:drills:month11 0.049716 0.354219 0.140
brand_channel_prod_catblack & decker:tradicional:drills:month11 0.441693 0.294458 1.500
brand_channel_prod_catblack & decker:e-commerce:drills:month12 0.394615 0.458916 0.860
brand_channel_prod_catblack & decker:moderno:drills:month12 0.271237 0.359959 0.754
brand_channel_prod_catblack & decker:tradicional:drills:month12 0.050778 0.315813 0.161
log_price:skuhd565k-b3 -0.047458 0.024728 -1.919
但是我 。
固定效应变量的数量不会是恒定的(不同数据的SKU不同),并且与
md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"], re_formula="~Time")
free = sm.regression.mixed_linear_model.MixedLMParams.from_components(
np.ones(2), np.eye(2)
)
mdf = md.fit(free=free, method=["lbfgs"])
当前在Python中尝试的
md = smf.mixedlm("log_volume ~ log_price:brand_channel_prod_cat+month:brand_channel_prod_cat+log_price:sku+year
df1,groups='sku_brand_channel_prod_cat',
re_formula="0+peak_vol_2019+peak_vol_2020+peak_vol_2021+peak_vol_2022").fit()
品牌渠道相同,我认为这在RI猜测中等同于此,我不会想
log_volume ~ log_price:brand_channel_prod_cat + month:brand_channel_prod_cat +
log_price:sku + (1 + peak_vol_2019 + peak_vol_2020 + peak_vol_2021 + peak_vol_2022 |
sku_brand_channel_prod_cat)
I have multi-level data and want to fit a mixed-effect model in python due to parallelization potential.
But I am not able to compile the formula in 'statsmodel' library
For example in R, it is
0 + log_volume ~ log_price:brand_channel_prod_cat + month:brand_channel_prod_cat +
log_price:sku + (1 | sku_brand_channel_prod_cat) + (0 + peak_vol_2019 |
sku_brand_channel_prod_cat) + (0 + peak_vol_2020 | sku_brand_channel_prod_cat) +
(0 + peak_vol_2021 | sku_brand_channel_prod_cat) + (0 + peak_vol_2022 |
sku_brand_channel_prod_cat)
which outputs
Random effects:
Groups Name Variance Std.Dev.
sku_brand_channel_prod_cat (Intercept) 0.08997 0.3000
sku_brand_channel_prod_cat.1 peak_vol_2019 3.93006 1.9824
sku_brand_channel_prod_cat.2 peak_vol_2020 7.57763 2.7527
sku_brand_channel_prod_cat.3 peak_vol_2021 5.87570 2.4240
sku_brand_channel_prod_cat.4 peak_vol_2022 1.11555 1.0562
Residual 0.89843 0.9479
Number of obs: 517, groups: sku_brand_channel_prod_cat, 6
Fixed effects:
Estimate Std. Error t value
(Intercept) -3.834200 3.797148 -1.010
log_price:brand_channel_prod_catblack & decker:e-commerce:drills 0.439247 0.325191 1.351
log_price:brand_channel_prod_catblack & decker:moderno:drills 0.641359 0.332692 1.928
log_price:brand_channel_prod_catblack & decker:tradicional:drills 0.634145 0.330630 1.918
brand_channel_prod_catblack & decker:e-commerce:drills:month2 -0.074913 0.469290 -0.160
brand_channel_prod_catblack & decker:moderno:drills:month2 -0.004766 0.358254 -0.013
brand_channel_prod_catblack & decker:tradicional:drills:month2 -0.397637 0.315299 -1.261
brand_channel_prod_catblack & decker:e-commerce:drills:month3 0.212537 0.457992 0.464
brand_channel_prod_catblack & decker:moderno:drills:month3 0.187813 0.357612 0.525
brand_channel_prod_catblack & decker:tradicional:drills:month3 0.426231 0.307184 1.388
brand_channel_prod_catblack & decker:moderno:drills:month4 0.324525 0.492356 0.659
brand_channel_prod_catblack & decker:tradicional:drills:month4 0.025436 0.426429 0.060
brand_channel_prod_catblack & decker:e-commerce:drills:month5 0.052820 0.594114 0.089
brand_channel_prod_catblack & decker:moderno:drills:month5 0.181913 0.484666 0.375
brand_channel_prod_catblack & decker:tradicional:drills:month5 0.202124 0.408993 0.494
brand_channel_prod_catblack & decker:e-commerce:drills:month6 0.294128 0.490044 0.600
brand_channel_prod_catblack & decker:moderno:drills:month6 0.314776 0.392402 0.802
brand_channel_prod_catblack & decker:tradicional:drills:month6 0.259283 0.337046 0.769
brand_channel_prod_catblack & decker:e-commerce:drills:month7 0.227434 0.457583 0.497
brand_channel_prod_catblack & decker:moderno:drills:month7 -0.042801 0.379362 -0.113
brand_channel_prod_catblack & decker:tradicional:drills:month7 0.183542 0.317175 0.579
brand_channel_prod_catblack & decker:e-commerce:drills:month8 0.249940 0.433196 0.577
brand_channel_prod_catblack & decker:moderno:drills:month8 0.035887 0.339384 0.106
brand_channel_prod_catblack & decker:tradicional:drills:month8 0.294459 0.298873 0.985
brand_channel_prod_catblack & decker:e-commerce:drills:month9 0.364934 0.468421 0.779
brand_channel_prod_catblack & decker:moderno:drills:month9 0.010126 0.357589 0.028
brand_channel_prod_catblack & decker:tradicional:drills:month9 -0.047276 0.296702 -0.159
brand_channel_prod_catblack & decker:e-commerce:drills:month10 -0.063301 0.460232 -0.138
brand_channel_prod_catblack & decker:moderno:drills:month10 -0.355297 0.377147 -0.942
brand_channel_prod_catblack & decker:tradicional:drills:month10 -0.363707 0.314704 -1.156
brand_channel_prod_catblack & decker:e-commerce:drills:month11 -0.309140 0.435547 -0.710
brand_channel_prod_catblack & decker:moderno:drills:month11 0.049716 0.354219 0.140
brand_channel_prod_catblack & decker:tradicional:drills:month11 0.441693 0.294458 1.500
brand_channel_prod_catblack & decker:e-commerce:drills:month12 0.394615 0.458916 0.860
brand_channel_prod_catblack & decker:moderno:drills:month12 0.271237 0.359959 0.754
brand_channel_prod_catblack & decker:tradicional:drills:month12 0.050778 0.315813 0.161
log_price:skuhd565k-b3 -0.047458 0.024728 -1.919
I tried following this example
but in here, I don't know how to define the MixedLMParams.from_components
because of the interaction terms log_price:sku
the number of fixed effect variables will not be constant (different no. of SKU for different data) and same with brand channel
md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"], re_formula="~Time")
free = sm.regression.mixed_linear_model.MixedLMParams.from_components(
np.ones(2), np.eye(2)
)
mdf = md.fit(free=free, method=["lbfgs"])
Currently trying it in python
md = smf.mixedlm("log_volume ~ log_price:brand_channel_prod_cat+month:brand_channel_prod_cat+log_price:sku+year
df1,groups='sku_brand_channel_prod_cat',
re_formula="0+peak_vol_2019+peak_vol_2020+peak_vol_2021+peak_vol_2022").fit()
which I think is equivalent to this in R I guess, which I don't want
log_volume ~ log_price:brand_channel_prod_cat + month:brand_channel_prod_cat +
log_price:sku + (1 + peak_vol_2019 + peak_vol_2020 + peak_vol_2021 + peak_vol_2022 |
sku_brand_channel_prod_cat)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要适合具有无关随机效果的模型,您需要将
cov_re
mixchlmparams.from_components
的参数设置为身份矩阵。由于您有5个随机效果(4个斜率和截距),因此应该是np.eye(5)
,您应该在中使用
,不是1 + ...
re_formula0 + ...
To fit a model with uncorrelated random effects, you need to set the
cov_re
parameter ofMixedLMParams.from_components
to the identity matrix. Since you have 5 random effects (4 slopes and the intercepts), this should benp.eye(5)
and you should use1 + ...
inre_formula
, not0 + ...