多重補完されたデータセットを組み合わせるためのルービンのルールの適用


8

多重に代入されたデータ(たとえば、重回帰分析、分散分析)に対して実行されたかなり基本的な分析セットの結果をプールしたいと思っています。複数の代入と分析はSPSSで完了していますが、SPSSはF値、共分散行列、R二乗などを含むいくつかの統計のプール結果を提供しません。

私は、Rに挑戦するか、利用可能なマクロを試してこの問題に対処するためにいくつかの試みを行いましたが、問題を正常に解決していません(たとえば、マウスで5つ以上の代入の統計をプールすることで問題が発生するなど)。

この時点で、SPSSが生成する出力を使用して、Rubinのルールを適用し、これらを手動で計算してみたいと思います。ただし、SPSSが生成する出力に基づいて、代入内の分散()をどのように導出できるかわかりません。 U¯=1mj=1mUj

これについての詳細な説明を本当にいただければ幸いです。


その式の記号が何を意味するのか疑問に思っているだけですか?SPSS出力でが何を表すか知っていますか?U
gung-モニカの回復

特にANOVA出力の場合(線形回帰の一部として)、二乗和、df、および二乗平均と共にF統計が報告されます。私は特に、F統計量の内挿分散成分を計算する方法を理解しようとしています。
user81715 2015

回答:


8

ルービンの規則は、正規分布に従うパラメーターにのみ適用できます。Fまたはカイ二乗分布のパラメーターの場合、異なる式のセットが必要です。

  • アリソン、PD(2002)。データがありません。カリフォルニア州ニューベリーパーク:セージ。

複数の帰属データセットに対して分散分析を実行するには、Rパッケージのmouseadds(pdf ; miceadds::mi.anova)を使用できます。

アップデート1

以下は完全な例です。

  1. SPSSからRにデータをエクスポートします。Spssでデータセットを.csvとして保存します

  2. データセットを読み取ります。

    library(miceadds)   
    dat <– read.csv(file='your-dataset.csv')
    

    が従属変数であり、2つの要因があると仮定しましょうreading

    • 性別、男性= 0、女性= 1
    • 治療、コントロール= 0および「受けた治療」= 1

    次に、それらを因子に変換します。

    dat$gender    <- factor(dat$gender)
    dat$treatment <- factor(dat$treatment)
  3. ここでは、最初の変数が代入番号(SPSSのImputation_)を保持していると想定して、データセットをmidsオブジェクトに変換します。

    dat.mids <- as.mids(dat)
  4. これで、分散分析を実行できます。

    fit <- mi.anova(mi.res=dat.mids, formula="reading~gender*treatment", type=3)
    summary(fit)
    

Update 2 これは2番目のコメントへの返信です。

あなたがここで説明することはSPSSとR.との間でデータのインポート/エクスポートに関連する問題は、インポートしようとすることができている.savRに直接ファイルをし、そのための専用のパッケージの束がありますforeignriogdataHmisc、などのI CSV-方法を好みます、しかしそれは好みの問題であり、そして/またはあなたの問題の性質に依存します。たぶん、YouTubeやインターネット上の他のソースのいくつかのチュートリアルも確認する必要があります。

library(foreign)
dat <- read.spss(file='path-to-sav', use.value.labels=F, to.data.frame=T)

Update 3 これは最初のコメントへの返信です。

はい、SPSSで分析を行い、F値をプールすることができますmiceadds(この例はmiceadds::micombine.Fヘルプページから取得したものであることに注意してください)。

library(miceadds)
Fvalues <- c(6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78, 
             6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78 )
micombine(Fvalues, df1=4)

提案ありがとう。私は実際にmouseaddsを試しましたが、遭遇した1つの問題は、マウスがデフォルトで読み取るようにプログラムされている5つだけではなく、20個すべての帰属データセットのF値をプールすることでした(私は信じています)。SPSS出力から取得した20個のf値をすべて入力してみて、マウスを使用してこれらの推定値をプールしました。この方法は受け入れられますか(SPSSでの補完、マウスでのこれらの推定値のプールなど)。20のすべての代入をMICEで読むことができる方法があれば、感謝します。再度、感謝します!
user81715

完全な例で回答をspssからmouseaddsに更新しました。
トーマス

ありがとうございました。これを実行してみて、結果をフォローアップしたいと思います!
user81715

ちなみに、マウスは何回の転置に限定されていません。私はm> 20の転置を伴うマウスをよく使用します。マウスはデフォルトですべてのステップがパッケージスコープ内で実行されると想定しているため、SPSSから推定値を取得してマウスにプールすることは困難で面倒です。私の回答が役に立った場合は、正解または賛成票としてタグ付けしてください。
トーマス

