2016-09-11 3 views
-4

予期しない予測を生成しようとしていますが、次のコードを実行した後にこのメッセージが表示されます。Error: variable 'dummygen' was fitted with type "numeric" but type "factor" was suppliedデータフレームのセットアップとクリーニングでエラーが発生しました。R

私はstrを調べて、私が使用している2つの変数が数値であるかどうかを確認しました。私はここで狩りを行い、thisはやや関連性があるかもしれないと思っていますが、私は仕事の提案を得ることができませんでした。

これまでのコードは次のとおりです。

library(foreign) 
library(plyr) 
library(rvest) 
library(stringi) 
library(purrr) 
library(XLConnect) 
library(splitstackshape) 
library(tidyr) 
library(dplyr) 

donner_raw <- read.csv("donner.txt", sep="\t", header = FALSE) 
colnames(donner_raw) <- c("age_gen", "survive") 

donner_raw <- separate(donner_raw, age_gen, into = c("age", "gender"), "(?<=\\d)(?=[A-Za-z])") 

logit <- glm(survive ~ age + dummygen,family=binomial(link='logit'),data=donner_raw) 

newlogit <- data.frame(age=seq(1,6, length=20), dummygen=("0")) 
ooslogit <- predict.glm(logit, newlogit, se.fit=TRUE) 

私がやったことがどこでうまくいかなかったのか分かりません。ここにはデータの再現可能な部分があります。

dput(droplevels(head(donner_raw))) 
structure(list(age = structure(c(6L, 4L, 5L, 3L, 2L, 1L), .Label = c("13", "3", "4", "45", "6", "60"), class = "factor"), gender = c("M", "F", "F", "F", "F", "F"), dummygen = structure(c(2L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")), .Names = c("age", "gender", "survive", "dummygen"), row.names = c(NA, 6L), class = "data.frame") 
+0

ちょうどそれを一致させるために予測データにおける変数のクラスを変更。 'as.numeric'を使うことができます。 'dput'には何か問題がありますが、クラスが' factor 'であることが分かります。クラスを変更するだけです。 –

+0

@ SamMarshal私の答えを読んでください。 – joran

+0

なぜ最後の投稿を削除してこれを再投稿しましたか? –

答えて

0

のは、単に読み、エラーメッセージについて考えてみましょう:

Error: variable 'dummygen' was fitted with type "numeric" but type "factor" was supplied

このエラーは、行の後に発生します。

ooslogit <- predict.glm(logit, newlogit, se.fit=TRUE) 

(おそらく、少なくとも、あなたが質問ISNだからこれについてはっきりしていないし、関連していないようなコードをたくさん提供している。)

だから、Rはyoモデルがの場合、の変数dummygenは数字でしたが、となりました。

それでは見てみましょう:

str(newlogit) 
'data.frame': 20 obs. of 2 variables: 
$ age  : num 1 1.26 1.53 1.79 2.05 ... 
$ dummygen: Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ... 

うん!

だからあなたの問題は、あなたが不可解に指定することで、データフレームnewlogitを作成したということであった:

newlogit <- data.frame(age=seq(1,6, length=20), dummygen=("0")) 

明確は、変数dummygenが数値であることを行っていないことを指定し。それを元に戻すか、最初の引用符を削除してください。たとえば、次のように

newlogit <- data.frame(age=seq(1,6, length=20), dummygen= 0) 

または

newlogit$dummygen <- as.numeric(newlogit$dummygen) 
+0

問題は ""でした。私はこれに6時間を費やして以来、それは信じられないほど迷惑で、それ以上です。ロジックを歩いてくれてありがとうございました。それは間違いなく私はうまくいけないこと間違いです! –

関連する問題