0

私は初心者のRユーザーです。Zeligバージョン4.1-3とAmeliaIIバージョン1.7をインストールしました。Rパッケージと関数を使用して、結合された多重代入データの自由度、t統計量、およびf値を取得する方法に戸惑っています。

まず、AmeliaとZeligをロードしました。

require(Amelia)
require(Zelig)

次に、Ameliaに付属のサンプルデータをロードしました。

data(freetrade)

amelia関数を使用して、このデータセットに対して5つの代入を作成しました。

a.out <- amelia(freetrade, m = 5, ts = "year", cs = "country")  

次に、代入を組み合わせるために、zelig関数を使用しました。

z.out.imp <- zelig(tariff ~ polity + pop + gdp.pc + year + country, 
     data = a.out$imputations, model = "ls" )

ただし、このコードを使用したときに、結合されたセットの係数ではなく、個々の代入の係数のように見える係数を取得しました。

summary(z.out.imp)

それらは次のとおりでした:

Coefficients:
                           Value   Std. Error     t-stat      p-value
(Intercept)         2.766176e+03 6.670110e+02  4.1471215 0.0003572868
polity              1.645011e-01 3.078134e-01  0.5344183 0.5938286336
pop                -6.079963e-08 6.518429e-08 -0.9327345 0.3774275934
gdp.pc             -4.246794e-04 1.945866e-03 -0.2182470 0.8319093062
year               -1.335563e+00 3.519513e-01 -3.7947390 0.0009787456
countryIndonesia   -7.000319e+01 4.646330e+01 -1.5066343 0.1700377061
countryKorea       -8.643855e+01 4.671629e+01 -1.8502870 0.0926657863
countryMalaysia    -8.815182e+01 5.389486e+01 -1.6356256 0.1393312364
countryNepal       -8.215250e+01 5.475828e+01 -1.5002753 0.1702129176
countryPakistan    -4.349869e+01 5.149729e+01 -0.8446791 0.4238033944
countryPhilippines -8.088975e+01 5.320694e+01 -1.5202857 0.1673234716
countrySriLanka    -7.668840e+01 5.695485e+01 -1.3464771 0.2161986616
countryThailand    -7.400481e+01 5.186395e+01 -1.4269026 0.1903428838

