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

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

在逻辑回归中,我们将二元响应\(Y_i \)回归到协变量\(X_i \)上。下面的代码使用Metropolis采样来探索\(\ beta_1 \)和\(\ beta_2 \)的后验YiYi到协变量XiXi。


定义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

      # Draw candidate:

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

      # Compute acceptance ratio:

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

   }
   # Return the posterior samples of beta and
   # the Metropolis acceptance rates
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
    print(summary(glm(Y~X,family="binomial")))
##
## Call:
## glm(formula = Y ~ X, family = "binomial")
##
## 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月前
|
机器学习/深度学习 存储 算法
用kNN算法诊断乳腺癌--基于R语言
用kNN算法诊断乳腺癌--基于R语言
|
1月前
|
机器学习/深度学习 算法
【机器学习】比较朴素贝叶斯算法与逻辑回归算法
【5月更文挑战第10天】【机器学习】比较朴素贝叶斯算法与逻辑回归算法
|
1月前
|
算法 项目管理
R语言实现蒙特卡洛模拟算法
R语言实现蒙特卡洛模拟算法
|
1月前
|
算法 搜索推荐
R语言混合SVD模型IBCF协同过滤推荐算法研究——以母婴购物平台为例
R语言混合SVD模型IBCF协同过滤推荐算法研究——以母婴购物平台为例
|
1月前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
1月前
|
前端开发 数据可视化 算法
r语言Bootstrap自助法重采样构建统计量T抽样分布近似值可视化|代码分享
r语言Bootstrap自助法重采样构建统计量T抽样分布近似值可视化|代码分享
|
1月前
|
算法 数据可视化 网络可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
|
1月前
|
算法 数据可视化 数据挖掘
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率
|
1月前
|
机器学习/深度学习 数据采集 SQL
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
R语言K-Means(K均值聚类)和层次聚类算法对微博用户特征数据研究
|
1月前
|
算法 数据可视化 数据挖掘
数据分享|R语言改进的K-MEANS(K-均值)聚类算法分析股票盈利能力和可视化
数据分享|R语言改进的K-MEANS(K-均值)聚类算法分析股票盈利能力和可视化

热门文章

最新文章