2016-10-24 1 views
0

は私のコードは

library(ISLR) 
attach(Weekly) 

train = (Weekly$Year < 2009) 
Weekly.0910 = Weekly[!train, ] 

glm.fit3 = glm(Direction ~ Lag2, data = Weekly, family = binomial, subset = train) 
glm.fit4 = glm(Weekly$Direction ~ Weekly$Lag2, data = Weekly, family = binomial, subset = train) 

glm.probs3 = predict.glm(glm.fit3, Weekly.0910, type = "response") 
glm.pred3 = rep("Down" length(glm.probs3)) 
glm.pred3[glm.probs3 > 0.5] = "Up" 

Direction.0910 = Direction[!train] 
conf_mat2 = table(glm.pred3, Direction.0910) 

で上記のコードは期待通りに動作しますが、私が代わりにglm.fit4を使用する場合(そのはglm.fit3と同一である必要がありますが)、Rプログラミング - ここで式パラメータでのドル記号でGLMを使用して問題

A:glm.fit4glm.fit3への参照を交換し、その後、私は、テーブルでこのエラー

エラー(glm.pred4、Direction.0910)を取得しますLL引数はまた、同じ長さ

を持っている必要があります:警告メッセージ:

'NEWDATA' が見つかり104行が、変数は1089行のコード、感謝を更新

+2

はい、数式にドル記号を使用しないでください。 'glm'は' data'引数を持っていますので、 '$'は必要ありません。また、「添付」しないでください。 – Gregor

+0

Rスタジオでソース(program_name.R)を使ってこれを実行すると、attach関数を使用する必要がありますか?代わりのもの – FatTail

+2

私はあなたが誤解しているかもしれないと思います。 'data'引数(すなわち' data = Weekly')を持つ関数の全ポイントは、列の名前に関して式を完全に指定することができ、Rはそのデータフレーム内の列を検索します。必要に応じて、文字ベクトルから数式を構築できますが、決して 'data $ y〜data $ x、data = data'を実行する必要はありません。 – joran

答えて

0

を持っていました。

library(ISLR) 
train = (Weekly$Year < 2009) 
Weekly.0910 = Weekly[!train, ] 
glm.fit = glm(Direction ~ Lag2, data = Weekly, family = binomial, subset = train) 
glm.probs = predict.glm(glm.fit,newdata= Weekly.0910, type = "response") 
glm.pred = rep("Down", length(glm.probs)) 
glm.pred[glm.probs > 0.5] = "Up" 
Direction.0910 = Weekly$Direction[!train] 
conf_mat = table(glm.pred, Direction.0910) 
関連する問題