アメリアのマニュアルには、Rを使用してすべての係数を取得する方法についての説明はありませんが、結合された多重代入データセットの係数の一部がどのようになるかが示されています(http://cran.r-project.org/web/の46ページを参照)。 packages / Amelia / vignettes / amelia.pdf

Complete DF = 167
DF:   min   = 10.36
      avg   = 18.81
      max   = 37.62
F( 2, 10.4) = 15.50
Prob > F    = 0.0008


                    Value        Std. Error     t-stat       p-value
polity             -0.206        0.39            -0.53       0.61 
pop                -3.21 e-08    8.72e-09         3.68       0.004
gdp.pc             -0.0027       0.000644        -4.28       0.000
Intercept           32.7         2.66            12.29       0.000

アメリア関数はモンテカルロシミュレーションを使用するため、実行間のわずかな違いが予想されます。ただし、切片の大きな違いは、zelig関数が結合されたセット以外のものの回帰統計を返すという手がかりでした。

アメリアのマニュアルには、次のコードが記載されています。

> b.out <-NULL
> se.out <-NULL
> for(i in 1:a.out$m){
+ ols.out <- lm(tariff ~ polity + pop + gdp.pc, data = a.out$imputations[[i]])
+ b.out <- rbind(b.out, ols.out$coef)
+ se.out <-rbind(se.out, coef(summary(ols.out))[,2])
+ }
> combined.results<-mi.meld(q=b.out, se = se.out)
> combined.results

使ってみました。返される結果は、46ページに示されている値と標準誤差に非常に近いものです。

$q.mi
     (Intercept)     polity          pop       gdp.pc
[1,]    33.17325 -0.1499587 2.967196e-08 -0.002724229

$se.mi
     (Intercept)   polity          pop       gdp.pc
[1,]    2.116721 0.276968 6.061993e-09 0.0006596203

ただし、t統計、自由度、またはf値は含まれていません。

手動計算を行わなくても自由度、t統計量、およびf値を取得できるように、Rで利用可能なオープンソースのパッケージまたは関数はありますか?

ありがとう。

4

1 に答える 1

1

これは、あなたの問題を再現するための私の試みの注釈と編集されたトランスクリプトです:

> library(Zelig)

ZELIG (Versions 4.1-3, built: 2013-01-30)

> a.out <- amelia(freetrade, idvars="country", m = 5)
Error: could not find function "amelia"

私が抱えていた最初の問題は、Ameliaパッケージをロードする必要があるとあなたが言っていないことです。それを修正した後、私は最初の行を実行しようとしました:

> library(Amelia)
## (Version 1.7, built: 2013-02-10)
> a.out <- amelia(freetrade, idvars="country", m = 5)
Error in amelia(freetrade, idvars = "country", m = 5) : 
  object 'freetrade' not found

フリートレードデータの取得方法を言わなかったため、これは失敗します。ここで推測する:

> data(freetrade)
> a.out <- amelia(freetrade, m = 5)
Amelia Error Code:  38 
 The following variable(s) are characters: 
     country
You may have wanted to set this as a ID variable to remove it
from the imputation model or as an ordinal or nominal
variable to be imputed.  Please set it as either and
try again. 

amelia関数に文字変数をどう処理するかを指示する必要があるため、この例は機能しません。そこで、実際に実行される例を取得するために、例を変更しました。

> a.out <- amelia(freetrade, idvars="country", m = 5)
> z.out.imp <- zelig(tariff ~ polity + pop + gdp.pc + year + country, 
+      data = a.out$imputations, model = "ls")

結果を実行summaryすると、結合されたモデル統計が得られます。」

# This part works just fine.
> summary(z.out.imp)

  Model: ls
  Number of multiply imputed data sets: 5 

Combined results:

Call:
lm(formula = formula, weights = weights, model = F, data = data)

Coefficients:
                           Value   Std. Error     t-stat      p-value
(Intercept)         3.294715e+03 6.425487e+02  5.1275725 1.330807e-05
polity              2.761343e-01 3.354271e-01  0.8232319 4.145813e-01
pop                -6.443769e-08 5.526885e-08 -1.1658953 2.659143e-01
gdp.pc              4.549885e-04 1.354139e-03  0.3359984 7.382138e-01
year               -1.599422e+00 3.306932e-01 -4.8365739 2.649602e-05
countryIndonesia   -7.396526e+01 4.112206e+01 -1.7986760 1.009329e-01
countryKorea       -9.673542e+01 5.036909e+01 -1.9205317 8.713903e-02
countryMalaysia    -9.271187e+01 4.998836e+01 -1.8546690 9.424041e-02
countryNepal       -8.863525e+01 4.920061e+01 -1.8015072 9.990792e-02
countryPakistan    -4.789370e+01 4.362907e+01 -1.0977475 2.960914e-01
countryPhilippines -8.548672e+01 4.662372e+01 -1.8335456 9.533829e-02
countrySriLanka    -8.446560e+01 4.939918e+01 -1.7098586 1.170170e-01
countryThailand    -8.026702e+01 4.741244e+01 -1.6929529 1.213329e-01

For combined results from datasets i to j, use summary(x, subset = i:j).
For separate results, use print(summary(x), subset = i:j).

要するに、あなたの例で私のために働く唯一のものは、あなたがあなたのために働かないとあなたが主張する唯一のものです。現時点では問題を解決するのに役立つ十分な情報がないため、正確に何をしたか、正確に何が起こったかを示すコードと出力を投稿してください。

于 2013-03-24T14:49:02.213 に答える