Байесовская регрессия для переменной отклика пропорций или показателей (0,1) в R
У меня есть переменная ответа в виде пропорций со значениями от 0 до 1, 0 и 1 не включены. Я хотел бы выполнить байесовскую логит-регрессию. Я использую пакет в R и следовал примеру в Байесовских обобщенных линейных моделях в R , опубликованном Джоном Старквезером, доктором философии. Трудность или путаница, которую я имею в виду, заключается в том, что с частотным подходом glm я мог бы выполнить бета-регрессию (и указать логит-связь). Но когда дело доходит до байесовского метода, я не уверен, как указать функцию связи для этих данных о пропорциях, особенно с использованием процедуры, представленной в
arm
package и как используется в упомянутой выше статье, касающейся функции. Адаптированный код, который я использую, выглядит следующим образом:
#install.packages("arm")
library(arm)
Model<-bayesglm(y ~x1 + I(x1^2) + x2 + x3 + x4 + x5 + x6
+ x7 + x8 + x9,family = gaussian, data=mydata,prior.mean=0, prior.scale=Inf, prior.df=Inf)
summary(Model)
Call:
bayesglm(formula = y ~x1 + I(x1^2) + x2 + x3 + x4 + x5 + x6
+ x7 + x8 + x9, family = gaussian, data = panel1_neg, prior.mean = 0,
prior.scale = Inf, prior.df = Inf)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.024267 -0.006407 -0.001379 0.006257 0.042012
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.046806 0.011057 4.233 5.16e-05 ***
x1 0.327205 0.084408 3.876 0.000191 ***
I(x1^2) -1.351503 0.395559 -3.417 0.000921 ***
x2 -0.333285 0.056133 -5.937 4.30e-08 ***
x3 0.074882 0.029916 2.503 0.013949 *
x4 0.012951 0.003231 4.009 0.000119 ***
x5 -0.053934 0.059021 -0.914 0.363042
x6 -0.082908 0.051511 -1.610 0.110690
x7 -0.019248 0.068604 -0.281 0.779623
x8 -0.012700 0.002549 -4.981 2.68e-06 ***
x9 0.006289 0.002575 2.442 0.016382 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.0001288981)
Null deviance: 0.032699 on 109 degrees of freedom
Residual deviance: 0.012761 on 99 degrees of freedom
AIC: -660.64
Number of Fisher Scoring iterations: 7
Итак, мой вопрос: как мне указать логит-ссылку в
Bayesglm
функция? Если бы переменная ответа была двоичной, я мог бы указать
family=binomial(link=logit)
.
Любая помощь высоко ценится.
1 ответ
Частотная/байесовская терминология слишком запутана. В основном вопрос заключается в том, как запустить биномиальную регрессию с
glm
(из
stats
) или же
bayesglm
(из
arm
)
Предположим, что наш набор данных таков: разные уровни успехов связаны с разными x и n = 10:
set.seed(111)
df = data.frame(success = c(rbinom(20,10,0.6),rbinom(20,10,0.6)),
x = rep(0:1,each=20))
df$n = 10
Рассчитываем пропорцию:
df$p = df$success / df$n
И вы регрессируете, используя веса:
glm(p ~ x,weights=n,family=binomial(link=logit),data=df)
Call: glm(formula = p ~ x, family = binomial, data = df, weights = n)
Coefficients:
(Intercept) x
0.6411 -0.2356
Degrees of Freedom: 39 Total (i.e. Null); 38 Residual
Null Deviance: 28.33
Residual Deviance: 27.04 AIC: 137.5
То же самое для байесглм:
bayesglm(p ~ x,weights=n,family=binomial(link=logit),data=df)
Call: bayesglm(formula = p ~ x, family = binomial(link = logit), data = df,
weights = n)
Coefficients:
(Intercept) x
0.6394 -0.2325
Degrees of Freedom: 39 Total (i.e. Null); 38 Residual
Null Deviance: 28.33
Residual Deviance: 27.04 AIC: 71.04
Также ознакомьтесь с принятым ответом на этот пост