Vấn đề được đề cập trong câu hỏi này được khắc phục trong phiên bản 1.7.3 của gói glmnet R.
Tôi đang gặp một số vấn đề khi chạy glmnet với gia đình = đa quốc gia và đang tự hỏi đã gặp phải điều gì đó tương tự hoặc có thể cho tôi biết tôi đang làm gì sai.
Khi tôi đặt dữ liệu giả của mình vào, lỗi "Lỗi khi áp dụng (nz, 1, trung vị): dim (X) phải có độ dài dương" được báo cáo khi tôi chạy cv.glmnet
, ngoài việc nói "nó không hoạt động" không phải là rất nhiều thông tin cho tôi.
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
Đây là một mô tả trực quan về vấn đề tôi đã cố gắng để có được glmnet để giải quyết, nếu điều đó giúp:
my_colours = c('red','green','blue')
plot(x[,1],x[,2],col=my_colours[y])
Tôi có thể chạy mã ví dụ từ các tài liệu gói, điều này khiến tôi nghi ngờ rằng tôi đang hiểu nhầm điều gì đó hoặc có lỗi trong 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")
Đây là sử dụng phiên bản R 2.13.1 (2011-07-08) và glmnet 1.7.1, mặc dù tôi có thể tạo ra vấn đề tương tự trên R 2.14.1. Mọi người có ý kiến gì không?