0

Amelia R パッケージを使用して欠損値を代入しようとしています。私の問題は、可能な値が代入しようとしている他の変数に依存している変数を代入しようとしていることです。例: 私は閉経時の年齢を帰属させようとしていますが、女性が閉経後かどうかについても帰属しています. 女性が閉経前の場合、閉経年齢は適用されません/常に 888. (どのように) R でこれを行うことができますか?

Stata の同様の関数の例を見つけました: conditional()、Stata のヘルプ ページ: http://www.stata.com/stata12/multiple-imputation/#conditional 私は Stata にアクセスできませんが、私がやりたいことを正確に示しています。助けていただければ幸いです。

編集:

今回はデータを使用した別の例: 喫煙状態 (1 = まったく喫煙しない、2 = 元喫煙者、3 = 現在喫煙者) とパック年数 (= 1 日の平均パック数×喫煙年数) の両方を帰属させたい場合)、次に、アメリアが喫煙者ではない人に0を超えるパック年を帰属させたくありません.. データの例:

structure(list(id = 1:20, smoking = c(NA, 1L, 1L, 1L, 2L, 3L, NA, 2L, 1L, 2L, NA, 2L, 2L, NA, 2L, 2L, NA, 3L, NA, NA), packyears = c(NA, 0, 0, 0, 20, 40, NA, 30, 0, 15, NA, 20, 25, NA, 10, 15, NA, 40, NA, NA)), .Names = c("id", "smoking", "packyears"), row.names = c(NA, -20L), class = "data.frame") 

今私は実行します:

a.out<-amelia(df, m=5, idvars=c("id"), noms=c("smoking"))

しかし、その後、アメリアは非喫煙者のパックイヤーにゼロ以外の値を代入する可能性がありますが、これは実際には不可能です..これがこのサンプルデータセットの結果になるかどうかはわかりませんが、私の実際のデータセットでは不可能な値が発生しました.より多くの共変量がある場合 (上記の例を参照)。

4

2 に答える 2

1

ドキュメントに基づいて、amelia()関数に興味があるようです。ifelse()または同様の条件を使用してから呼び出すことができますamelia()か?

より良い応答のために、いくつかのデータまたは例を投稿していただけますか?

于 2013-10-17T17:27:34.617 に答える
0

bounds引数 to を使用しamelia()て、代入に論理的な境界を課すことができます。このビネットはそれを説明しています。

于 2015-06-15T10:19:07.463 に答える