Байесовская регрессия для переменной отклика пропорций или показателей (0,1) в R

У меня есть переменная ответа в виде пропорций со значениями от 0 до 1, 0 и 1 не включены. Я хотел бы выполнить байесовскую логит-регрессию. Я использую пакет arm в R и следовал примеру в байесовских обобщенных линейных моделях. в R, опубликованном Джоном Старквезером, доктором философии. Трудность или путаница, которую я имею в виду, заключается в том, что с частотным подходом glm я мог бы выполнить бета-регрессию (и указать логит-связь). Но когда дело доходит до байесовского glm, я не уверен, как указать функцию связи для этих данных о пропорциях, особенно с использованием процедуры, предоставленной в пакете arm и используемой в цитируемой выше статье, касающейся функции Bayesglm. Адаптированный код, который я использую, выглядит следующим образом:

#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).

Любая помощь высоко ценится.


person Lomnewton    schedule 02.02.2021    source источник


Ответы (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

Также ознакомьтесь с принятым ответом

person StupidWolf    schedule 04.02.2021
comment
Привет @StupidWolf, спасибо за ваше предложение. Но я не уверен, решит ли это мою проблему. Я не использую байесовскую логит-модель для биномиальной распределенной зависимой переменной. Моя зависимая переменная — это переменная rates, вычисляемая, например, как a/b , где данные о a и b недоступны. Поэтому я не уверен, что в этом случае будет представлять собой weights и как я буду его использовать. Насколько я понимаю, такие переменные ставок являются бета-распределенными. Короче говоря, я ищу способ указать, что семейство будет бета-версией, а link будет logit. - person Lomnewton; 06.02.2021