2012-04-25 71 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)