У меня есть df, как указано ниже:
Key Date y x1 x2 x3
1 1/10/2018 12:00:00 AM 2 3 2 5
1 1/11/2018 12:00:00 AM 3 5 7 2
1 1/12/2018 12:00:00 AM 5 7 4 7
1 1/13/2018 12:00:00 AM 7 2 7 6
2 1/10/2018 12:00:00 AM 2 6 3 8
2 1/11/2018 12:00:00 AM 3 7 7 3
2 1/12/2018 12:00:00 AM 3 2 3 4
2 1/13/2018 12:00:00 AM 7 6 2 7
Следующий код позволяет мне запустить регрессию против «ключей» и создать столбец прогноза в наборе данных, который я использовал, чтобы регрессия виделакод и пример ниже:
test = df[(df$key==1 | df$key==2),]
df_list=split(test, test$key)
reg_results = lapply(df_list,function(temp) {
good_cols=sapply(temp,function(x){
is.numeric(x) && ((max(x)-min(x))!=0)
})
temp=temp[,good_cols]
fit=lm(y~.,data=temp)
return(fit)
})
#Credit to MrFlick for reg_predict code below
reg_predict = dplyr::bind_rows(Map(function(data, model) {
data.frame(data, pred=predict(model)) }, df_list, reg_results))
df_list_summary = lapply(reg_results, function(model_output){
broom::tidy(model_output)
})
final_step2 = dplyr::bind_rows(df_list_summary, .id="Key's")
readr::write_csv(final_step2,"test2.csv")
Пример того, что код производит:
Key Date y x1 x2 x3 predicted values for each date
1 1/10/2018 12:00:00 AM 2 3 2 5 ...
1 1/11/2018 12:00:00 AM 3 5 7 2 ...
1 1/12/2018 12:00:00 AM 5 7 4 7 ...
1 1/13/2018 12:00:00 AM 7 2 7 6 ...
2 1/10/2018 12:00:00 AM 2 6 3 8 ...
2 1/11/2018 12:00:00 AM 3 7 7 3 ...
2 1/12/2018 12:00:00 AM 3 2 3 4 ...
2 1/13/2018 12:00:00 AM 7 6 2 7 ...
Есть ли способ настроить строку кода ниже, чтобы обеспечить гибкость для прогнозирования из выборкииспользуя регрессию, встроенную в код до этого?Я пытался и не увенчался успехом.
Я играл с этой строкой кода, чтобы решить мою проблему:
reg_predict = dplyr::bind_rows(Map(function(data, model) {
data.frame(data, pred=predict(model)) }, df_list, reg_results))
Спасибо,