关于算法:R语言使用Metropolis-Hasting抽样算法进行逻辑回归

4次阅读

共计 2755 个字符,预计需要花费 7 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=6761

原文出处:拓端数据部落公众号

在逻辑回归中,咱们将二元因变量 Y\_i 回归到协变量 X\_i 上。上面的代码应用 Metropolis 采样来摸索 beta\_1 和 beta\_2 的后验 Yi 到协变量 Xi。

定义 expit 和分对数链接函数

logit<-function(x){log(x/(1-x))} 此函数计算 beta\_1,beta\_2 的联结后验。它返回后验的对数以取得数值稳定性。(β1,β2)(β1,β2)。它返回后验的对数取得数值稳定性。log_post<-function(Y,X,beta){prob1  <- expit(beta\[1\] + beta\[2\]*X)
like+prior}

这是 MCMC 的次要性能.can.sd 是候选标准偏差。

Bayes.logistic<-function(y,X,
                         n.samples=10000,
                         can.sd=0.1){keep.beta     <- matrix(0,n.samples,2)
     keep.beta\[1,\] <- beta

     acc   <- att <- rep(0,2)
 
    for(i in 2:n.samples){for(j in 1:2){att\[j\] <- att\[j\] + 1

      # 抽取候选:

       canbeta    <- beta
       canbeta\[j\] <- rnorm(1,beta\[j\],can.sd)
       canlp      <- log_post(Y,X,canbeta)

      # 计算承受率:

       R <- exp(canlp-curlp)  
       U <- runif(1)                          
       if(U<R){acc\[j\] <- acc\[j\]+1
       }
     }
     keep.beta\[i,\]<-beta

   }
   # 返回 beta 的后验样本和 Metropolis 的承受率


list(beta=keep.beta,acc.rate=acc/att)}

生成模仿数据

 set.seed(2008)
 n         <- 100
 X         <- rnorm(n)
  true.p    <- expit(true.beta\[1\]+true.beta\[2\]*X)
 Y         <- rbinom(n,1,true.p)

拟合模型

 burn      <- 10000
 n.samples <- 50000
  fit  <- Bayes.logistic(Y,X,n.samples=n.samples,can.sd=0.5)
 tock <- proc.time()\[3\]

 tock-tick
## elapsed 
##    3.72

后果

  abline(true.beta\[1\],0,lwd=2,col=2)

  abline(true.beta\[2\],0,lwd=2,col=2)

 hist(fit$beta\[,1\],main="Intercept",xlab=expression(beta\[1\]),breaks=50)

 hist(fit$beta\[,2\],main="Slope",xlab=expression(beta\[2\]),breaks=50)
 abline(v=true.beta\[2\],lwd=2,col=2)

 print("Posterior mean/sd")
## \[1\] "Posterior mean/sd"
 print(round(apply(fit$beta\[burn:n.samples,\],2,mean),3))
## \[1\] -0.076  0.798
 print(round(apply(fit$beta\[burn:n.samples,\],2,sd),3))
## \[1\] 0.214 0.268

## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.6990  -1.1039  -0.6138   1.0955   1.8275  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)   
## (Intercept) -0.07393    0.21034  -0.352  0.72521   
## X            0.76807    0.26370   2.913  0.00358 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 138.47  on 99  degrees of freedom
## Residual deviance: 128.57  on 98  degrees of freedom
## AIC: 132.57
## 
## Number of Fisher Scoring iterations: 4

十分感谢您浏览本文,有任何问题请在上面留言!


最受欢迎的见解

1.应用 R 语言进行 METROPLIS-IN-GIBBS 采样和 MCMC 运行

2. R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型

3. R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样

4. R 语言 BUGS JAGS 贝叶斯剖析 马尔科夫链蒙特卡洛办法(MCMC)采样

5. R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归

6. R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析

7. R 语言用 Rcpp 减速 Metropolis-Hastings 抽样预计贝叶斯逻辑回归模型的参数

8. R 语言应用 Metropolis- Hasting 抽样算法进行逻辑回归

9. R 语言中基于混合数据抽样 (MIDAS) 回归的 HAR-RV 模型预测 GDP 增长

正文完
 0