6

lars パッケージを使用してなげなわ回帰を実行しようとしていますが、lars ビットを機能させることができないようです。コードを入力しました:

diabetes<-read.table("diabetes.txt", header=TRUE)
diabetes
library(lars)
diabetes.lasso = lars(diabetes$x, diabetes$y, type = "lasso")

ただし、次のエラー メッセージが表示されます: rep(1, n) のエラー: 無効な「回」引数。

次のように入力してみました。

diabetes<-read.table("diabetes.txt", header=TRUE)
library(lars)
data(diabetes)
diabetes.lasso = lars(age+sex+bmi+map+td+ldl+hdl+tch+ltg+glu, y, type = "lasso")

しかし、次のエラー メッセージが表示されます。

どこが間違っていますか?

編集: データ - 以下のとおりですが、さらに 5 つの列があります。

             ldl          hdl          tch          ltg          glu
1   -0.034820763 -0.043400846 -0.002592262  0.019908421 -0.017646125
2   -0.019163340  0.074411564 -0.039493383 -0.068329744 -0.092204050
3   -0.034194466 -0.032355932 -0.002592262  0.002863771 -0.025930339
4    0.024990593 -0.036037570  0.034308859  0.022692023 -0.009361911
5    0.015596140  0.008142084 -0.002592262 -0.031991445 -0.046640874
4

2 に答える 2

4

lars::larsには数式インターフェイスがないようです。つまり、列名に数式仕様を使用することはできません (さらに、"data=" 引数を受け入れません)。このトピックやその他の「データ マイニング」トピックの詳細については、古典的なテキスト「Elements of Statistical Learning」のコピーを入手することをお勧めします。これを試して:

# this obviously assumes require(lars) and data(diabetes) have been executed.
> diabetes.lasso = with( diabetes, lars(x, y, type = "lasso"))
> summary(diabetes.lasso)
LARS/LASSO
Call: lars(x = x, y = y, type = "lasso")
   Df     Rss       Cp
0   1 2621009 453.7263
1   2 2510465 418.0322
2   3 1700369 143.8012
3   4 1527165  86.7411
4   5 1365734  33.6957
5   6 1324118  21.5052
6   7 1308932  18.3270
7   8 1275355   8.8775
8   9 1270233   9.1311
9  10 1269390  10.8435
10 11 1264977  11.3390
11 10 1264765   9.2668
12 11 1263983  11.0000
于 2013-01-07T19:56:00.817 に答える
4

混乱の一部は、パッケージにdiabetes付属するデータ セットが通常とは異なる構造を持っているという事実に関係している可能性があると思います。lars

library(lars)
data(diabetes)
sapply(diabetes,class)
##        x         y        x2 
##   "AsIs" "numeric"    "AsIs" 

sapply(diabetes,dim)
## $x
## [1] 442  10
## 
## $y
## NULL
## 
## $x2
## [1] 442  64

つまり、それ自体が行列であるdiabetes「列」を含むデータ フレームです。この場合、または正常に動作します。(しかし、R はデータ フレーム内で変数と変数を探すことを知らないため、そうしません。)with(diabetes,lars(x,y,type="lasso"))lars(diabetes$x,diabetes$y,type="lasso")lars(x,y,type="lasso")xydiabetes

ただし、独自のデータを読み込む場合は、次のように、応答変数と予測行列を自分で分離する必要があります。

X <- as.matrix(mydiabetes[names(mydiabetes)!="y",])
mydiabetes.lasso = lars(X, mydiabetes$y, type = "lasso")

または、使用できる場合があります

X <- model.matrix(y~.,data=mydiabetes)
于 2013-01-07T19:57:01.433 に答える