R语言 面板数据分析 plm包实现(一) ——LSDV和固定效应模型

6 篇文章 5 订阅

系列文章

  1. R做面板数据分析:R语言 面板数据分析 plm包实现(一) ——LSDV和固定效应模型

  2. 如果想看随机效应模型怎么做,参见这篇文章
    R语言 面板数据分析 plm包实现(二)——随机效应模型

  3. 如果想看如何判断面板数据适用随机效应模型还是固定效应模型,参见这篇文章:
    R语言 面板数据分析 plm包实现(三)——面板数据与面板模型的检验

  4. 使用随机效应模型,且一些时间或个体存在数据缺失,应当使用Swamy Arora估计,如何用R语言来实现,参见这篇文章:
    R语言 面板数据如何做Swamy Arora估计

  5. 如何从统计年鉴获知某地接受转移支付额度

LSDV是虚拟变量回归。
看完这篇文章,如果对你有帮助,请帮我点个赞或者star哦~

1.安装plm包

可能会遇到错误:
在这里插入图片描述
采用这个指令进行安装:

install.packages("plm",type = "binary")
library(plm)

安装完成

2.模型描述

有数据集:Ex1_1.dta
数据样式:
点击下载在这里插入图片描述
其中FN代表公司,总共有三家;YR代表年份;I是总投资;F是企业实际价值;C是企业实际资本存量。

更多解释:
在这里插入图片描述

数据导入

这个数据集是stata的数据集,因此在Rstudio中你可以选择文件–>导入数据集(import dataset)–>导入stata文件,即可完成导入工作

此外,我好像在其它地方也看见过此数据集,如果你无法下载,可以在其它地方寻找数据集(我印象里是在某个面板相关的R程序包里自带的数据集)。

很多童鞋反映数据集获取困难,我把这个数据集上传到github的一个项目里了(免费),注意,只有一个文件是数据集。如果有帮到你,请给文章点个赞哦~

3.pool 模型

在这里插入图片描述
Pool模型本质上是对变量去整体均值后进行 OLS 估计,也可以用plm包提供功能实现
首先对数据进行处理使其变为data.frame

rankData<-pdata.frame(Ex1_1,index=c("FN","YR")) #index里是个体和时间,转化为面板数据
pool <- plm(I~ F + C,data=rankData,model="pooling")
summary(pool)

结果:
在这里插入图片描述
特别的,和OLS做对比

ols =  lm(I~ F + C,data=rankData)
summary(ols)

在这里插入图片描述

可见,结果是一样的,从软件结果进一步证实了数学推导,即忽略个体均值和时间差异的pool模型等价于OLS模型。

4.个体固定效应的Panel模型——不考虑时间差异,考虑公司差异的估计

在这里插入图片描述

4.1LSDV(虚拟变量OLS回归)模型

增加一个factor因子即可:
注意:factor-1才能展现出十家公司,因为事实上公司设置了虚拟变量

LSDV = lm(I~F+C+factor(FN)-1,data = Ex1_1)#factor-1才能展现出十家公司,因为事实上公司设置了虚拟变量
summary(LSDV)

结果:

