首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绘制PLM/ Fixest产生的“时间”效果?

如何绘制PLM/ Fixest产生的“时间”效果?
EN

Stack Overflow用户
提问于 2022-08-25 20:59:34
回答 1查看 136关注 0票数 4

我正在运行一个固定的效应模型,在另一个连续变量(孩子的财富)上有一个连续变量(比如父母财富)。我也有一些控制变量。

我想用“时间”来描绘X和Y之间的关系。是否有可能从下列方程的系数中创建一个按年划分的图?一种方法是手工收集与时间相关的效果,并绘制它们。

代码语言:javascript
复制
summary(plm(Y~X+a+b+as.factor(Time), data=df, index=c("ID","Time"),model = "within",effect = "individual"))

我想看看这种关系是如何随着时间的推移而变化的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-29 17:59:31

不确定您是否指的是这样的情况,在这种情况下,每个时间段估计一个单独的OLS模型。

代码语言:javascript
复制
library(plm)
data("Grunfeld", package = "plm")

form <- inv ~ value + capital

pvcm.wi.mod <- pvcm(form, data = Grunfeld, model = "within", effect = "time")
df <- pvcm.wi.mod$coefficients

library(ggplot2)
ggplot2::ggplot() +
geom_point(aes(x = rownames(df), y = df$value),   color="red") + 
geom_point(aes(x = rownames(df), y = df$capital), color="blue") + 
ylab("Values") + xlab("Year")

或者绘制双向有限元模型的时间效应(请注意,在图中年份是编号的):

代码语言:javascript
复制
fe.mod <- plm(form, data = Grunfeld, model = "within", effect = "twoways")
fe.mod.fix <- fixef(fe.mod)
print(fe.mod.fix)
#>    1935    1936    1937    1938    1939    1940    1941    1942    1943    1944 
#>  -86.90 -106.10 -127.59 -126.13 -156.37 -131.14 -105.70 -108.04 -129.88 -130.00 
#>    1945    1946    1947    1948    1949    1950    1951    1952    1953    1954 
#> -142.58 -118.07 -126.29 -130.62 -160.40 -162.80 -149.38 -151.53 -154.62 -180.43
plot(fe.mod.fix, ylab = "time FE", xlab = "year")

在这里,fixef()给出了固定的效果,您可以使用fixef(., type = "dfirst", effect = "time")来获得通过LSDV得到的估计值。

代码语言:javascript
复制
fe.mod.fix.dfirst <- fixef(fe.mod, effect = "time", type = "dfirst")
print(fe.mod.fix.dfirst)
#>    1936    1937    1938    1939    1940    1941    1942    1943    1944    1945 
#> -19.197 -40.690 -39.226 -69.470 -44.235 -18.804 -21.140 -42.978 -43.099 -55.683 
#>    1946    1947    1948    1949    1950    1951    1952    1953    1954 
#> -31.169 -39.392 -43.717 -73.495 -75.896 -62.481 -64.632 -67.718 -93.526
lsdv <- lm(inv ~ value + capital + factor(year) + factor(firm), data = Grunfeld)
print(lsdv)
#> 
#> Call:
#> lm(formula = inv ~ value + capital + factor(year) + factor(firm), 
#>     data = Grunfeld)
#> 
#> Coefficients:
#>      (Intercept)             value           capital  factor(year)1936  
#>         -86.9002            0.1177            0.3579          -19.1974  
#> factor(year)1937  factor(year)1938  factor(year)1939  factor(year)1940  
#>         -40.6900          -39.2264          -69.4703          -44.2351  
#> factor(year)1941  factor(year)1942  factor(year)1943  factor(year)1944  
#>         -18.8045          -21.1398          -42.9776          -43.0988  
#> factor(year)1945  factor(year)1946  factor(year)1947  factor(year)1948  
#>         -55.6830          -31.1693          -39.3922          -43.7165  
#> factor(year)1949  factor(year)1950  factor(year)1951  factor(year)1952  
#>         -73.4951          -75.8961          -62.4809          -64.6323  
#> factor(year)1953  factor(year)1954     factor(firm)2     factor(firm)3  
#>         -67.7180          -93.5262          207.0542         -135.2308  
#>    factor(firm)4     factor(firm)5     factor(firm)6     factor(firm)7  
#>          95.3538           -5.4386          102.8886           51.4666  
#>    factor(firm)8     factor(firm)9    factor(firm)10  
#>          67.4905           30.2176          126.8371
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73493636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档