8

何らかの理由で、glms を指定すると (そして lm も同様であることが判明しました)、R はデータの欠損値を予測していません。次に例を示します。

y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = glm(y~x, family=binomial(link="logit"))
p = predict(m,na.action=na.pass)
length(p)

y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = lm(y~x)
p = predict(m)
length(p)

p の長さは 100 である必要がありますが、50 です。奇妙なことに、欠落データから予測する同じスクリプトに他の予測があることです。

編集: 他の予測はかなり間違っていたことが判明しました - 私はimputed.value = rnorm(N,mean.from.predict,var.of.prediction.interval). これにより、 lm predict または glm predict 関数の mean および sd ベクトルがlength(predict)<N利用されました。これは、私が求めていたものとはまったく異なります。

だから私の質問は、glm と lm が欠落している値を予測するのを止めている私のコード例はどうなっているのですか?

ありがとう!

4

3 に答える 3

6

問題は、に設定されている引数をglm持つ への呼び出しにありますna.actionna.omit

したがって、これらの値は省略されます (また、predict.glmが呼び出された場合も省略されます)。

から?glm

ナ・アクション

データに NA が含まれている場合に何が起こるかを示す関数。デフォルトは、オプションの na.action 設定によって設定され、設定されていない場合は na.fail です。'factory-fresh' のデフォルトは na.omit です。別の可能な値は NULL、アクションなしです。値 na.exclude が役立ちます。

から?na.exclude(一般的なNAアクションヘルプページです)

na.exclude と na.omit の違いは、結果の "na.action" 属性のクラス、つまり "exclude" だけです。これにより、naresid と napredict を使用する関数で異なる動作が得られます。na.exclude を使用すると、na.exclude で省略された場合に NA を挿入することで、残差と予測が正しい長さまでパディングされます。

于 2013-04-29T00:11:04.530 に答える