全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2821 16
2014-11-24
悬赏 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 ...
二维码

扫码加我 拉你入群

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

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

全部回复
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
二维码

扫码加我 拉你入群

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

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

2014-11-25 14:55:03
怎么都没人。。。。
二维码

扫码加我 拉你入群

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

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

2014-11-25 15:21:11
用Matlab处理矩阵啊
二维码

扫码加我 拉你入群

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

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

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

如果用matlab很方便吗?
二维码

扫码加我 拉你入群

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

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

2014-11-25 17:27:08
那是相当方便啊,“矩阵实验室”可是名不虚传的!
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群