使用两个不同版本的Stata

时间:2018-04-05 09:58:30

标签: stata

我在两个地方工作,一个是我使用Stata 13,另一个是Stata 14。

即使某些特定命令发生了变化,我是否可以构建一个在两个版本中都有效的文件?

例如,以下代码无法使用Stata 13

sysuse auto, clear
ci means mpg price, level(90)

但是这个有效

sysuse auto, clear
ci mpg price, level(90)

Uising Stata 14,它将是相反的。

我考虑添加capture,但在Stata 13或Stata 14中没有任何反应。

. sysuse auto, clear
(1978 Automobile Data)

. capture ci means mpg price, level(90)

. capture ci mpg price, level(90)

更新noisily之后添加capture不幸没有帮助。以下是使用Stata 14的示例

 . sysuse auto, clear
(1978 Automobile Data)

. capture noisily ci mpg price, level(90)
you must specify one of means, proportions, or variances following ci

. capture noisily ci means mpg price, level(90)

    Variable |        Obs        Mean    Std. Err.       [90% Conf. Interval]
-------------+---------------------------------------------------------------
         mpg |         74     21.2973    .6725511        20.17683    22.41776
       price |         74    6165.257    342.8719        5594.033     6736.48

. gen lb=r(lb) 

. su lb

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
          lb |         74    5594.033           0   5594.033   5594.033

但是当你反转两行代码时(使用Stata 14),这个不起作用:

   . sysuse auto, clear
    (1978 Automobile Data)

    . capture noisily ci means mpg price, level(90)

        Variable |        Obs        Mean    Std. Err.       [90% Conf. Interval]
    -------------+---------------------------------------------------------------
             mpg |         74     21.2973    .6725511        20.17683    22.41776
           price |         74    6165.257    342.8719        5594.033     6736.48

    . capture noisily ci mpg price, level(90)
    you must specify one of means, proportions, or variances following ci

* The program didn't stop but:

    . gen lb=r(lb) 
    (74 missing values generated)

    . su lb

        Variable |        Obs        Mean    Std. Dev.       Min        Max
    -------------+---------------------------------------------------------
              lb |          0

最后,请注意,与Stata 14一起正常工作的第一个代码不适用于Stata 13

. sysuse auto, clear
(1978 Automobile Data)

. capture noisily ci mpg price, level(90)

    Variable |        Obs        Mean    Std. Err.       [90% Conf. Interval]
-------------+---------------------------------------------------------------
         mpg |         74     21.2973    .6725511        20.17683    22.41776
       price |         74    6165.257    342.8719        5594.033     6736.48

. capture noisily ci means mpg price, level(90)
variable means not found

. gen lb=r(lb) 
(74 missing values generated)

. su lb

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
          lb |         0

1 个答案:

答案 0 :(得分:0)

如果您希望使用capture来捕获错误,也会有后续行动。在这里,您首先尝试版本14语法,当且仅当失败时,您尝试使用版本13语法。

sysuse auto, clear
capture noisily ci means mpg price, level(90)
if _rc ci mpg price, level(90)
gen lb = r(lb) 

此处if _rcif _rc > 0的Stataish缩写,当且仅当程序失败时才会发生。 _rc为0意味着一切都是合法的(具有微小的资格)。 _rc是返回码。

我不清楚在变量中放一个值是个好主意,但这是一个不同的问题。此外,您要求两个置信区间,并且只有第一个的结果将保留在内存中。