楼主: rhapsodyr
2896 16

[编程问题求助] 面板怎么样才能快捷处理跨id(截面)交叉运算,“退化”成单纯的时序数据回归? [推广有奖]

版主

什么书都只看了半本!

已卖:178份资源

院士

65%

还不是VIP/贵宾

-

TA的文库  其他...

Rh私房书架——教材评价系列

Rh私房书架——经典教程系列

威望
4
论坛币
96581 个
通用积分
8564.2568
学术水平
315 点
热心指数
506 点
信用等级
297 点
经验
84745 点
帖子
2755
精华
0
在线时间
3787 小时
注册时间
2009-6-27
最后登录
2024-11-5

初级热心勋章 初级信用勋章 中级热心勋章 中级信用勋章

楼主
rhapsodyr 发表于 2014-11-24 23:12:38 |AI写论文
300论坛币
突然想到个比较特殊的情况,不知道谁能帮忙解答下鄙人的疑惑。

=================================================

一、比如,具化成一个具体点的例子:本来的数据是这样的(已经设置为面板数据):

year

id

x1

x2

Y1=XA1/XA2

1990

A

XA1,1990

XA2,1990

XA1,1990/ XA2,1990

1991

A

XA1,1991

XA2,1991

XA1,1991/ XA2,1991

……

……

……

……

……

2013

A

XA1,2013

XA2,2013

XA1,2013/ XA2,2013

1990

B

XB1,1990

XB1,1990

XB1,1990/ XB2,1990

1991

B

XB2,1991

XB2,1991

XB1,1991/ XB2,1991

……

……

……

……

……

2013

B

XB3,2013

XB3,2013

XB1,2013/ XB2,2013

……

……

……

……

……

1990

K

XK1,1990

XK1,1990

XK1,1990/ XK2,1990

1991

K

XK2,1991

XK2,1991

XK1,1991/ XK2,1991

……

……

……

……

……

2013

K

XK3,2013

XK3,2013

XK1,2013/ XK2,2013

……

……

……

……

……




二、但是问题来了,怎么样不动(或变动很小)原本数据结构(即面板数据)的情况下得到这样的数据:

year

id

X1

X2

Y1(=XA,1/XA,2)

Z1=(Xi,1/Xj,2 )

……

ZK=(Xm,1/Xn,2)





明:

↓ 跨1个id(截面)相除

……

↓ 跨K个id(截面)相除

1990

A

XA1,1990

XA2,1990

XA1,1990/ XA2,1990

XA1,1990/XB1,1990

……

XA1,1990/XK1,1990

1991

A

XA1,1991

XA2,1991

XA1,1991/ XA2,1991

XA1,1991/XB1,1991

……

XA1,1991/XK1,1991

……

……

……

……

……

……

……

……

2013

A

XA1,2013

XA2,2013

XA1,2013/ XA2,2013

XA1,2013/XB1,2013

……

XA1,2013/XK1,2013

1990

B

XB1,1990

XB1,1990

XB1,1990/ XB2,1990

XB1,1990/XC1,1990

……

XB1,1990/X(K+1)1,1990

1991

B

XB2,1991

XB2,1991

XB1,1991/ XB2,1991

XB1,1991/XC1,1991

……

XB1,1991/X(K+1)1,1991

……

……

……

……

……

……

……

……

2013

B

XB3,2013

XB3,2013

XB1,2013/ XB2,2013

XB1,2013/XC1,2013

……

XB1,2013/X(K+1)1,2013

……

……

……

……

……

……

……

……

1990

K

XK1,1990

XK1,1990

XK1,1990/ XK2,1990

……

……

……

1991

K

XK2,1991

XK2,1991

XK1,1991/ XK2,1991

……

……

……

……

……

……

……

……

……

……

……

2013

K

XK3,2013

XK3,2013

XK1,2013/ XK2,2013

……

……

……

……

……

……

……

……

……

……

……


