宽格式面板数据回归:如何合并多国数据进行GDP对人口回归
将两国数据纳入同一回归模型的解决方案
你完全可以把两国数据合并到同一个回归模型中,核心是把当前的宽格式面板数据转换为长格式(tidy)数据,让每个观测对应一个国家-年份的组合,包含gdp、population和country变量。以下是具体步骤:
1. 加载所需工具包
我们使用tidyverse处理数据重塑,lm函数执行回归(基础R自带):
library(tidyverse)
2. 原始数据构造(可直接运行验证)
UK_gdp <- c(4.1, 4.2, 3.8, 4.0) US_gdp <- c(4.1, 4.2, 3.8, 4.0) US_pop <- c(220, 230, 240, 260) UK_pop <- c(40, 45, 47, 49) year <- c("1965-01-01", "1966-01-01", "1967-01-01", "1968-01-01") df1 <- tibble(UK_gdp, US_gdp, US_pop, UK_pop, year)
3. 转换为长格式数据
利用pivot_longer函数,通过列名的模式匹配(国家_变量类型),一键将宽数据转成长格式:
df_long <- df1 %>% pivot_longer( cols = -year, # 保留year列,处理其他所有列 names_to = c("country", ".value"), # 拆分列名为国家、变量名 names_pattern = "(.*)_(gdp|pop)" # 匹配"国家_变量"的格式 )
转换后的数据结构如下(每个行对应一个国家-年份的观测):
# A tibble: 8 × 4 country year gdp population <chr> <chr> <dbl> <dbl> 1 UK 1965-01-01 4.1 40 2 UK 1966-01-01 4.2 45 3 UK 1967-01-01 3.8 47 4 UK 1968-01-01 4.0 49 5 US 1965-01-01 4.1 220 6 US 1966-01-01 4.2 230 7 US 1967-01-01 3.8 240 8 US 1968-01-01 4.0 260
4. 运行回归模型
基础模型(不区分国家截距)
直接拟合你指定的回归方程,合并所有国家数据估计共同的α和β:
basic_model <- lm(gdp ~ population, data = df_long) summary(basic_model)
带国家固定效应的模型(更贴合面板数据)
如果希望不同国家有各自的截距(α_i),仅共享人口的影响系数β,可以加入国家虚拟变量:
fixed_effects_model <- lm(gdp ~ population + country, data = df_long) summary(fixed_effects_model)
这个模型的表达式等价于:GDP_(i,t) = alpha_i + beta*Population_(i,t) + epsilon
其中alpha_i是国家i的专属截距。
内容的提问来源于stack exchange,提问作者James Rider
相关产品推荐
相关产品推荐

