f<-列表( y~dnorm(mu,sigma), μ~dnorm(0,10), σ~dexp(1) )
install.packages(c(“coda”,“mvtnorm”,“devtools”,“loo”,“dagitty”,“shape”) devtools::install_github(“rmcelreath/rethinking”)
install.packages(c(“coda”,“mvtnorm”,“devtools”,“loo”,“dagitty”) 开发工具::install_github(“rmcelreath/ 重新思考@slim ")
图书馆(反思) f<-列表( y~dnorm(mu,sigma), μ~dnorm(0,10), σ~dexp(1) ) 适合<-quap( f、, 数据=列表(y=c(-1,1)), 开始=列表(mu=0,sigma=1) )
平均sd 5.5%94.5% 亩0.00 0.59-0.95 0.95 西格玛0.84 0.33 0.31 1.36
fit_stan<-ulam(f,数据=列表(y=c(-1,1)))
平均sd 5.5%94.5%n_eff Rhat 西格玛1.45 0.72 0.67 2.84 145 1 亩0.12 1.04-1.46 1.59 163 1
数据{ 实y[2]; } 参数{ 实际<下限=0>σ; 实亩; } 模型{ σ~指数(1); mu~正态(0,10); y~正态(mu,sigma); }
fit_stan<-乌兰姆( 拥护者( y~正常(mu,sigma), mu~正常(0,10), σ~指数(1) ),数据=列表(y=c(-1,1))
#准备数据 数据(UCBadmit) UCBadmit$male<-as.integer(UCBadmit$applicationr.gender==“male”) UCBadmit$部门<-rep(1:6,每个=2) UCBadmit$applicant.gender<-空 #可变截获模型 m_glmm1<-ulam( 拥护者( 承认~二项式(应用,p), logit(p)<-a[部门]+b*男性, a[dept]~正常(abar,sigma), abar~正常(0,4), σ~半正态(0,1), b~正常(0,1) ),数据=UCBadmit)
m_glmm2<-ulam( 拥护者( 承认~二项式(应用,p), logit(p)<-a[部门]+b[部门]*男性, c(a,b)[dept]~多重正规(c(abar,bbar),Rho,sigma), abar~正常(0,4), bbar~正常(0,1), σ~半正态(0,1), Rho~lkjcorr(2) ), 数据=UCBadmit)
m_glmm3<-ulam( 拥护者( 承认~二项式(应用,p), logit(p)<-v[dept,1]+v[dett,2]*男性, 向量[2]:v[dept]~multi_normal(c(abar,bbar),Rho,sigma), abar~正常(0,4), bbar~正常(0,1), σ~半正态(0,1), Rho~lkjcorr(2) ), 数据=UCBadmit)
m_glmm4<-ulam( 拥护者( 承认~二项式(应用,p), logit(p)<-v[dept,1]+v[dett,2]*男性, 向量[2]:v[dept]~multi_normal(v_mu,Rho,sigma), 向量[2]:v_mu~法线(0,1), σ[1]~半正规(0,1), σ[2]~半正规(0,2), Rho~lkjcorr(2) ), 数据=UCBadmit)
m_glmm5<-乌兰姆( 拥护者( 承认~二项式(应用,p), logit(p)<-v_mu[1]+v[dept,1]+(v_mu[2]+v[dept,2])*男性, 矩阵[dept,2]:v<-t(diag_pre_multiply(sigma,L_Rho)*z), 矩阵[2,dept]:z~正规(0,1), 向量[2]:v_mu[[1]~法线(0,4), 向量[2]:v_mu[2]~法线(0,1), 向量[2]:sigma~half_normal(0,1), cholesky_factor_corr[2]:L_Rho~lkj_cor_cholesky(2) ), 数据=UCBadmit)
m_glmm1<-ulam( 拥护者( 承认~二项式(应用,p), logit(p)<-a[部门]+b*男性, a[dept]~正常(abar,sigma), abar~正常(0,4), σ~半正态(0,1), b~正常(0,1) ),数据=UCBadmit,log_lik=TRUE) WAIC(m_glmm1)
生成的数量{ 向量[12]log_lik; 向量[12]p; 对于(1:12中的i){ p[i]=a[部门[i]]+b*男性[i]; p[i]=库存记录(p[i]); } 对于(1:12中的i)log_lik[i]=二项式lpmf(允许[i]|应用[i],p[i]); }
#零膨胀泊松 #gen数据优先-文本示例 prob_drink<-0.2#20%天 rate_work<-1平均每天1份手稿 N<-365 饮料<-rbinom(N,1,prob_drink) y<-作为整数((1-饮料)*rpois(N,rate_work)) x<-rorm(N)#伪协变量 #现在的ulam代码 m_zip<-ulam( 拥护者( y|y==0~自定义(log_mix(p,0,poisson_lpmf(0|lambda))), y|y>0~自定义(log1m(p)+poisson_lpmf(y|lambda)), logit(p)<-ap, 对数(λ)<-al+bl*x, ap~dnorm(0,1), al~dnorm(0,10), bl~正常(0,1) ) , 数据=列表(y=y,x=x)
用于(1:365中的i) 如果(y[i]>0)目标+=log1m(p)+泊松lpmf(y[i]|lambda[i]); 用于(1:365中的i) 如果(y[i]==0)目标+=log_mix(p,0,poisson_lpmf(0|lambda[i]));
UCBadmit$男2<-UCBadmit$男 UCBadmit$male2[1:2]<-(-1)#缺失代码 UCBadmit$male2<-as.integer(UCBadmit$male2)
m_mix<-ulam( 拥护者( admin|male2==-1~自定义(log_mix( phi_尺寸, 二项式lpmf(允许|应用程序,pm1), 二项式lpmf(允许|应用程序,p_m0)), 承认|male2>-1~二项式(应用程序,p), logit(p)<-a[部门]+b*男性2, logit(p_m1)<-a[部门]+b*1, logit(p_m0)<-a[部门]+b*0, 雄性2 |雄性2>-1~伯努利(phi _ male), phi_male~β(2,2), a[dept]~正常(0,4), b~正常(0,1) ), 数据=UCBadmit)
UCBadmit$x<-rnorm(12) UCB限额$x[1:2]<-不适用 m_miss<-乌兰姆( 拥护者( 承认~二项式(应用,p), logit(p)<-a+b*男性+bx*x_合并, x_合并~正常(0,1), x_merge<-合并丢失(x,x_impute), a~正态(0,4), b~正常(0,1), bx~正态(0,1) ), 数据=UCBadmit)
数据(Kline2) d<-Kline2 数据(岛屿DistMatrix) d$社会<-1:10 日期<-list( y=d$total_tools, 社会=d$社会, log_pop=日志(d$population), Dmat=岛屿分布矩阵 ) m_GP1<-ulam( 列表主义者( y~泊松(mu), log(mu)<-a+aj[society]+b*log_pop, a~正常(0,10), b~正常(0,1), 向量[10]:aj~multi_normal(0,SIGMA), 矩阵[10,10]:SIGMA<-cov_GPL2(Dmat,etasq,rhosq,0.01), etasq ~指数(1), rhosq~指数(1) ), 数据=dat)
数据(灵长类301) 数据(灵长类301_distance_matrix) d<-灵长类301 d$name<-as.character(d$name) dstan<-d[完成案例(d$sociallearning,d$research_efort,d$body,d$brain),] #dstan中spp的剪枝距离矩阵 spp_obs<-dstan$name y<-灵长类301_距离矩阵 y2<-y[spp_obs,spp_obs] #缩放距离 y3<-y2/最大值(y2)
m_GP2<-ulam( 拥护者( 社交学习~poisson(lambda), log(λ)<-a+g[spp_id]+b_ef*log_research_efort+b_body*log_body+b_eq*log_brain, a~正态(0,1), 向量[N_spp]:g<<-L_SIGMA*eta, 向量[N_sp]:η~法线(0,1), 矩阵[N_spp,N_spp]:L_SIGMA<<-cholesky_decompose(SIGMA), 矩阵[N_spp,N_spp]:SIGMA<-cov_GPL2(Dmat,etasq,rhosq,0.01), b体~正常(0,1), b_eq ~正常(0,1), bef~正态(1,1), etasq ~指数(1), rhosq~指数(1) ), data=列表( N_spp=当前(数据扫描), social_learning=dstan$社会学习, spp_id=1:nrow(数据扫描), log_research_efort=日志(dstan$research_ efort), log_body=日志(dstan$body), log_brain=日志(dstan$brain), Dmat=y3 ) , 控制=列表(max_treedepth=15,adapt_delta=0.95), sample=FALSE)
开发工具::install_github(“stan-dev/cmdstanr”)
N<-1 e4 x<-形式(N) m<-1+用途(N,2) y<-rbinom(N,大小=m,prob=inv_logit(-3+x)) dat<-list(y=y,x=x,m=m) #两个螺纹 m1<-乌兰姆( 拥护者( y~二项式逻辑(m,logit_p), logit_p<-a+b*x, a~正常(0,1.5), b~正常(0,0.5) ),数据=dat, cmdstan=TRUE,线程=2,刷新=1000)
f4u列表( y~dnorm(mu,sigma), mu<-a+zaj[组]*sigma组[1]+ (b+zbj[组]*sigma_组[2])*x, c(zaj,zbj)[group]~dmvnorm(0,Rho_group), a~dnorm(0,10), b~dnorm(0,1), σ~dcauchy(0,1), sigma_group~dcauchy(0,1), Rho_group~dlkjcorr(2) )
f4nc列表( y~dnorm(mu,sigma), mu<-a+aj[组]+(b+bj[组])*x, c(aj,bj)[组]~dmvnormNC(sigma_group,Rho_group), a~dnorm(0,10), b~d形式(0,1), σ~dcauchy(0,1), σ群~dcauchy(0,1), Rho_group~dlkjcorr(2) )
N<-100 N_错过<-10 x<-形式(N) y<-形式(N,2*x,1) x[样本(1:N,大小=N_miss)]<-NA
f5列表( y~dnorm(mu,sigma), μ<-a+b*x, x~dnorm(mux,sigmax), a~dnorm(0,100), b~dnorm(0,10), mux~dnorm(0,100), σ_x~dcauchy(0,2), σ~dcauchy(0,2) ) m5<-map2stan(f5,数据=列表(y=y,x=x))
N<-100 N_错过<-10 x<-rbinom(N,大小=1,概率=0.5) y<-形式(N,2*x,1) x[样本(1:N,大小=N_miss)]<-NA
f6列表( y~dnorm(mu,sigma), μ<-a+b*x, x~bernoulli(φ), a~d形式(0-100), b~dnorm(0,10), φ~β(1,1), σ~dcauchy(0,2) ) m6<-map2stan(f6,数据=列表(y=y,x=x),约束=列表(phi=“下限=0,上限=1”)
N<-100 N_错过<-10 x1<-rbinom(N,大小=1,概率=0.5) x2<-rbinom(N,大小=1,概率=0.1) y<-r形式(N,2*x1-x2,1) x1[样本(1:N,大小=N_miss)]<-NA x2[样本(1:N,大小=N_miss)]<-NA f7列表( y~dnorm(mu,sigma), μ<-a+b1*x1+b2*x2, x1~伯努利(phi1), x2~伯努利(phi2), a~dnorm(0,100), c(b1,b2)~dnorm(0,10), phi1~β(1,1), phi2~β(1,1), σ~dcauchy(0,2) ) m7<-map2stan(f7,数据=列表(y=y,x1=x1,x2=x2), 约束=列表(phi1=“下限=0,上限=1”,phi2=“下限=0,上限=1”)
m6<-map2stan(f6,数据=列表(y=y,x=x),约束=列表(phi=“下限=0,上限=1”), do_discrete_imputation=真) 精度(m6,深度=2)
Pr(y[i])=Pr(x[i]=1)Pr(y[i]|x[i]=1)+Pr(x[i]=0)Pr
Pr(y[i])=φ*N(y[i]|a+b,σ)+(1-phi)*N(y[i]|a,σ
Pr(x[i]==1|y[i])=φ*N(y[i]|a+b,σ)/Pr(y[i])
Pr(y[i])=Pr(x1=1)Pr(x2=1)*Pr(y[i]| x1=1,x2=1
Pr(y[i]|x2[i]==1)=Pr(x1=1)Pr=0,x2=1) =[Pr(x1=1)Pr(x2=1)+Pr(x1=1)Pr +[Pr(x1=0)Pr(x2=1)+Pr(x1=0.)Pr =Pr(x1=1)Pr(y[i]|x1=1,x2=1)+Pr(x1=0)Pr
合并<-2^n d<-矩阵(NA,nrow=n组合,ncol=n) for(col_var in 1:n) d[,col_var]<-rep(0:1,each=2^(col_var-1),length.out=合并)
k(i,j)=eta^2*exp(-rho^2*D(i,j)^2)+ifelse(i==j,sigma^2,0)
图书馆(反思) 数据(Kline2) d<-Kline2 数据(岛屿DistMatrix) d$社会<-1:10 mGP<-map2stan( 拥护者( total_tools~dpois(mu), log(mu)<-a+aj[社会], a~dnorm(0,10), aj[社会]~GPL2(Dmat,etasq,rhosq,0.01), etasq~dcauchy(0,1), rhosq~dcauchy(0,1) ), data=列表( total_tools=d$总工具, 社会=d$社会, Dmat=岛屿DistMatrix), constraints=列表( etasq=“lower=0”, rhosq=“下限=0” ), 预热=1000,iter=5000,链条=4)
mu.Africa.mean<-适用(mu.Africa,2,平均值) 应用时出错(mu.Africa,2,mean):dim(X)必须为正数
mu.Africa.mean<-apply(亩非洲$亩,2,平均值)