当前位置:   article > 正文

使用Metropolis- Hasting抽样算法进行逻辑回归

使用Metropolis- Hasting抽样算法进行逻辑回归

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

在逻辑回归中,我们将二元因变量Y\_i回归到协变量X\_i上。下面的代码使用Metropolis采样来探索 beta\_1和beta\_2 的后验Yi到协变量Xi点击文末“阅读原文”获取完整代码数据)。

相关视频

定义expit和分对数链接函数

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

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

  1. Bayes.logistic<-function(y,X,
  2.                          n.samples=10000,
  3.                          can.sd=0.1){
  4.  
  5.      keep.beta     <- matrix(0,n.samples,2)
  6.      keep.beta\[1,\] <- beta
  7.      acc   <- att <- rep(0,2)
  8.  
  9.     for(i in 2:n.samples){
  10.       for(j in 1:2){
  11.        att\[j\] <- att\[j\] + 1
  12.       # 抽取候选:
  13.        canbeta    <- beta
  14.        canbeta\[j\] <- rnorm(1,beta\[j\],can.sd)
  15.        canlp      <- log_post(Y,X,canbeta)
  16.       # 计算接受率:
  17.        R <- exp(canlp-curlp)  
  18.        U <- runif(1)                          
  19.        if(U<R){       
  20.           acc\[j\] <- acc\[j\]+1
  21.        }
  22.      }
  23.      keep.beta\[i,\]<-beta
  24.    }
  25.    # 返回beta的后验样本和Metropolis的接受率
  26. list(beta=keep.beta,acc.rate=acc/att)}

生成模拟数据

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

拟合模型

  1. burn      <- 10000
  2.  n.samples <- 50000
  3.   fit  <- Bayes.logistic(Y,X,n.samples=n.samples,can.sd=0.5)
  4.  tock <- proc.time()\[3\]
  5.  tock-tick
  1. ## elapsed 
  2. ##    3.72

结果

e74394c1345f9cb4fd647022fdb455f2.png


点击标题查阅往期内容

39a09867cf8056e817c15a931d28423a.jpeg

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

outside_default.png

左右滑动查看更多

outside_default.png

01

eeb86108e751f90b4b9d2061d97d3e33.png

02

5df4d8b2df61b0c36374a00fe25fa454.png

03

5f8e88f2c9ebb615f368d6963ca67346.png

04

a33efe4114ddfc36eb496fa7398582cf.png

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

2986c2a1980ae358c86bd9bebd62fc1c.png

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

7ca15577c9559e8dcf49b224c69cbab4.png

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

a32c3d7ab3262906846e50cb689ffbd9.png

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

9384f1bb0b1cde18584377b4723801f1.png

  1. print("Posterior mean/sd")
  2. ## \[1\] "Posterior mean/sd"
  3.  print(round(apply(fit$beta\[burn:n.samples,\],2,mean),3))
  4. ## \[1\] -0.076  0.798
  5.  print(round(apply(fit$beta\[burn:n.samples,\],2,sd),3))
  6. ## \[1\] 0.214 0.268
  7. ## 
  8. ## Deviance Residuals: 
  9. ##     Min       1Q   Median       3Q      Max  
  10. ## -1.6990  -1.1039  -0.6138   1.0955   1.8275  
  11. ## 
  12. ## Coefficients:
  13. ##             Estimate Std. Error z value Pr(>|z|)   
  14. ## (Intercept) -0.07393    0.21034  -0.352  0.72521   
  15. ## X            0.76807    0.26370   2.913  0.00358 **
  16. ## ---
  17. ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  18. ## 
  19. ## (Dispersion parameter for binomial family taken to be 1)
  20. ## 
  21. ##     Null deviance: 138.47  on 99  degrees of freedom
  22. ## Residual deviance: 128.57  on 98  degrees of freedom
  23. ## AIC: 132.57
  24. ## 
  25. ## Number of Fisher Scoring iterations: 4

非常感谢您阅读本文,有任何问题请在下面留言!


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

6458a93324f932e03713a6356543fe1e.jpeg

点击文末“阅读原文”

获取全文完整资料。

本文选自《R语言使用Metropolis- Hasting抽样算法进行逻辑回归》。

5af28bb5e33cdbb9725c5de6a80d2621.jpeg

0b800696fed4f3573c7868b68d54f9b1.png

点击标题查阅往期内容

R语言coda贝叶斯MCMC Metropolis-Hastings采样链分析和收敛诊断可视化

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

R语言贝叶斯METROPOLIS-HASTINGS GIBBS 吉布斯采样器估计变点指数分布分析泊松过程车站等待时间

R语言马尔可夫MCMC中的METROPOLIS HASTINGS,MH算法抽样(采样)法可视化实例

python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化

Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现

Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

Matlab用BUGS马尔可夫区制转换Markov switching随机波动率模型、序列蒙特卡罗SMC、M H采样分析时间序列

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析

R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例

R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数

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

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据

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

Python贝叶斯回归分析住房负担能力数据集

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

Python用PyMC3实现贝叶斯线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言贝叶斯线性回归和多元线性回归构建工资预测模型

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言stan进行基于贝叶斯推断的回归模型

R语言中RStan贝叶斯层次模型分析示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

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

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

d7dad78c1b5193246613652c30bac6d0.png

b9d9041aab7f29626aab63f9d87f4021.jpeg

004748abb36ab15a761f9451ba76c2b3.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/713536
推荐阅读
相关标签
  

闽ICP备14008679号