Masalah yang disebutkan dalam pertanyaan ini diperbaiki dalam versi 1.7.3 dari paket R glmnet.
Saya mengalami beberapa masalah menjalankan glmnet dengan keluarga = multinomial, dan bertanya-tanya telah menemukan sesuatu yang serupa atau mungkin dapat memberi tahu saya apa yang saya lakukan salah.
Ketika saya memasukkan data dummy saya sendiri, kesalahan "Kesalahan dalam menerapkan (nz, 1, median): redup (X) harus memiliki panjang positif" akan dilaporkan ketika saya menjalankan cv.glmnet
, yang selain mengatakan "itu tidak berhasil" tidak sangat informatif bagi saya.
y=rep(1:3,20) #=> 60 element vector
set.seed(1011)
x=matrix(y+rnorm(20*3*10,sd=0.4),nrow=60) # 60*10 element matrix
glm = glmnet(x,y,family="multinomial") #=> returns without error
crossval = cv.glmnet(x,y,family="multinomial") #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
crossval = cv.glmnet(x,y,family="multinomial",type.measure="class") #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
crossval = cv.glmnet(x,y,family="multinomial",type.measure="mae") #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
cvglm = cv.glmnet(x,y,family="multinomial",lambda=2) #=> Error in apply(nz, 1, median) : dim(X) must have a positive length
Berikut adalah deskripsi visual dari masalah yang saya coba dapatkan untuk diselesaikan oleh glmnet, jika itu membantu:
my_colours = c('red','green','blue')
plot(x[,1],x[,2],col=my_colours[y])
Saya dapat menjalankan kode contoh dari dokumen paket, yang membuat saya curiga bahwa saya salah memahami sesuatu atau ada bug di glmnet.
library(glmnet)
set.seed(10101)
n=1000;p=30
x=matrix(rnorm(n*p),n,p) #=> 1000*30 element matrix
beta3=matrix(rnorm(30),10,3)
beta3=rbind(beta3,matrix(0,p-10,3))
f3=x%*% beta3
p3=exp(f3)
p3=p3/apply(p3,1,sum)
g3=rmult(p3) #=> 1000 element vector
set.seed(10101)
cvfit=cv.glmnet(x,g3,family="multinomial")
Ini menggunakan versi R 2.13.1 (2011-07-08) dan glmnet 1.7.1, meskipun saya dapat menghasilkan masalah yang sama pada R 2.14.1. Ada ide orang?
sumber
Pertama-tama, konversikan matriks Anda
sumber