全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
5683 9
2009-06-28
各位大虾好,

最近论文遇到一个问题, 感到有点困难.
想请教一下, 如果我想在一个DATASET里先对各OBSERVATION选择出诸如同行业, 与该公司资产规模+-20%的DATASET里所有符合条件的公司(有多少要多少), 然后再对这些选出来的公司做Y=aX1+bX2+u 之类的回归.
比如, 对A公司, 在整体样本里选出所有与A在同行业且资产规模接近的公司, 假设选出了20家公司, 然后对这20家公司做Y=aX1+bX2+u, 求拟合值, 再看第二家B公司, 同样选, 也许选出15家符合条件的,再做Y=aX1+bX2+u, 求拟合值.

对整个DATASET里的所有个体都要做同样的处理,就是先选出所有符合要求的公司,然后用选出来的公司做回归, 该怎么用STATA做到?

PS 可互相重复,比如对a公司进行选择的时候 b c d公司都符合标准, 做了回归后, 对b公司选择的时候 a t x y z公司符合标准, 再做回归.

求助达人帮忙,万分感谢
二维码

扫码加我 拉你入群

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

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

全部回复
2009-6-28 12:52:35
pscore
psmatch2
这是在网上看见的回复,你可以搜一下关键词:配对。可发现答案。
不过,我比较笨,没有弄明白是怎么回事,我用了个笨办法;
sort indu size
by indu:g s=size[_n-1]
gen ss=1 if s==.
gen ssss=size*1.2 if ss==1
by indu:g sssss=sum(ssss)
二维码

扫码加我 拉你入群

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

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

2009-6-28 17:30:56
谢谢LS, 可是你说的我看不太明白, 汗, 为什么要生成上一期间的SIZE? 然后那些SSSS, SSSSS的在做什么呢?

我在网上找了很多PSMATCH2的东东看,可是系统讲解该SYNTAX使用的好象没有找到.

再解释一下我的问题:
比如我的数据有100家公司, 每家公司有相应的数值, 比如ASSETS, RETURN, DIVIDENDS等, 现在我希望对每一家公司找与之同行业且ASSETS在正负20%范围内的公司, 然后计算那些公司对Y=aX1+bX2+u的回归拟合值, 再计算此拟合值与原始公司的差异.

也就是说, 先要对数据库中的每家公司选择符合条件的公司, 这个数字是不固定的, 而PSMATCH2一般好象是做一对一配对比较多吧? 然后再对所有符合条件的公司做回归,求拟合值.

解释的比较复杂,希望达人能提供帮助, 先谢过
二维码

扫码加我 拉你入群

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

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

2009-6-28 18:22:00
//生成模拟数据
clear
set obs 10
gen ind = _n  // 10个行业
expand 100  // 每个行业100家公司
gen rnd = uniform()
gen stkcd = _n  //公司股票代码
drop rnd
gen asset = uniform()
gen ret = uniform()
gen div = uniform()
sort ind asset

//生成存储结果的变量
gen reg_obs = .
gen reg_r2 = .
gen res = .

local N = _N
forv i = 1/`N' {
        local ind = ind[`i']
        local asset = asset[`i']
        capture {  /*  同一行业内公司太少可能导致没有其它公司满足
                           条件0.8*`asset' <= asset & asset <= 1.2*`asset',
                           而这将导致regress、replace、predict等命令出错退出循环,
                           故加上capture
                        */
                regress ret div if _n != `i' & ind == `ind' & ///
                        0.8*`asset' <= asset & asset <= 1.2*`asset'
                replace reg_obs = e(N) in `i'
                replace reg_r2 = e(r2_a) in `i'
                predict r in `i', residuals
                replace res = r in `i'
                drop r
        }
}
二维码

扫码加我 拉你入群

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

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

2009-6-29 11:16:25
汗, 不好意思, 先多谢LS写的程序, 但是还是有些地方不甚明白.

首先, 一开始用了CLEAR之后, 数据全都不见了, 那么该如何调入原本的数据呢?
其次在设置和EXPAND虚拟数据的时候设的数字一定要和真实变量的数字一样多吗? 还是多一点无所谓?比如行业是19我设20可以吗?

最后, 在进行完LS给的操作后该怎么做? (我按照LS的指示算出来的RES什么的都是. 啊汗死了)

不好意思问题比较多, 多谢多谢了
二维码

扫码加我 拉你入群

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

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

2009-6-29 17:33:20
xueyuan456 发表于 2009-6-29 11:16
汗, 不好意思, 先多谢LS写的程序, 但是还是有些地方不甚明白.

首先, 一开始用了CLEAR之后, 数据全都不见了, 那么该如何调入原本的数据呢?
其次在设置和EXPAND虚拟数据的时候设的数字一定要和真实变量的数字一样多吗? 还是多一点无所谓?比如行业是19我设20可以吗?

最后, 在进行完LS给的操作后该怎么做? (我按照LS的指示算出来的RES什么的都是. 啊汗死了)

不好意思问题比较多, 多谢多谢了
你不提供数据,别人只能隔山打牛了……
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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