2

aprstableパッケージを使用して、堅牢な標準誤差を使用した推定結果のテーブルを作成しようとしています。ただし、私のモデルには簡単に回避できない特異点があるため(数百のレベルと重複する要素aprstableから生じる)、作成しようとしているテーブルを提供することを拒否します。これが実際の例です(関連するスレッドから採用):

library(sandwich)
set.seed(101)
dat<-data.frame(one=c(sample(1000:1239)),
                two=c(sample(200:439)),
                three=c(sample(600:839)),
                Jan=c(rep(1,20),rep(0,220)),
                Feb=c(rep(0,20),rep(1,20),rep(0,200)),
                Mar=c(rep(0,40),rep(1,20),rep(0,180)),
                Apr=c(rep(0,60),rep(1,20),rep(0,160)),
                May=c(rep(0,80),rep(1,20),rep(0,140)),
                Jun=c(rep(0,100),rep(1,20),rep(0,120)),
                Jul=c(rep(0,120),rep(1,20),rep(0,100)),
                Aug=c(rep(0,140),rep(1,20),rep(0,80)),
                Sep=c(rep(0,160),rep(1,20),rep(0,60)),
                Oct=c(rep(0,180),rep(1,20),rep(0,40)),
                Nov=c(rep(0,200),rep(1,20),rep(0,20)),
                Dec=c(rep(0,220),rep(1,20))) 
model <- lm(one ~ two + three + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec, data=dat)
summary(model)
model$se <- vcovHC(model)

library('apsrtable')
apsrtable(model, se='robust')

このコードを実行すると、

> apsrtable(model, se='robust')
Error in s$coefficients[, 3] <- tval <- est/x$se : 
  number of items to replace is not a multiple of replacement length
In addition: Warning message:
In est/x$se :
  longer object length is not a multiple of shorter object length

私が知る限り、このエラーlength(sqrt(diag(model$se)))は14であり、length(coefficients(model))は15であるために発生します。つまり、分散共分散行列の対角線上に標準エラーよりも多くの係数があります(パッケージのソースコードの関連ビットaprstableも参照してください)。

これを修正する簡単な方法はありますか?NAの行と列を分散共分散行列の適切な場所に挿入してから、apsrtable()おそらくに渡しますか?もっとエレガントなものはありますか?

4

1 に答える 1

3

これは簡単な修正でした。coef(model)はNAを含むものを返しますが、coef(summary(model))はsummaryのcoefを返します。すぐにcranに更新を送信しますが、https://github.com/malecki/apsrtableのパッケージが更新されます。

于 2013-05-16T01:37:27.633 に答える