我在使用R中的bayesm包的协变量拟合工具变量模型时遇到问题。添加协变量导致错误消息: “error:join_cols()/ join_vert():列数必须相同”
错误源于通过Rcpp调用的外部函数'rivDP_rcpp_loop.cpp'。然而,我不够熟练地处理R级问题。
我构建了一个基于函数示例的示例,该示例导致我的计算机出错。
##
## simulate scaled log-normal errors and run
##
set.seed(66)
k=10
delta=1.5
Sigma=matrix(c(1,.6,.6,1),ncol=2)
N=1000
tbeta=4
set.seed(66)
scalefactor=.6
root=chol(scalefactor*Sigma)
mu=c(1,1)
##
## compute interquartile ranges
##
ninterq=qnorm(.75)-qnorm(.25)
error=matrix(rnorm(100000*2),ncol=2)
error=t(t(error)+mu)
Err=t(t(exp(error))-exp(mu+.5*scalefactor*diag(Sigma)))
lnNinterq=quantile(Err[,1],prob=.75)-quantile(Err[,1],prob=.25)
##
## simulate data
##
error=matrix(rnorm(N*2),ncol=2)%*%root
error=t(t(error)+mu)
Err=t(t(exp(error))-exp(mu+.5*scalefactor*diag(Sigma)))
#
# scale appropriately
Err[,1]=Err[,1]*ninterq/lnNinterq
Err[,2]=Err[,2]*ninterq/lnNinterq
z=matrix(runif(k*N),ncol=k)
x=z%*%(delta*c(rep(1,k)))+Err[,1]
y=x*tbeta+Err[,2]
w<-matrix(rnorm(10000),ncol=10)
# set intial values for MCMC
Data = list(); Mcmc=list()
Data$z<-cbind(z,w); Data$x=x; Data$y=y; Data$w<-w
# start MCMC and keep results
Mcmc$maxuniq=100
Mcmc$R=R
end=Mcmc$R
begin=100
out=rivDP(Data=Data,Mcmc=Mcmc)
答案 0 :(得分:1)
我遇到了同样的问题,并已联系软件包维护人员进行澄清。与此同时,我可以通过从2012年下载2.2-5版本来使rivDP()函数工作。确保首先安装Rtools(从这里:https://cran.r-project.org/bin/windows/Rtools/),然后运行以下代码: / p>
packageurl <- "https://cran.r-project.org/src/contrib/Archive/bayesm/bayesm_2.2-5.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
library(bayesm)