问题标签 [plm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 删除 PLM 数据框中的 NA 值过多的行
我正在处理从 1950 年到 2003 年 180 个国家/地区的相当大的数据组。我一直在 R 中使用 plm 包。我需要做的一件事是删除 GDP 观测值太少的国家,或者,在其他话说,NA的太多了。这是我正在尝试做的一个虚拟示例
然后我生成了一个向量,该向量计算每个国家/地区有多少 GDP 观测值,如下所示
产生向量
我现在想做的是使用这个向量来制作一个pdata.frame
只包括gdp.observations
高于某个阈值的国家 - 例如,15。有没有很好的方法来做到这一点?
r - plm:使用 fixef() 手动计算固定效应双向模型的拟合值
请注意:我试图让代码同时处理时间和个人固定效果,以及不平衡的数据集。下面的示例代码适用于平衡数据集。
请参阅下面的编辑
我正在尝试使用plm
包手动计算固定效应模型(具有个人和时间效应)的拟合值。plm
这更像是一个练习,以确认我了解模型和包的机制,我知道我可以从两个相关问题(here和here)中从对象中获取拟合值。
从小plm
插图 (p.2) 来看,基础模型是:
y _it = alpha + beta _transposed * x _it + ( mu _i + lambda _t + epsilon _it)
其中 mu_i 是误差项的单个分量(又名“个体效应”),而 lambda_t 是“时间效应”。
可以通过 using 提取固定效应fixef()
,我认为我可以使用它们(连同自变量)来计算模型的拟合值,使用(带有两个自变量)以这种方式:
适合_it = alpha + beta _1 * x1 + beta _2 * x2 + mu _i + lambda _t
这就是我失败的地方——我得到的值与拟合值相去甚远(我得到的值是实际值与模型对象中的残差之间的差异)。一方面,我看不到alpha
任何地方。我尝试将固定效果显示为与第一个、均值等的差异,但没有成功。
我错过了什么?这很可能是对模型的误解,或者代码中的错误,恐怕......提前致谢。
PS:其中一个相关问题提示pmodel.response()
应该与我的问题有关(以及没有plm.fit
功能的原因),但它的帮助页面并不能帮助我理解这个功能的实际作用,我找不到任何示例如何解释它产生的结果。
谢谢!
我所做的示例代码:
我的会话如下:
编辑:(2015-02-22) 由于这引起了一些兴趣,我将尝试进一步澄清。我试图拟合一个“固定效应”模型(又名“内部”或“最小二乘虚拟变量”,正如 p.3 顶部段落中plm 包小插图所说的那样)——相同的斜率,不同的截距。
这与为time
和添加哑元后运行普通 OLS 回归相同id
。plm
使用下面的代码,我可以使用 base从包中复制拟合值lm()
。对于假人,很明显 id 和 time 的第一个元素都是要比较的组。我仍然不能做的是如何使用plm
包的功能来做同样的事情,我可以很容易地使用lm()
.
希望这对可能感兴趣的其他人有用。问题可能是关于如何处理我故意创造的缺失值plm
。fixef
我尝试使用type=
参数fixef
但没有效果。
r - 面板数据 R 中的多重共线性检验
我正在使用plm
包运行面板数据回归,R
并希望控制解释变量之间的多重共线性。
我知道 -package 中有这个vif()
功能car
,但据我所知,它不能处理面板数据输出。
可以进行其他诊断,plm
例如单位根检验,但我没有找到计算多重共线性的方法。
有没有办法计算类似的测试vif
,或者我可以将每个变量视为时间序列,省略面板信息并使用car
包运行测试?
我不能透露数据,但问题应该与所有面板数据模型有关。
该维度大约是 1,000 个观测值,超过 50 个时间段。
我使用的代码如下所示:
接着
返回错误。
先感谢您。
r - 为什么 PLM 会创建大量对象并且无法打开它们
我正在研究一个包含 110 万个观测值 x 41 个变量的大型(但不是巨大的)数据库。数据排列为不平衡的面板。使用这些变量,我指定了三个不同的模型,并将它们分别运行为 1) 固定效应、2) 随机效应和 3) 合并 OLS 回归。
仅包含数据库的原始 .RData 文件约为 15Mb。包含数据库和回归结果(共 9 个回归)的 .RData 权重约为 650Mb。我确实意识到(来自基本文档)
即便如此,我还是无法理解为什么这些文件应该如此庞大。为了避免在处理plm
对象时内存过载,我将它们保存在三个不同的文件中(现在每个文件的权重约为 200Mb)。一小时前我打电话summary
来查看固定效应模型的结果,但它还没有显示任何结果。我现在的问题很简单。你觉得这是正常行为吗?我可以做些什么来减小plm
对象大小并加快结果检索?
以下是您可能想知道的一些事情:
- 我使用的数据库是
data.table
格式 formula
回归中的 s 是预先组装的,并包含在plm
前面的调用中as.formula()
,如此处所建议的。例子:
form<-y~x1+x2+x3+...+xn
mod.fe<-plm(as.formula(form), regr, effect="individual", model="within", index=c("id", "year"))
请让我知道我是否可以提供任何其他信息,并且您可能需要回答这个问题。
编辑
我设法建立了一个与我正在研究的具有相似特征的小型数据库。这里是:
我使用的公式和plm
调用是:
使用object.size()
@BenBolker 的建议,我发现调用生成了一个plm
权重为 64.5Kb 的对象,而原始数据帧的大小为 6.9Kb,这意味着结果大约是输入矩阵的 10 倍。然后我在这里设置了下面@zx8754 建议的选项,但不幸的是它们没有效果。当我终于打电话时summary(plm.f)
,我收到了错误消息:
我最终也用我的大型数据库得到了它,但只是经过数小时的计算。
这里建议问题可能是由于系数矩阵是奇异的。is.matrix.singular()
然而,在包中发现的奇点测试matrixcalc
结果证明并非如此。
您可能想知道的另外几件事:
year
,是ethnic
因子health
- 除最后一个变量外,公式中的变量或多或少是不言自明的。
event
是在特定时间发生的假定的创伤事件。如果某年发生事件,则编码为 1,否则编码为 0。如果这些事件之一发生在前一年(减 1),则该变量evm1
等于 1,否则为 0。同样,evp1
如果事件发生在下一年(加 1),则为 1,否则为 0。变量ndm.
和ndp.
工作方式相同,但当距离不可观察(因为某个人的时间段太短)时它们被编码为 1,否则为 0。如此紧密相连的变量的存在引发了对完美共线性的怀疑。然而,如上所述,测试表明该矩阵是非奇异的。
让我再告诉一次,如果有人能回答这个问题,我将非常感激。
r - plm 模型“内部” - R 中的警告消息
我在运行这个 plm 模型时遇到问题:
我的数据是(示例):
我运行以下回归:
并收到以下警告消息:[1]
怎么了?
r - PLM 陷入虚拟变量陷阱——如何解决?
一个例子:
fem
是固定效应模型(拟合 plm),lsdv
是等效最小二乘虚拟变量模型(拟合 lm)
很明显 plm 正在估计系数,而且实际上两个模型中的系数是相同的,因为它们应该是相同的。但是当我去总结结果时,plm 很难,而且我很确定原因是 timeXgroup 固定效应,由于虚拟变量陷阱,其中一些需要自动省略。(例如,lm 似乎知道如何自动删除彼此精确线性组合的变量)。
我该如何解决这个问题?我更喜欢使用 plm,因为它提供的输出比 lm 更简洁,每个横截面单元都有虚拟变量。
r - 在 plm 中循环子集
我正在尝试在 R 中编写一些非常简单的东西(我认为),但我似乎无法做到正确。我有一个包含 50 个国家(1 到 50 个)的数据集,每个国家有 15 年,每个国家有大约 20 个变量。现在我只OS
在我的因变量 ( ) 上测试一个变量 ( SMD
)。我想按国家/地区循环执行此操作,因此我将获得每个国家/地区的输出而不是整体输出。
我认为首先创建一个子集是明智的(以便能够先查看国家 1,之后我的循环应该增加国家的数量并测试国家 2)。我相信我在页面底部的回归应该给我国家 1 的输出,而不是整个数据集的总分。但是我不断收到这些错误:
我可能认为这一切都是错误的,但我相信如果不让它工作,那么进一步对循环本身进行编程是没有意义的。非常感谢任何有关解决我的错误或其他编程循环方式的建议。
我的代码:
编辑:导致相同错误的前 2 个国家/地区的数据样本
dput(mydata)结构(列表(区域=结构(c(1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c( "NAF", "SAME"), class = "factor"), Country = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L) ,日期= C(1995L,1996L,1997L,1998L,1998L,1999L,2000L,2001L,2002L,2002L,2003L,2004L,2004L,2005L,2006L,2007L,2007L,2008L,2008L,2010L,2010L,2011L,2012L,2012L,2013L,2013L,2014L,1996L,19977L,19977年, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L 25, L = 结构22L、20L、23L、9L、7L、5L、2L、1L、4L, 3L, 6L, 10L, 11L, 13L, 11L, 8L, 26L, 25L, 31L, 29L, 28L, 21L, 30L, 24L, 24L, 16L, 11L, 14L, 12L, 17L, 18L, 29L, 32L, 32L, 33L, 34L), .Label = c("51.5", "52.2", "55.6", "56.4", "56.7", "57.7", "57.8", "58.3", "59", "59.2 ”、“59.6”、“59.9”、“60.2”、“60.4”、“61.1”、“61.2”、“62.2”、“62.3”、“62.8”、“63.2”、“63.3”、“63.8”、 “63.9”、“64.2”、“64.3”、“64.5”、“64.7”、“65.3”、“65.5”、“65.6”、“66.4”、“68”、“69.6”、“70.7”)、类=“因子”),SMD =结构(c(7L,12L,20L,21L,17L,15L,13L, 10L, 14L, 22L, 23L, 33L, 1L, 32L, 29L, 34L, 28L, 25L, NA, NA, 9L, 6L, 8L, 4L, 2L, 35L, 3L, 36L, 5L, 11L, 16L, 18L, 24L, 19L, 26L, 31L, 27L, 30L, NA, NA), .Label = c(“100.3565662”, “13.44788845”, “13.45858747”, “13.56815534”, “15.05892471”, “171.8.0478”, “171.8.0478”, “171.8.0478” ", "18.3101351", "19.34226196", "21.25530884", "21.54423145", "23.75898948", "24.08770926", "26.39817342", "29.44079001", "31.40605191", "34.46667996", "34.52913657", "35.66070947", “36.4419931”、“39.16875621”、“44.0126137”、“45.72949566”、“49.13062679”、“54.83730247”、“ 56.87886311”,“ 59.80971583”,“ 60.5658962”,“ 69.20148901”,“ 70.91362874”,“ 72.64845214 )), .Names = c("Region", "Country", "Date", "OS", "SMD"), class = "data.frame", row.names = c(NA, -40L))国家”,“日期”,“操作系统”,“SMD”),类 =“data.frame”,row.names = c(NA,-40L))国家”,“日期”,“操作系统”,“SMD”),类 =“data.frame”,row.names = c(NA,-40L))
r - 使用 NA 填充 PLM 模型的拟合值
我有以下数据集
NA
在某些变量中包含s。我使用plm
包来估计以下模型:
现在,我想提取拟合值。据我了解,最好的方法是从我的响应变量中减去残差var1
(因为没有函数可以获取拟合值pml
(参见此处):
但它排除了带有NA
s 的行。我想NA
在原始数据集有NA
s 的地方用 s 填充拟合值。必须有一种聪明而简单的方法来将NA
s 从填充dt
到我的拟合值,但我看不到它。非常感谢任何帮助!
r - 如果第一个模型是单变量 plm,Stargazer 会丢弃第一个回归量,但如果第一个模型是多变量 plm 则不会
我使用stargazer
包来制作面板模型的 LaTeX 表(plm
包)。如果第一个plm
模型是单变量的,则stargazer
删除该模型的回归量,但仍显示该模型。
如果我交换模型顺序以便第一个模型是多变量的,那么所有模型都会显示。我对模型没有这个问题lm
。有解决办法吗?是否lm
包含拦截是否重要plm
?
谢谢!这是一个例子。
这产生以下结果。
r - R/plm:由于错误(系统在计算上是奇异的)而无法估计随机效应模型?
我想使用 PLM 包估计 R 中的一些面板数据模型。由于理论知识有限,我严格按照“计量经济学学院”的指示(代码here)。我根据我的数据(自己的依赖/独立变量)定制了该代码,但没有更改所有其他语法/公式。
现在问题来了:
除随机效应模型外,所有模型都可以进行估计,也可以对其结果进行总结和解释。在这里,我收到以下错误消息:
有没有人可以给我一个提示这个错误的真正含义?可能的根本原因是什么,我必须如何更正代码才能获得结果?
编辑: 更准确地说,这是我使用的 R 代码的一部分:
由于政策限制,我不允许上传数据。但我可以提供它是资产负债表数据的信息。因变量是资产负债表头寸随时间的标准偏差,应通过不同的资产负债表头寸来解释。这些主要是“位置 a / 平均值”类型的比率(比率 1 到 4)。作为额外的自变量,考虑了资产负债表上资产的平均总和。
再说一遍:实际上一切正常,只有最后一个模型(随机)产生所述错误。
最终问题可能是由比率的定义引起的?它们是使用变量“mean”定义的(它本身也是一个独立变量)?
编辑:回溯代码