楼主: liuliuqiu
1545 6

[回归分析求助] 虚拟变量 [推广有奖]

  • 6关注
  • 2粉丝

已卖:35份资源

副教授

64%

还不是VIP/贵宾

-

威望
0
论坛币
2239 个
通用积分
8.1161
学术水平
3 点
热心指数
5 点
信用等级
5 点
经验
14393 点
帖子
429
精华
0
在线时间
1129 小时
注册时间
2009-3-24
最后登录
2025-12-11

楼主
liuliuqiu 发表于 2013-12-2 15:04:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教各位:
      我在做面板回归时遇到一个问题,由于样本很多,所以想用forvalues 命令生成虚拟变量和解释变量的交乘项,但forvalues怎么都用不对。具体来说:将每个企业生成一个虚拟变量,想得到虚拟变量与prd(效率)解释变量的交乘项。
      forvalues i=1/1000{
      gen prd`i’=prd*`i’
   }
这样做是哪出问题了吗?谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:虚拟变量 forvalues forvalue values value 样本

沙发
ywh19860616 发表于 2013-12-2 15:19:44
如果一定要按照你的用循环的话,假如个体为id
  1. tab id,gen(newid)
  2. forv i=2/10 {
  3. gen dum`i'=newid`i'*x
  4. }
复制代码
一份耕耘,一份收获。

藤椅
liuliuqiu 发表于 2013-12-2 15:36:31
ywh19860616 发表于 2013-12-2 15:19
如果一定要按照你的用循环的话,假如个体为id
谢谢!
但我刚才试了一下,还是不大懂,如果是个体1,生成的交乘项dum1不就只能是在个体1下的值不为零,其他个体在dum1下的值均为零?但为什么生成的结果不是这样呢?
可能我的问题比较白目,但麻烦您了

板凳
ywh19860616 发表于 2013-12-2 15:46:35
liuliuqiu 发表于 2013-12-2 15:36
谢谢!
但我刚才试了一下,还是不大懂,如果是个体1,生成的交乘项dum1不就只能是在个体1下的值不为零, ...
  1. set obs 200
  2. gen x=uniform()
  3. egen id=seq(),from(1) to(10)
  4. bysort id:gen time=_n

  5. tab id,gen(newid)
  6. forv i=2/10 {
  7. gen dum`i'=newid`i'*x
  8. }
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
liuliuqiu + 4 + 4 + 4 热心帮助其他会员

总评分: 学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

一份耕耘,一份收获。

报纸
liuliuqiu 发表于 2013-12-2 15:57:33
虽然我还没搞懂,但非常感谢

地板
ywh19860616 发表于 2013-12-2 16:08:00
liuliuqiu 发表于 2013-12-2 15:57
虽然我还没搞懂,但非常感谢
哪里没有弄懂?按照刚才给的程序可以生成dum2-dum9个变量,他们就是代表虚拟变量
与x的乘积,楼主可以自己验证。这里不生成dum1是为了回归不落入虚拟变量陷阱。前面
代码是生成随机数进行回归,因为楼主没有提供数据。

其实楼主可以不用先生成的,请验证下这两者回归结果是相同的。


  1. set obs 200
  2. gen y=uniform()
  3. gen x=uniform()
  4. egen id=seq(),from(1) to(10)
  5. bysort id:gen time=_n
  6. tab id,gen(newid)
  7. forv i=2/10 {
  8. gen dum`i'=newid`i'*x
  9. }
  10. xtset id time
  11. xtreg y x dum2-dum9,fe
复制代码


和直接用factor操作
  1. set obs 200
  2. gen y=uniform()
  3. gen x=uniform()
  4. egen id=seq(),from(1) to(10)
  5. bysort id:gen time=_n
  6. xtset id time
  7. xtreg y x i.id#c.x,fe
复制代码





一份耕耘,一份收获。

7
liuliuqiu 发表于 2013-12-2 16:28:43
ywh19860616 发表于 2013-12-2 16:08
哪里没有弄懂?按照刚才给的程序可以生成dum2-dum9个变量,他们就是代表虚拟变量
与x的乘积,楼主可以 ...
按照您的方法已经做出来了,非常感谢

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 17:59