2012-04-25 49 views
0

为了计算非参数IV回归,我已经从Stata中的一个.dta文件中读取了我用于工作的文件。然后我子集我的向量y(依赖),z(其中y内源的),和w(仪器为Z) - 使用y作为一个例子:R中的npregiv:尺寸错误

y = data.frame(data$y) 

,然后以类似的方式我的多元外源X矩阵。执行

model = npregiv(y, z, w, x) 

我期待的东西的工作,为y为NX1,Z为NX1,W为NX1,x是NX4。在npregiv中,允许z,w和x是多变量,并且y必须是单变量(它是)。但是,我得到错误信息执行命令后:

Error in tww[, , 1] : incorrect number of dimensions 

什么是tww[.]

+2

请提供一个小的,可重现的数据和您正在运行的代码的示例。我的猜测是你的一个变量('data $ *')没有输入到'npregiv'所需的维度。 – 2012-04-25 11:14:28

+0

您还需要说明这个函数来自哪里。 (你的第一行几乎肯定是错误的开始方式,回归调用中可能会有'dfrm < - data.frame(y = y,z = z,w = w)'后面紧跟'data = dfrm' 。) – 2012-04-25 14:14:30

+0

@CarlWitthoft:就一个例子而言,创建形式为'a = c(1,2,3,4,5)','a = data.frame(a)'的形式的任何向量用于y,z, w和x。对于y,文档要求它是一个一维矢量,但我仍然使用data.frame,因为如果ncol(y)不在数据框中,它将返回NULL。没有数据框R返回“错误:训练和评估数据具有不同数量的列”。否则,运行'model = npregiv(y = y,z = z,w = w,x = x)'给出tww [。]错误。 @DWin,'data = dfrm'不适合我。命令是否要求分别输入y,z,w,x数据? – kirk 2012-04-26 13:35:31

回答

0

为了解决这个问题,我创建了一个数据框,其中包含所有与回归有关的变量,包括矢量y和矩阵z,w和x。除了调用npregiv(y=y, z=z, w=w,x=x)之外,还需要指定评估数据(默认情况下它将从x,y和z中指定):npregiv(y=y, z=z, w=w, x=x, zeval=z, weval=w, xeval=x)