Как настроить существующий код, чтобы сделать из примера прогнозирования в R - PullRequest
0 голосов
/ 08 июня 2018

У меня есть 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))

Спасибо,

1 Ответ

0 голосов
/ 20 июня 2018
oof_predictions_df = data.frame() 

for(i in seq(df_list)){ 
    g <- predict(reg_results2[[i]], df_list[[i]]) 
    f = data.frame(Key = df_list[[i]][,'Key'], Date = df_list[[i]][,'Dates'], NY = df_list[[i]][,'NY'], pred = g) 
    oof_predictions_df <- rbind(oof_predictions_df, f) 

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...