楼主: 嘟嘟嘟762
922 1

[求助] 做stata循环语句出现invalid syntax,请求各位老师答疑解惑 [推广有奖]

  • 0关注
  • 0粉丝

小学生

64%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
1
精华
0
在线时间
34 小时
注册时间
2023-4-14
最后登录
2024-7-4

楼主
嘟嘟嘟762 发表于 2024-1-5 08:46:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
做stata循环语句出现invalid syntax,forvalues i = 2014 2016 2018 2020{preserve
keep if cyear ==`i'
global xlist " allage degree marriage cfps_gender"
set seed 1000
gen tmp = runiform()
sort tmp
psmatch2 treat $xlist , n(3)  out(p601)  logit ate
pstest $xlist ,both graph
psgraph,bin(20)
**匹配质量
***匹配前
tw(kdensity _pscore if treat == 1)///
(kdensity _pscore if treat== 0)
**匹配后
tw (kdensity _pscore if treat== 1) ///
(kdensity _pscore if (treat==0 & _weight != . ))
drop if _weight == .
save psm_`i',replace

restore
}



二维码

扫码加我 拉你入群

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

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

关键词:invalid SYNTAX Stata Valid 循环语句 stata 经验交流

沙发
att006 发表于 2024-1-5 13:21:13
foreach i of numlist 2014 2016 2018 2020 {  
    preserve  
        keep if cyear == `i'  
        global xlist "allage degree marriage cfps_gender"  
        set seed 1000  
        gen tmp = runiform()  
        sort tmp  
        psmatch2 treat, outcome(Y)  // 请将Y替换为您的实际结果变量  
        xlist, both graph  
        psgraph, bin(20)  
         
        **匹配质量  
        ***匹配前  
        twoway (kdensity _pscore if treat == 1) ///  
               (kdensity _pscore if treat == 0)  
         
        **匹配后  
        twoway (kdensity _pscore if treat == 1) ///  
               (kdensity _pscore if (treat == 0 & _weight != .))  
         
        drop if _weight == .  
        save psm_`i', replace  
    restore  
foreach i of numlist 2014 2016 2018 2020 {  
    preserve  
        keep if cyear == `i'  
        global xlist "allage degree marriage cfps_gender"  
        set seed 1000  
        gen tmp = runiform()  
        sort tmp  
        psmatch2 treat, outcome(Y)  // 请将Y替换为您的实际结果变量  
        xlist, both graph  
        psgraph, bin(20)  
         
        **匹配质量  
        ***匹配前  
        twoway (kdensity _pscore if treat == 1) ///  
               (kdensity _pscore if treat == 0)  
         
        **匹配后  
        twoway (kdensity _pscore if treat == 1) ///  
               (kdensity _pscore if (treat == 0 & _weight != .))  
         
        drop if _weight == .  
        save psm_`i', replace  
    restore  
foreach i of numlist 2014 2016 2018 2020 {  
    preserve  
        keep if cyear == `i'  
        global xlist "allage degree marriage cfps_gender"  
        set seed 1000  
        gen tmp = runiform()  
        sort tmp  
        psmatch2 treat, outcome(Y)  // 请将Y替换为您的实际结果变量  
        xlist, both graph  
        psgraph, bin(20)  
         
        **匹配质量  
        ***匹配前  
        twoway (kdensity _pscore if treat == 1) ///  
               (kdensity _pscore if treat == 0)  
         
        **匹配后  
        twoway (kdensity _pscore if treat == 1) ///  
               (kdensity _pscore if (treat == 0 & _weight != .))  
         
        drop if _weight == .  
        save psm_`i', replace  
    restore  
}
几个问题需要注意:
命令格式:forvalues的语法是forvalues i = min/max,但提供的值不是连续范围,而是一系列单独的年份。在这种情况下可用foreach而不是forvalues。
变量引用:循环内部需要使用宏引用来获取i的值,在变量名前加上反引号(`)和后引号(')实现,但代码里面已部分正确地用了这种格式。
括号和代码块:Stata代码块用大括号 {}定义。代码里面已包含了这些括号,但需要正确匹配。
命令分隔:Stata不同的命令用换行符或分号(;)分隔。
图形命令:tw 应该是 twoway 的简写,但要确保已安装了相应的图形包。
注释:在Stata中,注释以星号(*)开始。代码中包含了一些中文注释,不会造成语法错误,但确保它们不会干扰代码的执行。

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

本版微信群
扫码
拉您进交流群
GMT+8, 2026-2-11 16:06