Ошибка в rep (1, N): неверный аргумент 'times' при попытке регрессии гребня с помощью cv.glmnet - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь выполнить регрессию гребня на большом наборе данных с 11 переменными предиктора. Я извлек все соответствующие переменные из своего набора данных CSV и установил их в виде матриц, чтобы библиотека glmnet могла получить к ним доступ. Я также разделил набор данных пополам, одна половина для обучения и одна половина для тестирования. Пытаясь запустить первую модель подбора теста, я продолжаю получать этот аргумент с кодом ошибки Error in rep(1, N) : invalid 'times', который не позволяет коду подойти с оптимальными значениями для лямбды, и он останавливается.

Основываясь на других постах, я проверил и убедился, что нет никаких столбцов или строк NA, в которых я читаю. Другие вопросы, которые я нашел касательно этой ошибки, похоже, не используют glmnet библиотека. Я также использую семейство "mgaussian", потому что я тестирую несколько переменных, но я попробовал стандартное семейство "gaussian", и он все еще имеет тот же код ошибки.

library(glmnet) #use the glmnet library to perfrom ridge regression
SWVars = read.csv(file.choose('SWData'), header = TRUE) #read the data into Rstudio
n = 11940 #length of dataset
x = as.matrix(SWVars[0:12]) #read the desired variables in as a matrix
y = as.matrix(SWVars[16:16]) #read the desired response variable in as a matrix 
train_rows = sample(1:n, 0.5*n) #randomly designate half of the data as training rows
x.train = x[train_rows] #designate half of indepdent variable data for training
x.test = x[-train_rows] #designate the other half of independent variable data for testing
y.train = y[train_rows] #designate half of the dependent variable data for training
y.test = y[-train_rows] #designate the other half of dependent variable data for testing
#Fit a training curve for the data using cv.glmnet, minimising MSE, and using the mgaussian famility for multiple regression
alpha0.fit = cv.glmnet(x.train,y.train, type.measure="mse", alpha=0, family="mgaussian")
structure(list(
Latitude = c(33.37648429, 33.58147205, 43.76802869, 
33.55658479, 44.36456222, 40.16155115, 45.77329011, 36.81228138, 
39.37683345, 34.4202345), 
ABSLt = c(33.37648429, 33.58147205, 
43.76802869, 33.55658479, 44.36456222, 40.16155115, 45.77329011, 
36.81228138, 39.37683345, 34.4202345), 
Longitude = c(-111.9196013, 
-111.2821257, -103.5206581, -111.5104323, -101.0545158, -79.05296653, 
-99.64100853, -96.04132091, -89.02743535, -111.0896969), 
ABSLn = c(111.9196013, 
111.2821257, 103.5206581, 111.5104323, 101.0545158, 79.05296653, 
99.64100853, 96.04132091, 89.02743535, 111.0896969), 
Eleveation = c(360.29, 
583, 1581.8, 459, 597.43, 551.86, 562.5, 230.56, 195.91, 2220
), 
Deuiterium = c(-32.16640732, -60.6107658, -64.8100282, -61.11196959, 
-22.34856023, -58.2616656, -69.80240134, -12.77002745, -37.88557439, 
-55.65939053), 
ABSd2H = c(32.16640732, 60.6107658, 64.8100282, 
61.11196959, 22.34856023, 58.2616656, 69.80240134, 12.77002745, 
37.88557439, 55.65939053), 
Oxygen.18 = c(-0.679664825, -7.65316576, 
-6.660581453, -7.378091132, 0.207154673, -8.921727565, -7.789111383, 
-2.43286863, -5.066014096, -7.447887386), 
ABSd18O = c(0.679664825, 
7.65316576, 6.660581453, 7.378091132, 0.207154673, 8.921727565, 
7.789111383, 2.43286863, 5.066014096, 7.447887386), dex = c(-27L, 
1L, -12L, -2L, -24L, 13L, -7L, 7L, 3L, 4L), 
ABSdex = c(27L, 1L, 
12L, 2L, 24L, 13L, 7L, 7L, 3L, 4L), 
DOY = c(15L, 15L, 15L, 15L, 
15L, 15L, 15L, 15L, 15L, 15L), 
sine_DOY = c(0.128748177, 0.128748177, 
0.128748177, 0.128748177, 0.128748177, 0.128748177, 0.128748177, 
0.128748177, 0.128748177, 0.128748177), 
PDSI = c(-1.133137345, 
-1.133137345, -0.944772124, -1.163842678, 3.165101767, -2.081107855, 
-3.871144056, -1.90775156, -2.455032349, -2.285209417)), 
.Names = c("Latitude", 
"ABSLt", "Longitude", "ABSLn", "Eleveation", "Deuiterium", "ABSd2H", 
"Oxygen.18", "ABSd18O", "dex", "ABSdex", "DOY", "sine_DOY", "PDSI"
), row.names = c(NA, 10L), class = "data.frame")

Я не уверен, что является причиной этой проблемы, и я ожидал, что эта часть кода будет работать гладко. Я хотел бы выяснить, в чем проблема, чтобы я мог двигаться дальше с регрессом. Спасибо за любую помощь, которую вы можете оказать.

...