我运行了混合模型逻辑回归,使用称为glmmkin()
的R包(函数:theta
)使用遗传关系矩阵调整我的模型。
我的模型输出包括(取自用户手册):
coefficients
:色散参数估计[1]和方差分量参数估计[2] linear.predictors
:固定效果参数估计值(包括截距)。fitted.values
:线性预测因子。Y
:在原始比例上拟合平均值。P
:一个长度等于最终工作向量的样本大小的向量。residuals
:尺寸等于样本大小的投影矩阵。cov
:原始比例的残差。不要通过色散参数重新缩放。converged
:固定效果的协方差矩阵(包括截距)。logLik.glm
:收敛的逻辑指标。我正在尝试获取对数似然,以便计算解释的方差。我的第一直觉是拆开stats::glm()
函数以便“手动”计算这个并且我一直试图计算AIC。我使用了here的答案。
我使用model1$aic
进行逻辑回归运算进行了一次完整性检查,其中{{1}}为4013.232但是使用我发现的Stack Overflow回答,我获得了30613.03。
我的问题是 - 是否有人知道如何使用我在R中列出的输出手动从逻辑回归计算对数似然?
答案 0 :(得分:1)
这里没有统计学意见,只是我从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