【问题标题】:Stata: using local variables to build a program in StataStata:在Stata中使用局部变量构建程序
【发布时间】:2014-04-29 06:34:07
【问题描述】:

我想根据程序用户的兴趣进行回归。

例如,我想运行以下回归并能够更改输入

reg 更喜欢 inSchool#female#treatment

我有多种偏好选择,例如数学、科学、艺术等...

我想要的是类似的东西

local preference = math (where I can choose the others as well)

local compareSchooling = Y
local compareGender = Y

reg preference inSchool#female#treatment

if compareSchooling=Y & compareGender=Y {
test 1.inSchool#1.female#1.treatment = 0.inSchool#0.female#1.treatment
}

这样做的动机是其他人可以轻松地使用该程序来自定义他/她的分析。

但是,我很难让机制正常工作。

如果您对实施有更好的想法,那么我会全力以赴。

谢谢!

【问题讨论】:

    标签: if-statement statistics regression stata


    【解决方案1】:

    在您的示例中很难确定需要程序的一般问题。

    此外,当您询问 Stata 程序时,Stata 程序员往往会认为您希望编写 program 并以此方式定义一个新命令,但并不明显您真的需要编写一个新命令在这里指挥。

    我举的例子是regress 和test 可以针对不同的变量重复运行。

    但是有些细节是模糊的。 Y 是什么?还是只是表示“是”的一种方式?如果您要以交互方式运行此程序,则使用本地宏将是徒劳的,因为您只需将名称放入本地宏并再次取出。

    如果您确实编写了一个程序,那么您需要用帮助文件记录它以解释它的作用,或者至少不这样做。出于什么目的?那么,用户(您或其他人)可以重复两个具有不同细节的命令吗?那里的收益尚不清楚。

    据我了解你的问题,主要需求根本不是程序,而是

    1. 将重复的命令放入一个 do-file 并允许该 do-file 接受参数。这是一个被大大低估的可能性。见the [U] manual, 16.4

    2. 了解如何使用foreach 循环遍历变量。

    注意:“局部变量”不是标准的 Stata 术语;它们总是被称为“本地宏”。在 Stata 中,变量是数据集中的一列。

    【讨论】:

    • 我喜欢你使用 do 文件传递​​参数的想法。然后我会使用 if 语句根据参数捕获用户感兴趣的案例吗?我可以写出所有的回归和 f 检验,但是 do 文件的目标是只表示用户感兴趣的比较。感谢您的帮助。
    • STATA中还有else if语句这样的东西吗?我有使用 python 编写的经验,我发现这种编码有点挑战性。
    • 在else 等上阅读help ifcmd。否则,请提出一个详细的新问题并尝试一些代码。如果用户不了解 Stata,您将不得不想办法让他们指定他们感兴趣的内容。拼写是“Stata”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多