楼主: 草蜢718
7501 7

[数据管理求助] 附代码:stata中forvalues总提示invalid syntax,一直没找到解决办法,请大神指点。 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

76%

还不是VIP/贵宾

-

威望
0
论坛币
3088 个
通用积分
70.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3443 点
帖子
22
精华
0
在线时间
381 小时
注册时间
2017-4-22
最后登录
2024-11-28

楼主
草蜢718 发表于 2019-6-27 16:05:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
forvalues j = 1(1)`rowsboth' {
        local rownum = `rownum' + 1
        replace phiG = 1.1 - `j'*0.1 if _n==`rownum'
        qui: corr lngdpwdilocallongdiff lndnlongdiff if `goodsample', cov
        replace varzG = r(Var_1) if _n==`rownum'
        replace nG = r(N) if _n==`rownum'
        qui: corr lngdpwdilocallongdiff lndnlongdiff if `badsample', cov
        replace varzB = r(Var_1) if _n==`rownum'
        replace nB = r(N) if _n==`rownum'
        qui: corr lngdpwdilocallongdiff lndnlongdiff, cov
        replace varx = r(Var_2) if _n==`rownum'
        replace cov = r(cov_12) if _n==`rownum'
        replace nTot = r(N) if _n==`rownum'

        replace sigmasqy = varzG * phiG if _n==`rownum'
        replace phiB = sigmasqy / varzB if _n==`rownum'
        replace beta = cov / sigmasqy if _n==`rownum'
        replace sigmasqx = varx - cov if _n==`rownum'
        replace sigmasqzB = varzB - sigmasqy if _n==`rownum'
        replace sigmasqzG = varzG - sigmasqy if _n==`rownum'

        replace lambdaB = sigmasqx*sigmasqy / ( sigmasqx*sigmasqy + sigmasqzB*(beta*beta*sigmasqy + sigmasqx) ) if _n==`rownum'
        replace lambdaG = sigmasqx*sigmasqy / ( sigmasqx*sigmasqy + sigmasqzG*(beta*beta*sigmasqy + sigmasqx) ) if _n==`rownum'
}


二维码

扫码加我 拉你入群

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

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


沙发
黃河泉 在职认证  发表于 2019-6-27 17:13:21
用 loop 來計算統計量與跑迴歸,都不是好 idea。請直接說明你要做什麼?
  1. 你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
  2. 1.        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
  3. 2.        请参考说明 https://bbs.pinggu.org/thread-5048204-1-1.html。
复制代码

藤椅
草蜢718 发表于 2019-6-28 08:32:10
黃河泉 发表于 2019-6-27 17:13
用 loop 來計算統計量與跑迴歸,都不是好 idea。請直接說明你要做什麼?
谢谢黄老师,刚学stata不久,对这块还不是很熟悉。

板凳
草蜢718 发表于 2019-6-28 08:36:19
草蜢718 发表于 2019-6-28 08:32
谢谢黄老师,刚学stata不久,对这块还不是很熟悉。
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(lngdpwdilocallongdiff lndnlongdiff)
  4.   .4204254   .028232574
  5.   .8784523    .50447655
  6.   1.241537     .2186191
  7. -.09284592    .04628181
  8.   .4206181    .10143757
  9.   .2048893    -.3965068
  10.   .3379917     1.032908
  11. -.06822342    .12173724
  12.   .5742798     .3257008
  13.    .448185    1.0075266
  14.    .484436     .4353796
  15.   .5846386    .42983985
  16. -.03592682  -.024760246
  17. .51361465      .439985
  18.   .2338524     .9791594
  19.   .4910011     .7609177
  20.   .8487453    1.9358077
  21.   .3517857    .27433515
  22.   .6440163       .91082
  23.   .4693909    .57802963
  24. .54471207      .485219
  25.   .4448814    .19470882
  26.   .5148239    -.4055132
  27. -.0379467    -.6509919
  28.   .3912201    -.2501198
  29.   .3898964 -.0038502216
  30.   .9521637    1.3811316
  31.   .7475395    .56429815
  32.   .4368057    .53111124
  33.   .7330322     .7672749
  34. end
复制代码
是在AER上看到的一篇文章的程序,是想通过循环计算出相应的参数值。但我在stata中运行时,总提示在forvalues语句后提示 invalid syntax,不知道问题出在哪里,请黄老师和各位高手指点。
gen phiG=.
gen varzG=.
gen varzB=.
gen cov=.
gen varx=.
gen nG=.
gen nB=.
gen nTot=.

gen phiB=.
gen sigmasqx=.
gen sigmasqy=.
gen sigmasqzG=.
gen sigmasqzB=.
gen beta=.
gen lambdaG=.
gen lambdaB=.

local rownum = 0

local rowsboth = 5

local goodsample = "wbdqtotal>3.5"
local badsample = "wbdqtotal<3.5"

forvalues j = 1(1)`rowsboth' {
        local rownum = `rownum' + 1
        replace phiG = 1.1 - `j'*0.1 if _n==`rownum'
        qui: corr lngdpwdilocallongdiff lndnlongdiff if `goodsample', cov
        replace varzG = r(Var_1) if _n==`rownum'
        replace nG = r(N) if _n==`rownum'
        qui: corr lngdpwdilocallongdiff lndnlongdiff if `badsample', cov
        replace varzB = r(Var_1) if _n==`rownum'
        replace nB = r(N) if _n==`rownum'
        qui: corr lngdpwdilocallongdiff lndnlongdiff, cov
        replace varx = r(Var_2) if _n==`rownum'
        replace cov = r(cov_12) if _n==`rownum'
        replace nTot = r(N) if _n==`rownum'

        replace sigmasqy = varzG * phiG if _n==`rownum'
        replace phiB = sigmasqy / varzB if _n==`rownum'
        replace beta = cov / sigmasqy if _n==`rownum'
        replace sigmasqx = varx - cov if _n==`rownum'
        replace sigmasqzB = varzB - sigmasqy if _n==`rownum'
        replace sigmasqzG = varzG - sigmasqy if _n==`rownum'

        replace lambdaB = sigmasqx*sigmasqy / ( sigmasqx*sigmasqy + sigmasqzB*(beta*beta*sigmasqy + sigmasqx) ) if _n==`rownum'
        replace lambdaG = sigmasqx*sigmasqy / ( sigmasqx*sigmasqy + sigmasqzG*(beta*beta*sigmasqy + sigmasqx) ) if _n==`rownum'
}

local rownum = `rownum' + 1
replace phiB = phiB[2] if _n==`rownum'
local phiB = phiB[2]
qui: corr lngdpwdilocallongdiff lndnlongdiff if `badsample', cov
replace varzB = r(Var_1) if _n==`rownum'
replace nB = r(N) if _n==`rownum'
replace varx = r(Var_2) if _n==`rownum'
replace cov = r(cov_12) if _n==`rownum'
replace nTot = r(N) if _n==`rownum'

replace sigmasqy = varzB * phiB if _n==`rownum'
replace beta = cov / sigmasqy if _n==`rownum'
replace sigmasqx = varx - cov if _n==`rownum'
replace sigmasqzB = varzB - sigmasqy if _n==`rownum'

replace lambdaB = sigmasqx*sigmasqy / ( sigmasqx*sigmasqy + sigmasqzB*(beta*beta*sigmasqy + sigmasqx) ) if _n==`rownum'