> dat IV1)Error in (、 "IV1"、value = integer(0)):replace has 0 rows、data has 10> dat.mids = as.mids(dat)Error in mouse(data [ data [、.imp] == 0、-c(.imp、.id)]、m = max(as.numeric(data [、:データには少なくとも2つの列が含まれている必要があります> fit = mi.anova(mi.res = dat.mids、formula = "DV〜IV1 * IV2 * INT"、type = 3)summary(fit)Error: "fit = mi.anova(mi.res = dat.mids、formula =" DV〜 IV1 * IV2 * INT "、type = 3)summary">IV1=factor(dat$<-.data.frame*tmp*
user81715

7

あなたはプールされた推定量を正しく書き留めました:

U¯=1mi=1mUi

ここで、は番目の帰属データセットからの分析結果を表します。通常、分析結果には、いくつかの正規近似分布があり、そこから推論を引き出したり、信頼限界を作成したりします。これは主に平均値()とその標準誤差を使用して行われます。T検定、線形回帰、ロジスティック回帰、および基本的にほとんどの分析は、その値とその標準誤差に関して適切に要約できます。UiiUiUise(Ui)

ルービンの規則では、分散の合計の法則を使用して、分散との間の代入分散の合計として分散を書き留めます。

var(U¯)=E[var(U¯|Ui)]+var(E[U¯|Ui])

最初の項は、のような分散内で、は分散です番目の完全または帰属データセットからの分析結果の。後者の項は、補完間の分散です:。ここでDF修正を完全に把握したことはありませんが、これは基本的に受け入れられているアプローチです。E[var(U¯|Ui)=1mi=1mViViivar(E[U¯|Ui])=M+1M1i=1m(UiU¯)2

とにかく、推奨される代入の数は少ないので(Rubinはわずか5を示唆しています)、通常、各分析を手作業で当てはめることでこの数を計算することが可能です。手動での例を以下に示します。

require(mice)
set.seed(123)
nhimp <- mice(nhanes)
sapply(1:5, function(i) {
  fit <- lm(chl ~ bmi, data=complete(nhimp, i))
  print(c('coef'=coef(fit)[2], 'var'=vcov(fit)[2, 2]))
})

次の出力が表示されます。

coef.bmi      var 
2.123417 4.542842 
3.295818 3.801829 
2.866338 3.034773 
1.994418 4.124130 
3.153911 3.531536

したがって、分散内では、補完特定ポイント推定分散の平均:3.8(2番目の列の平均)になります。間の分散は、最初の列の0.35分散です)。DF補正を使用して、分散4.23を取得します。これはpoolmiceパッケージで指定されたコマンドと一致します。

> fit <- with(data=nhimp,exp=lm(chl~bmi))
> summary(pool(fit))
                  est        se        t       df   Pr(>|t|)     lo 95      hi 95 nmis       fmi     lambda
(Intercept) 119.03466 54.716451 2.175482 19.12944 0.04233303  4.564233 233.505080   NA 0.1580941 0.07444487
bmi           2.68678  2.057294 1.305978 18.21792 0.20781073 -1.631731   7.005291    9 0.1853028 0.10051760

これは、モデル係数のSE = 2.057を示しています(分散= SE ** 2 = 4.23)。

帰属データセットの数を増やすと、特定の問題がどのように発生するかはわかりません。エラーの例を提供できない場合、どのように役立つかわかりません。しかし、手動の組み合わせは、さまざまなモデリング戦略に対応するのに確実です。

このペーパーでは、総分散の法則がプールされた推定値の分散の他の推定値を導き出すことができる他の方法について説明します。特に、著者はルービンのルールに必要な仮定は点推定の正規性ではなく、相性と呼ばれるものであることを(正しく)指摘しています。WRTの正規性、回帰モデルから得られるほとんどの点推定は、中心極限定理の下で急速に収束し、ブートストラップはこれを示します。


3.8(各帰属データセットの分散推定の平均)および0.35(5つのデータセットそれぞれの係数推定の分散)からどのようにして4.23になったかを説明できますか?ステップがありません。
llewmills

1
(1+1/m)(m1)/(m+1)

@AdamOさん、ありがとうございます。あなたはを意味すると思いますm+1m1+1mpool(fit)

私はあなたがp値@AdamO をプールするための式を知っているとは思いませんか?
llewmills 2018

1
@llewmillsなぜ5つのp値を計算するのですか?あなたは総平均と総SEを持っているので、それらを組み合わせて、多重代入分析の1つのp値を計算します。
AdamO 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.