2017-12-01 43 views
0

ポアソン回帰モデルを構築した後、Rの予測関数を使用して予測を作成できます。私はRで設定した私の新しいデータでうまくいっていません。ポアソン回帰の予測、Rのデータフレーム(エラー:引数は行の数が異なることを意味する)

newdata <- data.frame(
    patient = mean(myd$patient), 
    hypertensive = factor(1:4, levels = 1:4, labels = levels(myd$hypertensive)), 
    PCOS = factor(1:2, levels = 1:2, labels = levels(myd$PCOS)), 
    age = factor(1:3, levels = 1:3, labels = levels(myd$age)), 
    miscarriage = factor(1:2, levels=1:2, labels = levels(myd$miscarriage))) 

Error in data.frame(patient = mean(myd$patient), hypertensive = factor(1:4, : arguments imply differing number of rows: 1, 4, 2, 3

+1

"畳み込まれた" 'factor'宣言はなぜですか?どうしてあなたはちょうど例えばしないのですか? '高血圧= as.factor(myd $高血圧)'など? –

+2

また、あなたの質問とタイトルはポアソン回帰とは関係ありません。 –

+2

'data.frame'の代わりに' expand.grid'を試してください。 –

答えて

0

@Nealフルツとして使用expand.gridは書いています。変数の長さは、data.frameの引数に2〜4の長さを持つ必要があります。

更新

誰かが私の答えをdownvotedなぜ私は知らないが、私はそれクリスタルクリアにするためにここに私の答えを展開します。問題は、data.frameへの入力引数が異なる長さを持つことです。

> # create data example 
> myd <- data.frame(
+ # NOTICE: I assume that your patient covariate is continuous -- otherwise I 
+ #   do not get why you would take a mean 
+ patient  = 1:12, 
+ # here are the factors 
+ hypertensive = rep(letters[1:4], 3), 
+ PCOS   = rep(letters[1:2], 6), 
+ age   = rep(letters[1:3], 4), 
+ miscarriage = rep(letters[1:2], 6) 
+) 
> myd # show data 
    patient hypertensive PCOS age miscarriage 
1  1   a a a   a 
2  2   b b b   b 
3  3   c a c   a 
4  4   d b a   b 
5  5   a a b   a 
6  6   b b c   b 
7  7   c a a   a 
8  8   d b b   b 
9  9   a a c   a 
10  10   b b a   b 
11  11   c a b   a 
12  12   d b c   b 
> 
> # your issue is that the length you pass to data.frame differs 
> length(factor(1:4, levels = 1:4, labels = levels(myd$hypertensive))) 
[1] 4 
> length(factor(1:2, levels = 1:2, labels = levels(myd$PCOS))) 
[1] 2 
> 
> # however, you can use expand.grid 
> newdata <- expand.grid(
+ patient = mean(myd$patient), 
+ hypertensive = factor(1:4, levels = 1:4, labels = levels(myd$hypertensive)), 
+ PCOS = factor(1:2, levels = 1:2, labels = levels(myd$PCOS)), 
+ age = factor(1:3, levels = 1:3, labels = levels(myd$age)), 
+ miscarriage = factor(1:2, levels=1:2, labels = levels(myd$miscarriage))) 
> 
> # it will have many examplse though 
> nrow(newdata) 
[1] 48 
+0

迅速な対応に感謝します。あなたの説明は私にはっきりと分かります。 –

+0

お寄せいただきありがとうございます。質問に答えた場合は、[承諾]ボタンをクリックして質問を終了してください。 –

関連する問題