2

plm ライブラリを使用して固定効果回帰を実行し、sandwich,lmtest ライブラリを使用して堅牢な標準誤差を計算しています。回帰の実行に問題はありませんが、標準誤差を計算しようとすると、次のエラーが発生する場合があります。

library(plm)
library(sandwich)
library(lmtest)

fe_reg <- plm(y ~ x + I(x^2)+factor(date), data=reg_data, index=c("id","date"), model="within")
coeftest(fe_reg, vcov.=vcovHC(fe_reg, type="HC1"))

RRuntimeError: Error in solve.default(crossprod(demX))
  system is computationally singular: reciprocal condition number = 1.84726e-25

係数または「通常の」標準誤差 (つまり、等分散) の計算に問題はありません。また、二次項を省略しても、ロバストな標準誤差を問題なく計算できます。

fe_reg <- plm(y ~ x +factor(date), data=reg_data, index=c("id","date"), model="within")  

何が起こっているのか誰にも分かりますか?計画行列が特異な場合、係数は計算されていないはずなので、標準誤差を計算するときに問題がどこから来ているのかわかりません。

ありがとう!

4

1 に答える 1

1

私の記憶が正しければ、plmあまり冗長ではありません。特異行列を持つことは可能だと思いますが、plmは文句を言いません。lm通常、より詳細です。だから試してみてください

 lm_mod1 <- lm(y ~ x + I(x^2)+factor(date), data=reg_data)
 summary(lm_mod1)

lm1 つの係数の計算に問題がある場合は、要約出力で通知されます (係数はNA表にあり、出力の上部にもメモがあるはずです)。編集:この場合、lmの要約出力の上部にあるメモは「係数:(特異点のため1は定義されていません)」である必要があります。

編集coeftest が機能しない別の可能性があります。model.matrix非常に大きな値と非常に小さな値を制約する場合solve、関数内の計算によって線形方程式系を解くことができない可能性がありvcovHCます。したがって、model.matrix(y ~ x + I(x^2)+factor(date), data=reg_data)これが事実であるかどうかを見てください。その場合は、いくつかの変数を再スケーリングしてみてください (たとえば、100 で乗算または 1000 で割る [これもlog()意味がある場合があります)。スケールの変更により、係数の解釈が変わることに注意してください。

于 2015-07-06T12:50:14.520 に答える