【发布时间】:2022-11-29 10:44:26
【问题描述】:
我正在使用 lmer 模型 (https://fhernanb.github.io/libro_modelos_mixtos/pac-lme4.html) 来模拟不同国家不同产品的价格弹性。在使用历史数据训练模型后,有时其中一些产品的弹性是正的(根据定义它应该是负的或者仅仅是由于业务限制)。所以我需要手动调整一些系数,只有那些没有意义的系数。我的模型是:
model_str = """
log(units)~
log(price_usd) + (log(price_usd)|sku/country)
"""
model = lmerTest.lmer(model_str, data = df)
在这个问题Replace lmer coefficients in R 中解决了同样的问题,但在这种情况下我使用的是 rpy2。所以,我想知道如何在使用 rpy2 时更改 lmer 模型的系数。
为了用 R 改变系数:
library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
summary(fm1)$coef
# Estimate Std. Error t value
#(Intercept) 251.40510 6.823773 36.842535
#Days 10.46729 1.545958 6.770744
fm1@beta[names(fixef(fm1)) == "Days"] <- 0
summary(fm1)$coef
# Estimate Std. Error t value
#(Intercept) 251.4051 6.823773 36.84253
#Days 0.0000 1.545958 0.00000
【问题讨论】:
-
如果您还在寻找这个,这是为了演示目的还是为了重新分析目的?
-
@kesh 抱歉,但我不确定我是否理解您的评论。我需要一个能够根据某个国家/地区的产品价格预测单位的模型。所以我不想有任何具有正价格弹性的产品。
-
如果您只是想修改报告的输出数字,最简单的方法是将
summary(fm1)$coefcoef数据框转换为 Pandas 数据框,然后修改并打印它。 -
我明白,但事实并非如此。我需要修改模型对象来预测。
-
知道了。就我而言,这是一个糟糕的词选择(“重新分析”),但这就是我的意思(也许“后分析”可能是一个更好的术语?)让我看一下。
标签: r statistics linear-regression lme4 rpy2