7

RでGMMパッケージを使用して、線形モデルのパラメーター(af)を推定しようとしています。

LEV1 = a*Macro + b*Firm + c*Sector + d*qtr + e*fqtr + f*tax

Macro、Firm、およびSectorは、n行の行列です。qtr、fqtr、およびtaxは、n個のメンバーを持つベクトルです。

unconstrdという1つの大きなデータフレームがあり、すべてのデータが含まれています。まず、そのデータを個別のマトリックスに分割します。

v_LEV1 <- as.matrix(unconstrd$LEV1)
Macro <- as.matrix(cbind(unconstrd$Agg_Corp_Prof,unconstrd$R1000_TR, unconstrd$CP_Spread))
Firm <- as.matrix(cbind(unconstrd$ppe_ratio, unconstrd$op_inc_ratio_avg, unconstrd$selling_exp_avg,
                  unconstrd$tax_avg, unconstrd$Mark_to_Bk, unconstrd$mc_ratio))
Sector <- as.matrix(cbind(unconstrd$Sect_Flag03,
                  unconstrd$Sect_Flag04, unconstrd$Sect_Flag05, unconstrd$Sect_Flag06,
                  unconstrd$Sect_Flag07, unconstrd$Sect_Flag08, unconstrd$Sect_Flag12,
                  unconstrd$Sect_Flag13, unconstrd$Sect_Flag14, unconstrd$Sect_Flag15,
                  unconstrd$Sect_Flag17))
v_qtr <- as.matrix(unconstrd$qtr)
v_fqtr <- as.matrix(unconstrd$fqtr)
v_tax <- as.matrix(unconstrd$tax_dummy)

次に、gmmによって呼び出されるx変数のデータをバインドします。

h=cbind(Macro,Firm,Sector,v_qtr, v_fqtr, v_tax)

次に、gmmを呼び出します。

gmm1 <- gmm(v_LEV1 ~ Macro + Firm + Sector + v_qtr + v_fqtr + v_tax, x=h)

メッセージが表示されます:

Error in solve.default(crossprod(hm, xm), crossprod(hm, ym)) : 
  system is computationally singular: reciprocal condition number = 1.10214e-18

事前にお詫び申し上げます。私はRの新人であり、GMMを使用したことはありません。GMM関数は非常に一般的であるため、Webで入手可能な例を確認しましたが、状況を改善するのに十分な具体的なものはないようです。

4

2 に答える 2

6

フルランクを持たない行列に適合させようとしています---変数の一部を除外するか、エラーを探してください。あなたのデータ、または少なくともサンプルがなければ、これ以上言うことはできません。

これは、StackOverflowのプログラミングの質問というよりも、Crossvalidated.comのモデリングの質問です。

于 2013-01-04T20:38:49.180 に答える
3

変数間に線形の依存関係がないことはかなり確信していましたが、一度に1つの変数を追加して、エラーの原因を確認しました。結局、私は同僚にSASでGMMを実行するように依頼しましたが、エラーメッセージは表示されず、完全に実行されました。Rバージョンの問題が何であるかはわかりませんが、この時点で解決策があり、RのGMMでuを指定します。

助けてくれたみんなに感謝します。

于 2013-01-10T17:09:49.330 に答える