三、最后的目的,是为了用计算得到的Z1, …, ZK作为解释/被解释变量进行回归。 当然,在这个情形下,只能用来做非面板的回归了。  

#四、考虑到上面这只是其中的一个变量Zi(由两个变量作商得到),变量如果继续扩展出Wi。
    比如,类似于Zi是由X1与X2相除得到的,那Wi就可以是用Q1与Q2相除得到的,依次扩展出更多维变量。

=================================================
那么要做成这个样子,有什么最简便的方法呢? 求教各位。。。

最佳答案

zhonghuijie 查看完整内容

webuse grunfeld, clear set obs 1800 gen invest2=. gen mvalue2=. gen kstock2=. gen newid="" gen cd1=. gen cd2=. gen company1=. gen company2=. gen year1=. local k=1 local g=1 local f=1 forvalue i=1/200{ forvalues j=1/200{ if `i'!=`j'&year[`i']==year[`j']{ replace invest2=invest[`i']/invest[`j'] in `k' replace mvalue2=mvalue[`i']/mvalue[`j'] in `k' replace kstock2=kstock[`i']/kstoc ...
关键词:怎么样 year 面板数据 解释变量 数据结构
http://gen.lib.rus.ec/

沙发
zhonghuijie 发表于 2014-11-24 23:12:39
webuse grunfeld, clear
set obs 1800
gen invest2=.
gen mvalue2=.
gen kstock2=.
gen newid=""
gen cd1=.
gen cd2=.
gen company1=.
gen company2=.
gen year1=.
local k=1
local g=1
local f=1
forvalue i=1/200{
forvalues j=1/200{
if `i'!=`j'&year[`i']==year[`j']{
replace invest2=invest[`i']/invest[`j'] in `k'
replace mvalue2=mvalue[`i']/mvalue[`j'] in `k'
replace kstock2=kstock[`i']/kstock[`j'] in `k'
replace cd1=`i' in `k'
replace cd2=`j' in `k'
replace company1=company[`i'] in `k'
replace company2=company[`j'] in `k'
replace year1=year[`i'] in `k'
dis `k++'
}
}
}
*

tostring company1 company2,replace
replace newid=company1+"by"+company2
drop company-time
gen company=real(company1)
rename year1 year
order company year
drop cd1-company2
已有 1 人评分经验 学术水平 热心指数 收起 理由
rhapsodyr + 50 + 2 + 2 热心帮助其他会员

总评分: 经验 + 50  学术水平 + 2  热心指数 + 2   查看全部评分

藤椅
rhapsodyr 发表于 2014-11-25 14:55:03
怎么都没人。。。。

板凳
wukexing1990 发表于 2014-11-25 15:21:11
用Matlab处理矩阵啊

报纸
rhapsodyr 发表于 2014-11-25 16:10:07
wukexing1990 发表于 2014-11-25 15:21
用Matlab处理矩阵啊
没用过matlab。。。

如果用matlab很方便吗?

地板
wukexing1990 发表于 2014-11-25 17:27:08
那是相当方便啊,“矩阵实验室”可是名不虚传的!

7
rhapsodyr 发表于 2014-11-25 17:47:59
wukexing1990 发表于 2014-11-25 17:27
那是相当方便啊,“矩阵实验室”可是名不虚传的!
懒得去新学了,stata我昨天都忙活了一下午,加一晚上才上手的。。。

现在只想知道stata怎么做。

8
apucng 发表于 2014-11-25 19:09:03
这个stata怕不行吧,没遇到过。。

9
rhapsodyr 发表于 2014-11-25 20:08:54
apucng 发表于 2014-11-25 19:09
这个stata怕不行吧,没遇到过。。
我倒是有个思路:
1、有没有类似sql那样的命令(抽取某个字段的值作为一个集合)?

2、然后建立局部宏,数字化,然后用while循环嵌套来取值。

10
2007164663 发表于 2014-11-26 00:03:48
这个比较复杂。不懂。

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

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