簡體   English   中英

從 R 中的 lm model 獲取最后 X 天數據的系數和截距值,並在第二天重復並用它創建 dataframe

[英]get the coefficients and intercept value of the last X days of data from a lm model in R and repeat for the next day and create a dataframe with it

我想創建最后 X 天的系數並在那天截取並粘貼它,然后移至第二天並再次粘貼最后 X 天的系數並截取等等。

我使用 R 附帶的數據集,稱為經濟學

這是我到目前為止的代碼

library(plyr)
library(readr)
library(dplyr)
library(caret)
library(ggplot2)
library(repr)

dat <- economics

drops <- c("date")
dat <- dat[ , !(names(dat) %in% drops)]


cols = c('pce', 'pop', 'psavert', 'uempmed')

pre_proc_val <- preProcess(dat[,cols], method = c("center", "scale"))


dat[,cols] = predict(pre_proc_val, dat[,cols])




###### Linear Regression

number_days = 30

lr = lm(unemploy ~ uempmed + psavert + pop + pce, data = dat)


dataframecoefficients  <- as.data.frame(lr$coefficients)

這段代碼會給我所有數據的系數,但我需要的是從第一行抓取數據,直到number_days的值計算系數並截取那條數據並將其粘貼到第 30 行旁邊,然后它將移動到第 31 行,重復該過程並將值粘貼到第 31 行,依此類推,直到到達文件末尾

最終結果看起來像這樣

        ce           pop       psavert      uempmed    unemploy   (Intercept) uempmed psavert pop pce 
  

27   -1.1827734   -1.4739945  1.0231339  -0.951801535  3040            NA       NA      NA    NA   NA
28   -1.1812833   -1.4682151  0.9556616  -1.00050309   3049            NA       NA      NA    NA   NA
29   -1.1807210   -1.4628175  1.0231339  -0.927450756  2856            NA       NA      NA    NA   NA
30   -1.1800743   -1.4580468  1.0906062  -0.976152314  2884           1771      2343   3244   232  -34
31   -1.1784155   -1.4533034  1.0906062  -0.976152314  3201           1770      2234   3100   200  -40
..   ..           ...          ....       ....          ...          ...         ...    ...    ..   ..

使用 dplyr 或類似的東西有效率嗎

這是基礎 R 中的一種方法:

dat <- as.data.frame(dat)
new_cols <- c('Intercept', paste0(cols, '_predict'))
dat[new_cols] <- NA

inds <- nrow(dat) - number_days

dat[(number_days+1):nrow(dat), new_cols] <- do.call(rbind, lapply(seq(inds), function(x) {
  lr = lm(unemploy ~ uempmed + psavert + pop + pce, data = dat[x:(x + number_days - 1), ])
  t(lr$coefficients)
}))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM