楼主: pengfeizou
3969 4

[Stata高级班] 请教连老师:如何打印出do文件中的行号 [推广有奖]

  • 0关注
  • 0粉丝

VIP

硕士生

75%

还不是VIP/贵宾

-

威望
0
论坛币
3459 个
通用积分
29.5469
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2583 点
帖子
122
精华
0
在线时间
206 小时
注册时间
2006-2-11
最后登录
2023-10-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
       连老师:您好!我购买了您的初级和高级stata视频,感觉很棒,受益非浅!
现在我想学点编程,想打印几个do 文件或ado文件,想将行号和内容一起打印出来,请问要怎么办才行,我看您的讲义是打印出了行号的,您有什么高招?
      另外,您在视频8.8节中以xtreg.ado为例介绍了程序的结构,告诉我们用viewsource xtreg.ado察看该程序的内容。我打开看了,发现有几个地方不等,不好意思,我初学编程,问题太简单,不要笑话我。
      1、_fv_check_depvar `depvar'是什么意思,它有什么作用?
      2、58行为: local fvops = "`s(fvops)'" == "true" | _caller() >= 11      其中根据帮助文件,我大概知道"`s(fvops)'" == "true" 用于检查variables中是否定义factor variables , “factor variables ”是什么变量?有什么用?等式_caller() >= 11   是不是用来判别程序版本?为什么要判定版本?整个58行有什么作用?  
      3、  83行 _xt, i(`i')  是什么意思?
      真不好意思,呵呵!
下面是xtreg.ado的代码,红色的行是我的问题行。


*! version 1.7.6  21jun2011
program define xtreg, eclass byable(recall) sort prop(xt mi)
version 6, missing
local version : di "version " string(_caller()) ", missing:"
if replay() {
  if `"`e(cmd)'"'==`"xtreg"' {
   if _by() { error 190 }
   xtreg_`e(model)' `0'
   exit `e(rc)'
  }
  else if `"`e(cmd2)'"' == "xtreg" {
   if _by() { error 190 }
   `e(cmd)' `0'
   exit `e(rc)'
  }
  error 301
  /*NOTREACHED*/
}

syntax varlist(fv ts) [if] [in] [aw fw pw iw] [, ///
  I(varname) BE FE RE MLE PA GEE  ///
  VCE(passthru)    ///
  *     ///
]

gettoken depvar rest: varlist
_fv_check_depvar `depvar'

local cmdline : copy local 0
if ("`be'"!="") + ("`fe'"!="") + ("`re'"!="") + ("`pa'"!="") +  ///
  ("`gee'"!="")>1 {
  di in red "choose only one of be, fe, re, or pa"
  exit 198
}
if "`be'`re'" != "" & "`weight'" != "" {
  di in red "`weight' not allowed with between-effects and " ///
     in red "random-effects models"
  exit 101
}
if "`fe'" != "" & "`weight'"=="iweight" {
  di in red "`weight' not allowed with fixed-effects models"
  exit 101
}
if "`mle'" != "" & ("`weight'"=="pweight" | ///
   "`weight'"=="aweight" | "`weight'"=="fweight") {
  di in red "`weight' not allowed with maximum-likelihood " ///
     in red "random-effects models"
  exit 101
}
if "`pa'`gee'" != "" & "`weight'"=="aweight" {
  di in red "`weight' not allowed with population-averaged " ///
     in red "model"
  exit 101
}

local fvops = "`s(fvops)'" == "true" | _caller() >= 11
if _by() & `"`vce'"' != "" {
  di as err "the by prefix may not be used with vce() option"
  exit 198
}
if `"`vce'"' != "" {
  local options `"`options' `vce'"'
}
marksample touse
if "`gee'" != "" { local pa "pa " }
if `"`be'"'!=`""' | `"`fe'"'!=`""' {
  if `"`mle'"'!=`""' | `"`pa'"'!=`""' { error 198 }
}
else {
  if `"`mle'"'!=`""' & `"`pa'"'!=`""' { error 198 }
}
if "`be'"=="" & "`fe'"=="" & "`re'"=="" & "`pa'"=="" ///
  & "`gee'"=="" & "`mle'"=="" {
  local re = "re"
}
     /* check collinearity */
_xt, i(`i')
local ivar "`r(ivar)'"
if subinword("`varlist'","`ivar'","",.) != "`varlist'" {
   di as err "the panel variable `ivar' may not be " /*
   */ as err "included as an independent variable"
   exit 198
  }
if `fvops' {
  local rmcoll "version 11: _rmcoll"
  local fvexp expand
}
else local rmcoll _rmcoll
qui `rmcoll' `varlist', `fvexp'
local retlist `"`r(varlist)'"'
tempvar ivar2
qui sum `ivar'
qui gen double `ivar2' = (`ivar'-r(mean))/r(sd)
local retlist `retlist' `ivar2'
qui `rmcoll' `retlist', `fvexp'
if !`fvops' {
  if "`r(varlist)'" ~= "`retlist'" {
   di as err "independent variables " _c
   di as err "are collinear with the panel variable" _c
   di as err " `ivar'"
   exit 198
  }
}
local options `options' i(`i')
if "`weight'" == "aweight" & `"`fe'"' == "" {
  di in red "aweight not allowed"
  exit 101
}
if `"`be'"'!=`""' {
  if "`weight'" != "" {
   di in red "`weight' not allowed with be model"
   exit 101
  }
  `version' ///
  xtreg_be `varlist' if `touse' /* [`weight'`exp'] */, ///
   be `options'
}
else if `"`fe'"'!=`""' {
  if "`weight'" == "iweight"  {
   di in red "`weight' not allowed with fe model"
   exit 101
  }
  `version' ///
  xtreg_fe `varlist' if `touse' [`weight'`exp'] , ///
   fe `options'
}
else {
  if `"`mle'"' == `""'  & `"`pa'"' == `""' {
   if "`weight'" != "" {
    di in red "`weight' not allowed with re model"
    exit 101
   }
   `version' ///
   xtreg_re `varlist' if `touse' ///
    /* [`weight'`exp']*/ , re `options'
   version 10: ereturn local cmdline `"xtreg `cmdline'"'
   exit
  }
  if `"`mle'"' == `""' {
   `version' ///
   xtgee `varlist' if `touse' [`weight'`exp'], ///
    `options'
   est local predict xtreg_pa_p
   est local estat_cmd "" // reset from xtgee
   est local cmd2 "xtreg"
   est local model "pa"
   version 10: ereturn local cmdline `"xtreg `cmdline'"'
   exit
  }
  else {
   `version' ///
   xtreg_ml `varlist' if `touse' [`weight'`exp'], ///
     mle `options'
  }
}
version 10: ereturn local cmdline `"xtreg `cmdline'"'
exit `e(rc)'
end


二维码

扫码加我 拉你入群

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

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

关键词:如何打印 do文件 连老师 Collinearity fixed-effect 如何

本帖被以下文库推荐

沙发
arlionn 在职认证  发表于 2011-11-22 20:07:02 |只看作者 |坛友微信交流群
行号答复如下:
   1. 输入 doedit 命令,打开 do-file editor;
   2. 依次点击 Edit --> Preference ,在弹出窗口 [Editor] 下拉菜单中勾选 【line numbers】 即可。

编程的问题,你提到了两个问题都是很细微的问题。我建议你在最初学编程时还是要已基本的、核心的内容为基础,打好基础。过分纠结于一些细节问题会导致你只会些花拳绣腿,无法切实提高能力。

使用道具

藤椅
pengfeizou 发表于 2011-11-22 21:07:45 |只看作者 |坛友微信交流群
谢谢你的解释:只是我在这两行卡去了,能否简单解释一下。
1、_fv_check_depvar `depvar'是什么意思,它有什么作用?
2、58行为: local fvops = "`s(fvops)'" == "true" | _caller() >= 11      该行是什么意思?  

使用道具

板凳
arlionn 在职认证  发表于 2011-11-23 09:15:28 |只看作者 |坛友微信交流群
_fv_check_depvar 是一个子程序,目的是检验被解释变量是否也是因子变量。
help _caller() 可以理解 _caller() 函数的作用。
至于 s(fvops),请查看 help sreturn。
第58行的作用在于,判断该命令是否支持因子变量表达式,以及 Stata 的版本是否是 Stata11以上。

其实,上述内容都是我在 Stata 高级视频中讲解的那些内容的应用。因此,基础最重要!

使用道具

报纸
arlionn 在职认证  发表于 2011-11-23 09:16:22 |只看作者 |坛友微信交流群
我是很想开一个专门讲编程的培训课程,无奈曲高和寡,感兴趣的人有限。大家都是以应用为主,呵呵。

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-28 23:12