2010-12-08 5 views
27

最小二乗回帰関数をヘテロサイクリック訂正された標準誤差と適合させるためにStata出力に最もよく似たR実装を探したいと思います。具体的には、訂正された標準エラーを「要約」に入れて、最初の仮説テストラウンドで追加の計算を行う必要はありません。私は、EviewsとStataが提供するものと同じくらいクリーンなソリューションを探しています。ヘテロ弾性を伴う回帰訂正された標準誤差

はこれまでのところ、私が思い付くことができる最高のパッケージ「lmtest」を使用すると、次のとおりです。

model <- lm(...) 
coeftest(model, vcov = hccm) 

これは私が欲しいの出力が得られますが、それがために、「coeftest」を使用していないようですその述べられた目的。私はまた、R^2とFのstatなどを読み込むために、間違った標準エラーを持つ要約を使用する必要があります。私は動的Rがどのように与えられているかに基づいて、この問題に対する "1行"解決策が存在するはずです。

おかげで

+0

の機能を見つけることができます。それはどこから来ているのか分かりませんでした。 –

答えて

37

私はあなたがパッケージlmtestでcoeftestと正しい軌道に乗っていると思います。この機能を含むsandwich packageを見てください。既に見つかったlmtestパッケージと連携して動作するように設計されています。

> # generate linear regression relationship 
> # with Homoskedastic variances 
> x <- sin(1:100) 
> y <- 1 + x + rnorm(100) 
> ## model fit and HC3 covariance 
> fm <- lm(y ~ x) 
> vcovHC(fm) 
      (Intercept)   x 
(Intercept) 0.010809366 0.001209603 
x   0.001209603 0.018353076 
> coeftest(fm, vcov. = vcovHC) 

t test of coefficients: 

      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 1.01973 0.10397 9.8081 3.159e-16 *** 
x   0.93992 0.13547 6.9381 4.313e-10 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

機能waldtest()を見て、F検定を取得するには:あなたはいつもあなたがワンライナーを望んでいた場合、あなたのためにこれら二つを組み合わせることが簡単な関数をでっち上げることができ

> waldtest(fm, vcov = vcovHC) 
Wald test 

Model 1: y ~ x 
Model 2: y ~ 1 
    Res.Df Df  F Pr(>F)  
1  98       
2  99 -1 48.137 4.313e-10 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

...

Econometric Computing with HC and HAC Covariance Matrix Estimatorsビンテージには、lmtestとサンドイッチをリンクしてサンドイッチパッケージを作成している例がたくさんあります。

編集:

我々は(上から例に)このように使用することができます
mySummary <- function(model, VCOV) { 
    print(coeftest(model, vcov. = VCOV)) 
    print(waldtest(model, vcov = VCOV)) 
} 

ワンライナーは、のような単純なものでした

> mySummary(fm, vcovHC) 

t test of coefficients: 

      Estimate Std. Error t value Pr(>|t|)  
(Intercept) 1.01973 0.10397 9.8081 3.159e-16 *** 
x   0.93992 0.13547 6.9381 4.313e-10 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Wald test 

Model 1: y ~ x 
Model 2: y ~ 1 
    Res.Df Df  F Pr(>F)  
1  98       
2  99 -1 48.137 4.313e-10 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
+7

@Jerome:あなたが答えに満足しているなら、それをアップヴォートするか受け入れてください。あなたはStataのために支払ったものを私に支払って、あなたのために一本ライナーを書くつもりです;-)真剣に、Rはボランティアと個人によって開発されます。これらの人々は、使用する必要のあるコードを開発し、それをどのように行うべきかを感じます。 'lmtest'は、線形モデルのターゲットテストを提供することです。作者はおそらく、これらのことをするための生のツールを提供するほうがいいと感じていました。あなたが望む要約 - 砂糖を必要としませんでした。私は答えを編集して1行のラッパーを書くのがどれほど簡単かを示します。 –

+0

STATAがここで何をしているのか、私はSTATAの 'robust'オプションで計算した結果を再現しようとしていたからです。 –

+3

ああ、私は私自身の質問に答えています(これまでのコメントで挙げたものです).STATAがvcovHCで 'typ =" HC1 "'を使うのと同じことです。 –

10

私はRを見つけましたあなたが探しているものとまったく同じ機能を果たします。追加の計算をすることなく、堅牢な標準エラーを提供します。 lm.object上でを実行し、パラメータrobust=Tを設定すると、Stataのような異方分散性の一貫した標準エラーが返されます。

summary(lm.object, robust=T) 

あなたはあなたが `)(` HCCMためにも、パッケージの車を必要とすることに注意しなければならないhttps://economictheoryblog.com/2016/08/08/robust-standard-errors-in-r/

関連する問題