2012-04-25 10 views
0

ノンパラメトリックIV回帰を計算するために、私は作業に慣れていたStataの.dtaファイルを読んでいます。 Iは、次いで、(依存)、z(Y内因性)yw(Z用器具)のための私のベクトルをサブセット - 例としてyを使用し:次いでnpregiv in R:寸法誤差

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は一変量でなければなりません。しかし、コマンドを実行すると、エラーメッセージが表示されます。とは何ですか?

+2

実行しているデータとコードの小さな再現可能な例を提供してください。私の推測では、あなたの変数の一つ( 'data $ *')は 'npregiv'への入力に必要な次元を持たないということです。 –

+0

また、この機能がどこから来ているかを言う必要があります。 (回帰呼び出しの 'data = dfrm'に続く' dfrm < - data.frame(y = y、z = z、w = w) 'の後には、 。) –

+0

@CarlWitthoft:例として、y、z、およびzの形式で、a = c(1,2,3,4,5)、a = data.frame(a) w、およびx。 yについては、ドキュメンテーションは1次元ベクトルであることが必要ですが、ncol(y)はデータフレーム内になければNULLを返すため、data.frameを使用します。データフレームがなければ、Rは「エラー:トレーニングと評価データの列数が等しくない」を返します。それ以外の場合、 'model = npregiv(y = y、z = z、w = w、x = x)'を実行すると、tww [。]エラーが発生します。 @DWin、 'data = dfrm'は私のためには機能しませんでした。コマンドでy、z、w、xのデータを別々に入力する必要はありませんか? – kirk

答えて

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)