全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2073 1
2013-05-13
悬赏 500 个论坛币 未解决
有这样几个变量,N是由E,A,F三个变量和U及一些其他的参数用一个非线性等式表达出来的。
样本有200个观察对象。

我要做的是counterfactual excercise,中文大概应该叫反事实分析。
要做的是赋予所有观察对象的E变量一个统一的新值newE,newE是所有观察对象基于N的加权平均值。然后保持A,F不变,同时使这200个观察值的N加总值不变,通过调整U这个参数的,使等式依然成立。

我的思路是,先通过原有的U,计算newE情况下的N1,这个SumN1肯定与SumN不同,如果SumN1>SumN,那么使U增大,比如变为U1=U+1;如果SumN1<SumN,那么使U减小,比如变为U1=U-1。然后基于U1,重新计算,得到新的N值,N2,再次测试SumN2与SumN的关系,然后对U值进行调整。多次之后,当SumN’值在SumN+-一个很小值的范围内的时候,停止循环。

大概就是这个意思,不知道说清楚没有。

我目前就写了一点儿
egen p=pc(N),prop
egen aveE=sum(p*E)
gen sumN=sum(N)
egen N1=F(U,aveE,A,F) *公式挺复杂我就不具体写了

gen sumN1=sum(N1)

后面该具体怎么循环试值,就不知道该怎么办了。
我想的是大概这个意思,
if sumN1>sumN+100 replace U=U+1
if sumN1<sumN-100 replace U=U-1
可是接下来怎么让它一遍遍的试起来,直到new sumN在[sumN-100,sumN+100]这个范围内呢。

我查到的用于循环的 forvalue 和foreach等语句,不知道怎么解决我的问题。

希望能得到论坛朋友的帮助啊,有点儿急。


二维码

扫码加我 拉你入群

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

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

全部回复
2014-10-8 17:52:51
查看while语句的帮助文件
set obs 10
        . local i = 1
        . while `i' < 40 {
          2. gen u`i' = runiform()
          3. local i = `i' + 1
          4. }
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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