响应为比例时的逻辑回归(使用 JAGS)

Posted

技术标签:

【中文标题】响应为比例时的逻辑回归(使用 JAGS)【英文标题】:Logistic regression when response is a proportion (using JAGS) 【发布时间】:2015-07-10 17:40:56 【问题描述】:

我正在尝试在 JAGS 中拟合逻辑回归模型,但我有 (# success y, # attempt n) 形式的数据,而不是二元变量。在 R 中,可以通过使用带有“权重”参数的 glm(y/n ~) 将模型拟合到诸如此类的数据,但我不确定如何在 JAGS 中拟合它。

这是一个简单的例子,我希望能解决我想问的问题。请注意,我使用的是 rjags 包。感谢您的帮助!

y <- rbinom(10, 500, 0.2)
n <- sample(500:600, 10)
p <- y/n
x <- sample(0:100, 10) # some covariate

data <- data.frame(y, n, p, x)

model <- "model
# Specify likelihood
for(i in 1:10)
    y[i] ~ dbin(p[i], n[i])
    logit(p[i]) <- b0 + b1*x


# Specify priors
b0 ~ dnorm(0, 0.0001)
b1 ~ dnorm(0, 0.0001)
"

【问题讨论】:

您的模型用引号括起来。我不熟悉 RJags,但这对我来说似乎不正确。 @Phil,BUGS/JAGS 模型有时会以这种方式指定(然后需要将它们写入临时文件) 这正是为什么我认为我会标记它而不是深入研究并编辑它!很高兴您找到了解决方案。 【参考方案1】:

您根本不需要在数据集中计算p。让它成为模型中的逻辑节点。我更喜欢R2jags接口,它允许你以R函数的形式指定BUGS模型...

jagsdata <- data.frame(y=rbinom(10, 500, 0.2),
                   n=sample(500:600, 10),
                   x=sample(0:100, 10))
model <- function() 
    ## Specify likelihood
    for(i in 1:10)
        y[i] ~ dbin(p[i], n[i])
        logit(p[i]) <- b0 + b1*x[i]
    
    ## Specify priors
    b0 ~ dnorm(0, 0.0001)
    b1 ~ dnorm(0, 0.0001)

现在运行它:

library("R2jags") 
jags(model.file=model,data=jagsdata,
     parameters.to.save=c("b0","b1"))

【讨论】:

以上是关于响应为比例时的逻辑回归(使用 JAGS)的主要内容,如果未能解决你的问题,请参考以下文章

R语言 逻辑回归

R语言回归分析(regression)常见算法:简单线性回归多项式回归多元线性回归多水平回归多输出回归逻辑回归泊松回归cox比例风险回归时间序列分析非线性回归非参数回归稳健回归等

R语言回归分析(regression)常见算法:简单线性回归多项式回归多元线性回归多水平回归多输出回归逻辑回归泊松回归cox比例风险回归时间序列分析非线性回归非参数回归稳健回归等

使用 GridSearchCV 进行逻辑回归时的精度计算警告

predict_proba() 预测单个值时的逻辑回归

6.逻辑归回