堅牢な標準誤差を含む分散分析表を取得するにはどうすればよいですか?


10

私はRのplmパッケージを使用してプールされたOLS回帰を実行しています。ただし、私の質問は基本的な統計に関するものなので、まずここに投稿してみます;)

私の回帰結果は不等分散残差を生成するので、不等分散ロバスト標準誤差を使用してみます。その結果、coeftest(mod, vcov.=vcovHC(mod, type="HC0"))各独立変数の推定値、標準誤差、t値、およびp値を含むテーブルが得られます。これらは基本的に私の「堅牢な」回帰結果です。

さまざまな変数の重要性を議論するために、各独立変数によって説明される分散のシェアをプロットしたいので、それぞれの二乗和が必要です。しかし、functionを使用するとaov()、Rに堅牢な標準エラーを使用するように指示する方法がわかりません。

今私の質問は:どのようにしてロバストな標準誤差を参照するANOVAテーブル/平方和を取得するのですか?通常の標準誤差のある回帰からの分散分析表に基づいてそれを計算することは可能ですか?

編集:

つまり、Rの問題を無視します。

Rがロバストな標準誤差を使用しても影響を受けない場合、さまざまな説明変数による説明付き分散へのそれぞれの寄与も変化しませんか?2

編集:

Rでは、aov(mod)実際にpanelmodel(plm)の正しいANOVAテーブルを提供しますか?

回答:


12

線形回帰モデルの分散分析は、対応するネストされたモデルのWald検定(および尤度比検定)と同等です。したがって、不均一分散(HC)標準誤差を使用して対応する検定を実行したい場合、これは二乗和の分解から取得することはできませんが、HC共分散推定を使用してWald検定を実行できます。このアイデアは、両方で使用されているAnova()linearHypothesis()carパッケージとcoeftest()してwaldtest()からlmtestパッケージ。後者の3つはplmオブジェクトでも使用できます。

簡単な(あまり面白くない/意味がない)例を以下に示します。私たちは、から標準モデルを使用して?plmマニュアルページとの両方の有意性についてワルド検定を実施したいlog(pcap)unemp。これらのパッケージが必要です:

library("plm")
library("sandwich")
library("car")
library("lmtest")

モデル(代替の下)は次のとおりです。

data("Produc", package = "plm")
mod <- plm(log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp,
  data = Produc, index = c("state", "year"))

最初に、すべての個々の係数のHC標準誤差を使用した限界Waldテストを見てみましょう。

coeftest(mod, vcov = vcovHC)

t test of coefficients:

            Estimate Std. Error t value  Pr(>|t|)    
log(pc)    0.2920069  0.0617425  4.7294 2.681e-06 ***
log(emp)   0.7681595  0.0816652  9.4062 < 2.2e-16 ***
log(pcap) -0.0261497  0.0603262 -0.4335   0.66480    
unemp     -0.0052977  0.0024958 -2.1226   0.03411 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

そして、我々は両方のためのワルドの試験を行うlog(pcap)unemp

linearHypothesis(mod, c("log(pcap)", "unemp"), vcov = vcovHC)

Linear hypothesis test

Hypothesis:
log(pcap) = 0
unemp = 0

Model 1: restricted model
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp

Note: Coefficient covariance matrix supplied.

  Res.Df Df  Chisq Pr(>Chisq)  
1    766                       
2    764  2 7.2934    0.02608 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

または、mod02つの係数を使用せずに帰無仮説(たとえば)でモデルを近似し、次を呼び出すこともできますwaldtest()

mod0 <- plm(log(gsp) ~ log(pc) + log(emp),
  data = Produc, index = c("state", "year"))
waldtest(mod0, mod, vcov = vcovHC)

Wald test

Model 1: log(gsp) ~ log(pc) + log(emp)
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp
  Res.Df Df  Chisq Pr(>Chisq)  
1    766                       
2    764  2 7.2934    0.02608 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

検定統計量とp値は、によって計算linearHypothesis()waldtest()全く同じです。インターフェースと出力フォーマットだけが多少異なります。場合によっては、どちらか一方がより簡単で直感的です。

注:vocvHC(mod)共分散行列推定量(つまり、のような関数)の代わりに共分散行列推定(つまり、のような行列vocvHC)を指定する場合は、代替の下でモデルのHC共分散行列の推定、つまり、非制限モデル。


1
私がそれを正しく理解していれば、ウォルド検定は特定の変数を含めることが重要であるかどうかを示します。しかし、二乗和などのように、実際にモデルをどれだけ改善するという指標はありますか?
Aki

HAC標準エラーを実装するにはどうすればよいですか?coeftest(mod、vcov = vcovHAC)を試しましたが、「クラス "c( 'plm'、 'panelmodel')のオブジェクトに適用された 'estfun'に該当するメソッドはありません」というエラーメッセージが表示されました。重みを計算する必要があるようですまたは推定関数を最初に使用します。どの方法をお勧めしますか?
Aki

plmパッケージにはパッケージのvcovHC()ジェネリックのメソッドがありますが、のメソッドsandwichは提供していませんvcovHAC()。代わりにplm、シリアル相関を含む可能性のあるパネルモデルの共分散行列を計算するための独自の専用関数が同梱されています。vcovNW()またはvcovSCC()パッケージ内を参照してくださいplm
Achim Zeileis、2016

ありがとうございました!私が理解している限り、両方の関数は自己相関ロバストSEに関連しています。異分散性および自己相関ロバストなSEの両方に使用できる関数はありますか?
アキ

すべての3つの機能は、( 、、vcovHAC )HACは何の略かだ_H_eteroskedasticityと_A_utocorrelation _C_onsistent ...です。vcovNWvcovSCC
Achim Zeileis 16

2

これはAnovacarパッケージの関数で実行できます。ANOVAで不均一分散を処理するためのその他の手法の詳細とレビューについては、この優れた回答を参照してください。


ありがとうございました。問題は、Anova()がタイプplm(panelmodel)のモデルで動作しないように見えることです。
Aki

@Aki私が誤解していない場合、プールされたOLSはビネットでの説明に基づいて、プレーンOLSと同等です:cran.r-project.org/web/packages/plm/vignettes/plm.pdf
shadowtalker

@Akiただし、よりリッチなANOVAモデルに興味があるようです。ここにいくつかのRの例があります:stats.stackexchange.com/questions/3874/…– shadowtalker 15
1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.