在这里插入图片描述
解读:

  • F,C分别代表企业流通股票总价值和企业资本存量,此外还展示了 分别以十家公司做虚拟变量的估计结果,即不同公司是否显著影响企业的投资。

    即总共估计的参数是2+9共11个(9个虚拟变量是为了防止完全的多重共线性
    可以使用

4.2组内模型(within)

rankData<-pdata.frame(Ex1_1,index=c("FN","YR"))#第一个参数是面板的个体,第二个参数是面板的时间
within <- plm(I~ F + C,data=rankData,effect = "individual",model="within")
#within组内方法,检验不同个体是否存在差异(忽视时间影响)
summary(within) 

在这里插入图片描述
解读

  • 公司股票价值每增加一个单位,对企业投资的贡献为0.11个单位;公司实际资本存量每增加一个单位,对企业投资对贡献为0.31个单位,这两个解释变量对被解释变量对贡献程度为75.31%

可见,回归结果4.1和4.2相同,即LSDV(虚拟变量OLS回归)和within方法结果相同。

可以使用下面的函数打印偏离总体截距的情况(注意属于one-way model,关于one-way model 和two-way model 的区别,可以点击网页链接查看

fixef(within)

在这里插入图片描述
如果想查看它们的标准误差以及与总体截距相等的检验等详细信息,可以这样做:

summary(fixef(within))

在这里插入图片描述
下面展示截距项类似,我就不再赘述

5 时间固定效应Panel模型——考虑时间差异忽略公司差异

在这里插入图片描述
采用组内模型进行估计(也可用4.1方法进行估计,把factor(……)中的参数FN改成YR即可,结果是一样的)

rankData<-pdata.frame(Ex1_1,index=c("FN","YR"))#第一个参数是面板的个体,第二个参数是面板的时间
within2 = plm(I~ F + C,data=rankData,effect = "time",model="within")
#within组内方法,检验不同时间是否存在差异(忽视个体影响)
summary(within2)

在这里插入图片描述

解读

  • 用第4节中相似的办法可以解读

6.个体和时间双维固定效应模型–Panel数据

在这里插入图片描述

rankData<-pdata.frame(Ex1_1,index=c("FN","YR"))#第一个参数是面板的个体,第二个参数是面板的时间
within3 <- plm(I~ F + C,data=rankData,effect = "twoways",model="within")
#twoways参数既考虑个体效益,也考虑时间效应
summary(within3)

在这里插入图片描述

解读
解读类似上面。此外F,C的F检验都是显著的(F,C后面的三个星号*)。拒绝全为0的原假设。

7.可供参考的资料

从经管之家帖子看到的

R计量的不多,你下载下面的书去看面板的章节把
Applied Econometrics with R
伍德里奇的配套的书
Principles of Econometrics with R https://bbs.pinggu.org/thread-4805190-1-1.html

或者看 plm包的说明文件(个人不太推荐,感觉写的不清楚)
helphttps://www.jstatsoft.org/article/view/v027i02
https://cran.r-project.org/web/views/Econometrics.html

  • 91
    点赞
  • 386
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
拟合面板数据模型需要进行以下步骤: 1. 数据预处理 首先需要对数据进行清洗和转换,括填充缺失值、删除异常值、转换数据类型等。然后,需要进行面板数据的转换,将数据按照个体和时间维度划分,转换为长格式或宽格式的面板数据。 2. 模型选择 选择适当的模型进行拟合,常用的面板数据模型固定效应模型、随机效应模型和混合效应模型等。选择模型要考虑数据的特点以及研究问题的需要。 3. 模型拟合 针对选择好的模型,使用R语言中的面板数据模型拟合函数进行模型拟合。其中,固定效应模型可以使用lm()函数,随机效应模型可以使用plm()函数,混合效应模型可以使用lme4()函数。 4. 模型诊断 对拟合好的模型进行诊断,括检验模型的假设条件是否满足、检验模型的拟合程度,以及检验模型的预测能力等。 具体的代码实现可以参考以下示例: ```R # 导入面板数据 library(readxl) data <- read_excel("panel_data.xlsx") # 数据预处理 # 填充缺失值 data[is.na(data)] <- 0 # 删除异常值 data <- data[data$var1 < 100, ] # 转换数据类型 data$var1 <- as.numeric(data$var1) # 面板数据转换 library(tidyr) panel_data <- data %>% pivot_longer(cols = c("t1", "t2", "t3"), names_to = "time", values_to = "value") %>% pivot_wider(names_from = "id", values_from = "value") # 模型选择 library(plm) # 随机效应模型 model <- plm(var1 ~ var2 + var3, data = panel_data, index = c("id", "time"), model = "random") # 模型拟合 summary(model) # 模型诊断 # 检验假设条件是否满足 bptest(model) # 检验拟合程度 plot(model, type = "residuals") # 检验预测能力 predict(model, newdata = panel_data) ``` 需要注意的是,在实际应用中,还需要考虑其他因素对面板数据模型的影响,例如异方差性、序列相关等,需要进行相应的处理和检验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值