楼主: 飘者逸也
1594 9

[程序分享] R 做随机效应报错 [推广有奖]

  • 3关注
  • 2粉丝

副教授

41%

还不是VIP/贵宾

-

威望
0
论坛币
5946 个
通用积分
9.1790
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
108 点
帖子
184
精华
0
在线时间
1523 小时
注册时间
2017-10-6
最后登录
2024-4-27

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求助各位大神!
在用R做随机效应模型的时候突然报错,而同样做固定效应、混合效应的时候却没有任何问题。这是哪里出问题了?忘各位大神能够给予解答!
reg.re <- (plm(lwage~educ+black+hisp+exper+I(exper^2)+married+union+yr,
+                                       data=wagepan.p, model="random") )
Error in is.pbalanced.default(x) : 缺少参数"y",也没有缺省值
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:随机效应 随机效应模型 固定效应 REG 何问题

沙发
飘者逸也 发表于 2020-5-17 18:01:24 |只看作者 |坛友微信交流群
自己顶一下

使用道具

藤椅
龙熏风 发表于 2020-5-17 22:25:53 |只看作者 |坛友微信交流群
你可以traceback()一下,看看plm运行到哪里报错

使用道具

板凳
飘者逸也 发表于 2020-5-19 09:55:36 |只看作者 |坛友微信交流群
龙熏风 发表于 2020-5-17 22:25
你可以traceback()一下,看看plm运行到哪里报错
好的,谢谢!

使用道具

报纸
飘者逸也 发表于 2020-5-21 22:25:57 |只看作者 |坛友微信交流群
龙熏风 发表于 2020-5-17 22:25
你可以traceback()一下,看看plm运行到哪里报错
traceback()后结果是这样,我还是看不出哪里错了
> traceback()
7: is.pbalanced.default(x)
6: is.pbalanced(x)
5: ptransform(y, model = model, effect = effect, theta = theta)
4: pmodel.response.data.frame(data, model = model, effect = effect,
       theta = theta)
3: pmodel.response(data, model = model, effect = effect, theta = theta)
2: plm.fit(data, model, effect, random.method, random.models, random.dfcor,
       inst.method)
1: plm(lfare ~ y98 + y99 + y00 + concen + ldist + ldistsq, data = pdata,
       model = "random")

使用道具

地板
飘者逸也 发表于 2020-5-21 22:28:34 |只看作者 |坛友微信交流群
龙熏风 发表于 2020-5-17 22:25
你可以traceback()一下,看看plm运行到哪里报错
这是另外一个RE模型,报错的地方和上一个RE模型是同一处。我还是不清楚哪里错了。类似的RE模型,有时候能正常运行。

使用道具

7
飘者逸也 发表于 2020-5-21 22:28:37 |只看作者 |坛友微信交流群
龙熏风 发表于 2020-5-17 22:25
你可以traceback()一下,看看plm运行到哪里报错
这是另外一个RE模型,报错的地方和上一个RE模型是同一处。我还是不清楚哪里错了。类似的RE模型,有时候能正常运行。

使用道具

8
龙熏风 发表于 2020-5-22 11:11:45 |只看作者 |坛友微信交流群
pmodel.response.data.fr ame <- function(ob ject, ...){
    ######
    ###省略非关键
    ######
    y <- model.response(ob ject) #得到被解释变量序列,是pseries类
    ptransform(y, model = model, effect = effect, theta = theta)
}

ptransform <- function(x, model = NULL, effect = NULL, theta = NULL, ...){
    ######
    ###省略非关键
    ######
    if (model == "random"){
    ######
    ###省略非关键
    ######
        if (effect == "twoways" & is.pbalanced(x)) #得到的被解释变量传递至此
            x <- x - theta$id * Between(x, "individual") -
                theta$time * Between(x, "time") + theta$total * mean(x)
    }
    ######
    ###省略非关键
    ######
}

#由于是pseries, is.pbalanced函数调用Method:is.pbalanced.pseries

is.pbalanced.pseries <- function(x, ...) {
  index <- attr(x, "index")
  return(is.pbalanced(index[[1]], index[[2]]))
}
#index中第一列为时间,第二列为被解释变量
#index的类没有对应Method,调用is.pbalanced.default

is.pbalanced.default <- function(x, y, ...) {
    ######
    ###省略非关键
    ######
}

###报错是 缺少参数"y",也没有缺省值,说明你的被解释变量有问题,具体看自己的数据,可以看看是不是因为格式什么的问题被当做了NA

具体参见plm包源代码 est_plm.R, tool_model.extract.R, is.pconsecutive_pbalanced.R

使用道具

9
飘者逸也 发表于 2020-5-22 13:17:51 |只看作者 |坛友微信交流群
龙熏风 发表于 2020-5-22 11:11
pmodel.response.data.fr ame &lt;- function(ob ject, ...){
    ######
    ###省略非关键
实在太感谢了!我仔细学习一下!问题后来倒是解决了,只不过方法有点无语。我更改了数据格式重新保存后重新做RE模型就没有再出现这样的问题

使用道具

10
爱上科研 发表于 2023-10-21 10:21:34 |只看作者 |坛友微信交流群
怎么修改数据格式?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 23:47