【问题标题】:How to incorporate weights into a likelihood function?如何将权重合并到似然函数中?
【发布时间】:2019-05-17 01:55:12
【问题描述】:

我想将权重合并到做svyglm 对权重所做的事情的可能性中。

根据Jeremy Mileselsewheresvyglm 函数使用权重来“衡量每个案例的重要性,以使它们具有代表性(彼此之间,...)”。

这是我的数据:

(dat <- data.frame(
  A = c(1, 1, 0, 0), B = c(1, 0, 1, 0),
  Pass = c(278, 100, 153, 79), Fail = c(743, 581, 1232, 1731), Weights= c(3, 1, 12, 3)
))

这是我的likelihood 函数:

ll <- function (b0, b1, b2, b3) {
  odds <- exp(b0) * (1 + b1 * dat$A + b2 * dat$B + b3 * dat$A * dat$B)
  -sum(dbinom(
    x = dat$Pass, size = rowSums(dat[, 3:4]),
    prob = odds / (1 + odds), log = TRUE))
}

【问题讨论】:

  • 我真的看不出调查权重之间的关系,我猜,只是加权最大似然。执行-sum(dat$Weights * dbinom(... 会更加重视权重较高的案例。有什么问题吗?
  • 我认为您的解决方案有效。看来这就是我要找的东西。让我问这个问题:在您的解决方案中加权的每个观察的可能性贡献是否?
  • 是的,我们可以这样理解。将 x_i = 的对数似然/贡献加倍,包括 x_i 两次。
  • 非常感谢@Julius Vainora。

标签: r regression mle


【解决方案1】:

正如您在参考答案中所说,不同的权重在不同的上下文中使用不同。在您当前的示例中,我并没有真正看到任何人群,而目标很明确:每个观察都具有指定的“重要性”。然后加权最大似然将简单地使用

ll <- function (b0, b1, b2, b3) {
  odds <- exp(b0) * (1 + b1 * dat$A + b2 * dat$B + b3 * dat$A * dat$B)
  -sum(dat$Weights * dbinom(
    x = dat$Pass, size = rowSums(dat[, 3:4]),
    prob = odds / (1 + odds), log = TRUE))
}

这确实可以解释为包括对样本 wi 次的第 i 次观察(当然,这种解释仅适用于整数权重,而该方法适用于任何权重):

【讨论】:

  • 太棒了!非常感谢@Julius Vainora。这正是我想要的。
猜你喜欢
  • 2020-06-09
  • 2021-06-15
  • 2020-12-08
  • 2022-08-11
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 2019-09-04
  • 2020-04-18
相关资源
最近更新 更多