keep  phiG phiB beta lambdaG lambdaB sigmasqy sigmasqzB sigmasqzG sigmasqx
order phiG phiB beta lambdaG lambdaB sigmasqy sigmasqzB sigmasqzG sigmasqx

报纸
黃河泉 在职认证  发表于 2019-6-28 09:03:27
草蜢718 发表于 2019-6-28 08:32
谢谢黄老师,刚学stata不久,对这块还不是很熟悉。
其实很多老手也是会用 loop 来计算 (如同我所说,bad idea)。

地板
草蜢718 发表于 2019-6-28 09:11:24
黃河泉 发表于 2019-6-28 09:03
其实很多老手也是会用 loop 来计算 (如同我所说,bad idea)。
老师那您能看出forvalues循环语句这块有什么问题吗?因为想要搞懂论文中的参数是怎么得到的

7
黃河泉 在职认证  发表于 2019-6-28 10:06:09
草蜢718 发表于 2019-6-28 09:11
老师那您能看出forvalues循环语句这块有什么问题吗?因为想要搞懂论文中的参数是怎么得到的
我完全没兴趣看这种东西!

8
Mirkwood~ 发表于 2020-5-11 20:36:01
草蜢718 发表于 2019-6-28 08:32
谢谢黄老师,刚学stata不久,对这块还不是很熟悉。
抱歉,刚刚手滑戳了一下踩,发现不能取消,实在是对不起

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 15:24