2017-03-25 16 views
2

一般的なグループに合わせてグループ(例えば学校)の固定効果を含むR(複数のモデル - ポアソン、バイノミアルおよび連続)で回帰を実行しようとしています(グループによって実質的に卑劣である)レベルの差異と、グループの参加者のネスティングを説明するクラスタの標準エラーを含む。私はまた、マウスで作成された帰属データフレーム上でこれらを実行しています。異なる分野では「固定効果」という言い回しを使い分けているようですので、トラブルシューティングを行うのは難しいです。R:帰属データセットでグループ固定効果とクラスター化標準誤差を持つ回帰

私はランダムインターセプトモデル(lme4)を採用していますが、学校の固定効果を考慮していません(ランダム効果は私の研究課題には興味がありません)。グループをダミーとして配置すると、ランニングが大幅に遅くなります。私はグループダミーで1レベルのglm/lmを実行することもできましたが、帰属データ(clusterSEパッケージを試しました)で標準エラーをクラスタリングする戦略を見つけることができませんでした。私は下劣な計算を手渡すことができましたが、これを達成するためのより直接的な方法があるはずです。

私はlfeパッケージも見てきましたが、glmオプションがなく、demeanlist関数が帰属データフレームと互換性がないようです。

Stataでは、コマンドはxtreg、fe vce(クラスタ変数)、(fe =固定効果、vce =クラスタ化された標準エラー、帰属するデータフレームを実行するmiが追加されます)。モデル化のためにStataに切り替えることはできましたが、可能であればRにとどまることをお勧めします!

これがクロスバリデーションされた方がよいかどうか教えてください - 私はフェンスにいましたが、コーディングの問題に思えていたので、この1つに行きました。

ありがとうございました!

+1

FEパネルモデルを実行するために 'plm'パッケージを調べ、' lm.test'パッケージの 'coeftest()'で実行して標準エラーを推定してください。この[Cross Validated post](http://stats.stackexchange.com/questions/10017/standard-error-clustering-in-r-either-manually-or-in-plm)を参照してください。 – Parfait

+0

ポストをありがとう - 私はplmパッケージを見ていたが、私はそれが適切ではないと思ったパネルデータを持っていなかったので。その投稿に対するコメントは、関係なくplmを使用するのに役立ちました。 –

答えて

0

私はブートストラップをブロックします。 「ブロック」はクラスタリングを処理し、「ブートストラップ」は生成された回帰子を処理します。

これを他の見積もり者に拡張できるようにするには、おそらくもっとエレガントな方法があります。

# junk data 
x <- rnorm(100) 
y <- 1 + 2*x + rnorm(100) 
dat1 <- data.frame(y, x, id=seq_along(y)) 
summary(lm(y ~ x, data=dat1)) 

# same point estimates, but lower SEs 
dat2 <- dat1[rep(seq_along(y), each=10), ] 
summary(lm(y ~ x, data=dat2)) 

# block boostrap helper function 
require(boot) 
myStatistic <- function(ids, i) { 
    myData <- do.call(rbind, lapply(i, function(i) dat2[dat2$id==ids[i], ])) 
    myLm <- lm(y ~ x, data=myData) 
    myLm$coefficients 
} 

# same point estimates from helper function if original data 
myStatistic(unique(dat2$id), 1:100) 


# block bootstrap recovers correct SEs 
boot(unique(dat2$id), myStatistic, 500) 
+0

ありがとうございます - あなたのコメントはブロックブートストラップオプションを持つmultiwayvcovパッケージに私を導いてくれます。しかし、それは最終的には、miceaddsパッケージのlm.cluster/glm.cluster(https://rdrr.io/cran/miceadds/man/lm.cluster.html)関数につながりました。回帰式に+ factor(クラスタ変数)を追加すると(各グループのダミーを追加する)トリックを行うようです。 –

+0

@ElizabethH - ニース。私はこれらのパッケージ(私は主にStataを使用する)を知らなかった。私はあなたが生成した退行者を持っていることに言及すべきだと思います。 Stataはあなたに 'mi'を使ってこれを行いますが、これらのRパッケージが、あなたがデータを帰属していることを知っているかどうかはわかりません。ブートストラッピングは1つの解決策です。 –

+0

私は、 'with'コマンドを使用して帰属データ上で実行しました(ここのコメントに似ています - http://stackoverflow.com/questions/26473684/run-glm-mids-on-a-subset-of-imputed-マウスからのデータ - r)。誰かがこの質問を将来参照する場合、今日私はglmmmlパッケージにオプション(glmmboot)があることも発見しましたが、ポアソンとバイナリの結果だけで動作します。 –

関連する問題