赞
踩
在逻辑回归中,我们将二元因变量Y\_i回归到协变量X\_i上。下面的代码使用Metropolis采样来探索 beta\_1和beta\_2 的后验Yi到协变量Xi(点击文末“阅读原文”获取完整代码数据)。
相关视频
- 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
点击标题查阅往期内容
左右滑动查看更多
01
02
03
04
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
资料获取
在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。
点击文末“阅读原文”
获取全文完整资料。
本文选自《R语言使用Metropolis- Hasting抽样算法进行逻辑回归》。
点击标题查阅往期内容
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吉布斯采样贝叶斯多元线性回归
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。