2017-11-22 6 views
0

次のコードを実行していますが、エラーメッセージが表示され続けます。コードはISLRのウェブサイトからのものです。リッジ実行時のラムダエラー

library(ISLR) 
Hitters=na.omit(Hitters) 
x=model.matrix(Salary~.,Hitters)[,-1] 
y=Hitters$Salary 
library(glmnet) 
ridge.mod=glmnet(x,y,alpha=0,lambda=grid) 

エラーメッセージ:

Error in lambda < 0 : comparison (3) is possible only for atomic and list types 

私は本当に任意の助けをいただければ幸いです。ありがとう!

答えて

0

あなたの問題はここにある:

ridge.mod=glmnet(x,y,alpha=0,lambda=grid) 

グリッドは(「?グリッド」をしてみてください)Rの関数の名前ですが、glmnetはラムダ値のベクトルを期待しています。

あなたはラムダ配列を提供せずにglmnetを実行した場合、glmnetライブラリはラムダを選択する独自のヒューリスティックを使用しています:

ridge.mod=glmnet(x,y,alpha=0) 

あなたはまた、独自のシーケンスを提供することができます。

ridge.mod=glmnet(x,y,alpha=0, lambda=seq(10, 1000, 1)) 

けどglmnetヘルプそれに対して助言する。

ラムダユーザが提供するラムダシーケンス。典型的な使用方法は、 プログラムがnlambdaと のlambda.min.ratioに基づいて独自のラムダシーケンスを計算することです。ラムダの値を指定するとこれがオーバーライドされます。警告: 注意して使用してください。ラムダには単一の値を指定しないでください(代わりにCVを使用した後の 予測の場合)。代わりに、 ラムダ値のシーケンスが減少します。 glmnetはその暖かさに頼っています スピードが始まり、それはしばしば が単一の適合を計算するよりも全体のパスにフィットする方が速いです。

(上記 '1)配列(10、1000年には、' 正しい構文を示すための単なる一例であることに注意してください。)

+0

、そんなにオットーをありがとうございます!それは本当に私のパズルを解決します。 –

+0

お手伝いいただきありがとうございます。また、Stack Overflowへようこそ!私の答えがあなたの問題を解決した場合は、それを合格とマークしてください。 :) –

+0

ありがとう、オットー!私は上矢印をクリックしました。残念ながら、私の評判が低いため、公に表示されません。それについて申し訳ありません! –