如何绘制面板数据中的滞后变量 r

How to graph a lagged variable in a panel data r

我得到了一个公司数据集(不平衡面板),如下所示:

id   year   tfp    c_sales    
A    2012    1.52   14.56
A    2013    1.82   15.6
A    2014    1.67   16.3
A    2015    1.72   18.36
...   ...    ...    ...
B    2012    1.58   17.56
B    2013    1.83   12.6
B    2014    1.62   19.3
B    2015    1.96   14.36
...   ...    ...    ... 
C    2012    1.2   13.4
C    2013    1.6   16.3
...   ...    ...    ...

依此类推...直到 2019 年。

如何绘制 2014 年的 tfp 和 2015 年的 c_sales

我想要一个散点图,横轴显示 2014 年的 tfp 值,纵轴显示 2015 年的 c_sales 值。

由于 tfp 是生产率的衡量标准,我希望看到散点图,它告诉我 2014 年生产率高的公司在 2015 年的销售额或多或少。

我正在尝试使用 ggplot 绘制绘图,但我不清楚该怎么做。

(另外,我怎样才能做这样的回归?使用固定年份的自变量)

你可以这样做

(虽然数据真的很有用!)

library(tidyverse)

df=tribble(
~id, ~year, ~tfp, ~c_sales, 
"A", 2012, 1.52, 14.56, 
"A", 2013, 1.82, 15.6, 
"A", 2014, 1.67, 16.3, 
"A", 2015, 1.72, 18.36, 
"B", 2012, 1.58, 17.56, 
"B", 2013, 1.83, 12.6, 
"B", 2014, 1.62, 19.3, 
"B", 2015, 1.96, 14.36, 
"C", 2012, 1.2, 13.4, 
"C", 2013, 1.6, 16.3, 
"C", 2014, 1.7, 17.3, 
"C", 2015, 1.82, 20.33
) 

f = function(data, group, xYear, yYear)(
  tibble(
    xYear = xYear,
    yYear = yYear,
    tfp = data %>% filter(year==xYear) %>% pull(tfp),
    c_sales = data %>% filter(year==yYear) %>% pull(c_sales)
  )
)


df = df %>% 
  group_by(id) %>% 
  group_modify(f, xYear=2014, yYear=2015) 

df

输出

# A tibble: 3 x 5
# Groups:   id [3]
  id    xYear yYear   tfp c_sales
  <chr> <dbl> <dbl> <dbl>   <dbl>
1 A      2014  2015  1.67    18.4
2 B      2014  2015  1.62    14.4
3 C      2014  2015  1.7     20.3

接下来

df %>% ggplot(aes(tfp, c_sales))+
  geom_point()