#r
#r
Вопрос:
У меня есть несколько временных рядов, и данные одного временного ряда выполняются с 1937 по 1966 год, и я хочу запустить цикл в каждом отдельном временном ряду и построить простую модель на обучающем наборе (первые 20 наборов и оставшиеся 10 наборов используются в качестве тестового набора, и я использую тестовый набор для прогнозирования простогосредняя модель. Любая помощь приветствуется! Данные (у меня есть около 30 данных нескольких временных рядов, и здесь ниже вы получаете первые 3 данных временных рядов):
Plot Species Year Count Ppt Temp
A BG 1937 81 33.90833333 14.13181818
A BG 1938 45 48.18333333 15.14727273
A BG 1939 96 39.95833333 14.92
A BG 1940 44 48.36666667 14.27363636
A BG 1941 24 57.975 14.02
A BG 1942 8 59.55 13.65727273
A BG 1943 28 38.3 14.28363636
…………………………………….
A BG 1966 30 33.5 12.366666
A BD 1937 135 33.90833333 14.13181818
A BD 1938 91 48.18333333 15.14727273
A BD 1939 171 39.95833333 14.92
A BD 1940 88 48.36666667 14.27363636
A BD 1941 59 57.975 14.02
A BD 1942 1 59.55 13.65727273
A BD 1943 1 38.3 14.28363636
……………………………………………………..
A BD 1966 36 28 15.23658
B BG 1937 34 33.90833333 14.13181818
B BG 1938 16 48.18333333 15.14727273
B BG 1939 19 39.95833333 14.92
B BG 1940 35 48.36666667 14.27363636
B BG 1941 32 57.975 14.02
B BG 1942 7 59.55 13.65727273
B BG 1943 2 38.3 14.28363636
------------------------------------
B BG 1966 4 25 12.259
Мой код:
data$groups <- paste(data$Plot, data$Species, sep = "_")
data_by_plot <- split (data$Count, data$groups)
ly <- lapply(data_by_plot, function(df)){
D<-nrow(df)
Training<-D[1:20,]
Testing<-D[20:30,]
Mean_model<-lm(count~1, data = Training)
Prediction<-Testing$Count[i]- Mean_model$coefficients
)}
Ответ №1:
Вы задаете подмножество, из D
которого всего 1 число. Вероятно, вы пытались сделать :
ly <- lapply(data_by_plot, function(df) {
Training<-df[1:20,]
Testing<-df[20:30,]
Mean_model<-lm(count~1, data = Training)
Prediction<-Testing$Count[i]- Mean_model$coefficients
return(Prediction)
})
Комментарии:
1. вы гуру кода, если я хочу использовать последнюю строку обучающего набора (строка 20) и прогнозировать, используя тестовый набор или строку 21, и прогнозировать 22 тестового набора в пределах одного интервала до 30, как я могу скорректировать свой код? Если бы не было географического барьера, я должен был купить тебе кофе, лол!
2. Еще одна проблема, lapply нужно, чтобы данные были равными по размеру, что вы рекомендуете, если данные имеют неравный размер? Потому что у меня есть другая переменная, которая использует разницу между первой строкой и второй строкой, а первая строка должна быть либо 0, либо NA, и в этом случае мой код не работает?
3. Для прогнозирования вы можете добавить
result <- predict(Mean_model, data = Testing)
lapply
.4. Это я понял, но у меня есть другой набор данных с неравным количеством затемнений, и lapply не может быть применен, вы знаете другую альтернативу? Приведенный выше код сработал для меня для приведенных выше данных.
5. Вам не нужно использовать одно и то же измерение
lapply
. Вы можете применить его к данным любого размера.