R语言 如何强制线性模型的预测从与新数据相同的点开始

67up9zun  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(97)

我希望我的逻辑回归模型与预测变量从同一点开始。
数据:

df <- tibble(
  x = c(0:20, 0:20), 
  y = c(log(10:30 + 2), log(10:30 + 10)),
  init = c(rep(log(10 + 2), 21), rep(log(10 + 10), 21)),
  group = c(rep('A', 21), rep('B', 21))
)

型号:

lm_fit <- lm(y ~ log(x + 1) + init, data = df)

拟合数据的模型示例:

newdata <- df %>%
  filter(group == 'A') %>%
  mutate(pred_y = predict(lm_fit, newdata = newdata, type = 'response')) %>%
  pivot_longer(c(y, pred_y), names_to = 'pred_type', values_to = 'value')
    ggplot(aes(x, value, colour = pred_type)) +
    geom_point() +
    geom_line()

如何更改模型,使红线(模型)与蓝线(数据)的起始值相同?即x=0pred_y = y

erhoui1w

erhoui1w1#

使用init变量时,必须将其视为偏移(其系数将为1)并禁用截距(模型公式中的-1)。

lm_fit <- lm(y ~ log(x + 1) + offset(init) - 1, data = df)

在将模型公式改为log(y) ~ log(x + 1)之后,一种可能的方法是转换y变量,并将其在 x = 0中的新值用于offset(init)变量(实际上,我建议总是从 y 变量导出offset,而不是单独计算它)。

df <- df %>% 
  group_by(group) %>%
  mutate(y = log(y),
         init = y[x==0])

相关问题