滞后线性回归

时间:2020-05-20 17:04:18

标签: r linear-regression

我有以下模拟数据,其构造方式反映了usebudget长度不同的事实:< / p>

year <- seq(2010, 2019, 1)
budget <- runif(10)
df1 <- data.frame(year, budget)

years2 <- seq(2010, 2019, 3)
use <- runif(4)
gender <- c("w", "w", "w", "w")
df2 <- data.frame(years2, gender, use) %>% rename(year = years2)

df_corr <- df2 %>% full_join(df1, by = "year") %>% arrange(year)

我成功过滤掉了NA并将use上的budget回归了同年。

我想将use上的budget退回上一年。例如,如果use从2010年到2013年增加,请查看budget从2010年到 2012 发生了什么,因为预算可能需要一年的时间才能影响使用情况

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我对您的示例数据和您陈述问题的方式感到有些困惑,所以让我给您一些可重复的数据,看看我是否在您所寻找的地方附近...

library(dplyr)

set.seed(2020)  
group <- rep(letters[1:10], each = 10)
year <- rep(2010:2019, times= 10)
budget <- runif(100, min = 10, max = 100)
use <- runif(100)
df <- data.frame(group, year, budget, use)
glimpse(df)
#> Rows: 100
#> Columns: 4
#> $ group  <chr> "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "b", "b", "b…
#> $ year   <int> 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 20…
#> $ budget <dbl> 68.22126, 45.48032, 65.66516, 52.92020, 22.24875, 16.06459, 21…
#> $ use    <dbl> 0.42512874, 0.26608799, 0.72619972, 0.93059516, 0.25023194, 0.…
df <- df %>% group_by(group) %>% mutate(prev_year_use = lag(use, order_by = year))
glimpse(df)
#> Rows: 100
#> Columns: 5
#> Groups: group [10]
#> $ group         <chr> "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "b", …
#> $ year          <int> 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2…
#> $ budget        <dbl> 68.22126, 45.48032, 65.66516, 52.92020, 22.24875, 16.06…
#> $ use           <dbl> 0.42512874, 0.26608799, 0.72619972, 0.93059516, 0.25023…
#> $ prev_year_use <dbl> NA, 0.42512874, 0.26608799, 0.72619972, 0.93059516, 0.2…
lm(budget ~ use, data = df)
#> 
#> Call:
#> lm(formula = budget ~ use, data = df)
#> 
#> Coefficients:
#> (Intercept)          use  
#>      50.604        7.639
lm(budget ~ prev_year_use, data = df)
#> 
#> Call:
#> lm(formula = budget ~ prev_year_use, data = df)
#> 
#> Coefficients:
#>   (Intercept)  prev_year_use  
#>         47.60          10.66
相关问题