gpt4 book ai didi

r - 从逻辑回归手动计算 logLik

转载 作者:行者123 更新时间:2023-12-04 17:57:01 24 4
gpt4 key购买 nike

我运行了一个混合模型逻辑回归,使用名为 GMMAT 的 R 包来调整我的模型与遗传关系矩阵。 (功能: glmmkin() )。

我的模型输出包括(取自用户手册):

  • theta : 离散参数估计 [1] 和方差分量参数估计 [2]
  • coefficients :固定效应参数估计(包括截距)。
  • linear.predictors :线性预测器。
  • fitted.values :原始尺度上的拟合平均值。
  • Y :长度等于最终工作向量的样本大小的向量。
  • P :维度等于样本大小的投影矩阵。
  • residuals : 原始尺度上的残差。不按色散参数重新缩放。
  • cov :固定效应的协方差矩阵(包括截距)。
  • converged :收敛的逻辑指标。

  • 我试图获得对数似然以计算解释的方差。我的第一 react 是拆开 logLik.glm函数以“手动”计算这个,我在尝试计算 AIC 时陷入困境。我使用了来自 here 的答案.

    我使用 stats::glm() 对逻辑回归进行了完整性检查。哪里 model1$aic是 4013.232,但使用我找到的 Stack Overflow 答案,我获得了 30613.03。

    我的问题是——有谁知道如何使用我上面在 R 中列出的输出手动从逻辑回归计算对数似然?

    最佳答案

    这里没有统计洞察力,只是我从 glm.fit 中看到的解决方案.这仅适用于您在拟合模型时未指定权重的情况(或者如果您指定了权重,则需要在模型对象中包含这些权重)

    get_logLik <- function(s_model, family = binomial(logit)) {
    n <- length(s_model$y)
    wt <- rep(1, n) # or s_model$prior_weights if field exists
    deviance <- sum(family$dev.resids(s_model$y, s_model$fitted.values, wt))
    mod_rank <- sum(!is.na(s_model$coefficients)) # or s_model$rank if field exists

    aic <- family$aic(s_model$y, rep(1, n), s_model$fitted.values, wt, deviance) + 2 * mod_rank
    log_lik <- mod_rank - aic/2
    return(log_lik)
    }

    例如...
    model <- glm(vs ~ mpg, mtcars, family = binomial(logit))
    logLik(model)
    # 'log Lik.' -12.76667 (df=2)

    sparse_model <- model[c("theta", "coefficients", "linear.predictors", "fitted.values", "y", "P", "residuals", "cov", "converged")]
    get_logLik(sparse_model)
    #[1] -12.76667

    关于r - 从逻辑回归手动计算 logLik,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627615/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com