Stata小白编程:暂元及macrolists命令

文摘   教育   2024-11-11 22:00   中国  


👇 连享会 · 推文导航 | www.lianxh.cn

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

 课程特色 · 2024机器学习与因果推断

  • 懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。
  • 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。

作者:宋津泽、徐琬萱 (中山大学)
邮箱:songjz3@mail2.sysu.edu.cn


目录

  • 1. 暂元介绍

    • 1.1 暂元定义及其分类

    • 1.2 暂元的基本功能

    • 1.3 暂元的应用场景

  • 2. macro lists 介绍

    • 2.1 语法介绍

    • 2.2 对单个暂元的操作命令

    • 2.3 对多个暂元的操作命令

  • 3. 相关推文



温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

1. 暂元介绍

1.1 暂元定义及其分类

暂元 (Macro) 是以一个简单的单词来指代一串复杂的字符或表达式。并且根据有效使用范围,暂元又可分为局部暂元 (local macro) 和全局暂元 (global macro)。其中,局部暂元仅在定义它的 do 文件中有效,更精确的来说,局部暂元仅在同时运行的代码范围内有效。相对而言,全局暂元的有效范围更广,即在 do 文件关闭后仍然存在,直至退出 Stata。

1.2 暂元的基本功能

存放数字,即将数值赋给此暂元。

. local a 5
. local b = `a' + 7
. dis `a'
5
. dis `b'
12

存放文字,包括变量名称和长字符。

. sysuse auto, clear
(1978 Automobile Data)
. local v1 "price"
. local v2 "weight rep78 length"
. reg `v1' `v2'

Source | SS df MS Number of obs = 69
---------+-------------------------------- F(3, 65) = 16.16
Model | 246375736 3 82125245.5 Prob > F = 0.0000
Residual | 330421222 65 5083403.42 R-squared = 0.4271
---------+-------------------------------- Adj R-squared = 0.4007
Total | 576796959 68 8482308.22 Root MSE = 2254.6
------------------------------------------------------------------------
price | Coef. Std. Err. t P>|t| [95% Conf. Interval]
---------+--------------------------------------------------------------
weight | 5.252098 1.103427 4.76 0.000 3.048401 7.455794
rep78 | 844.9462 302.0363 2.80 0.007 241.738 1448.154
length | 103.6016 37.78457 -2.74 0.008 -179.0626 -28.14063
_cons | 6850.952 4312.738 1.59 0.117 -1762.181 15464.08
------------------------------------------------------------------------

暂元可进行嵌套,即暂元中的暂元。

. local a1 = 2
. local a2 "var"
. local a3 = 2 * `a1'
. local a4 `a`a1''
. local `a2'`a1' = 2 * `a3'

. dis `a1'
2
. dis "`a2'"
var
. dis `a3'
4
. dis "`a4'"
var
. dis ``a2'`a1''
8

注:调用 numeric 类暂元时,两侧分别加 Tab 键上方反引号 ` 和 Enter 键左边单引号 '。调用 string 类暂元时,需要在 ` ' 的基础上两侧加双引号 "` '"

1.3 暂元的应用场景

若回归变量较为复杂且数量太多,或是需要将不同的回归方式进行分组罗列时,将变量名称直接写入 do 文档会显得繁琐冗杂,此时将变量赋给暂元,就可以使文档较为简洁美观。

local x var1 var2 var3
. reg y `x'

在循环中使用暂元会非常方便。

local variables var1 var2 var3
. foreach var of varlist `variables'{}

2. macro lists 介绍

除上述基本功能外,Stata 还为暂元提供了许多额外的功能。

2.1 语法介绍

{local|global} macname : list {uniq|dups...} macname

  • 其中,macname 指暂元的名称。需要注意的是,在输入 local result : list list1 | list2 时,我们不需要在 list1list2 的两侧加入暂元引用符;
  • 暂元中包含空格的元素需要用 " " 将其括起来。例如,暂元 A 中有四个元素 first elementsecondthird element4,此时要写成 "first element" second "third element" 4
  • Stata 会将暂元中所有的重复项视为不同项。例如,暂元 A = "a b c b",暂元 B = "b b",那么A | B = "a b c b",如果暂元 B = "b b b",那么 A | B = "a b c b b"

更多详细介绍,请参考 help macro lists

2.2 对单个暂元的操作命令

uniq A:将暂元 A 中重复值删除

. local A1 a a b c a
. local result1 : list uniq A1
. di "`result1'"
a b c

dups A:仅保留 A 中重复值

. local A2 a a b c a
. local result2 : list dups A2
. di "`result2'"
a a

sort A:将 A 中元素按字母表或字符值排序

. local A3 a a b c a
. local result3 : list sort A3
. di "`result3'"
a a a b c

retokenize A:将 A 中元素间多余空格删除

local A4 "a       a b c a"
local result4 : list retokenize A4
. di "`result4'"
a a b c a

sizeof A:A 中元素的个数

local A5 "a b c a"
local result5 : list sizeof A5
. di "`result5'"
4

posof "element" in A:返回某个元素在 A 的第几个位置,若该元素在 A 中不存在,则返回 0

local A6 "a b c a"
local result6 : list posof "c" in A6
. di "`result6'"
3
local result7 : list posof "e" in A6
. di "`result7'"
0

2.3 对多个暂元的操作命令

A | B:返回 A 和 B 的并集

. local A1 a b c
. local B1 b d c
. local new1 : list A1 | B1
. di "`new1'"
a b c d

A & B:返回 A 和 B 的交集

. local A2 a b c d
. local B2 b d e f
. local new2 : list A2 & B2
. di "`new2'"
b d

A - B:将 A 中 B 的元素剔除

. local A3 a b c d
. local B3 b a d e f
. local new3 : list A3 - B3
. di "`new3'"
c

A == B:判断 A 和 B 的元素及其顺序是否相同,若相同则返回 1,否则返回 0

. local A4 a b c d
. local B4 a b c d
. local C4 a c b d
. local new4 : list A4 == B4
. local new5 : list A4 == C4
. di "`new4'"
1
. di "`new5'"
0

A === B:判断 A 和 B 的元素是否相同 (不考虑顺序),若相同则返回 1,否则返回 0

. local A4 a b c d
. local B4 a c b d
. local new4 : list A4 === B4
. di "`new4'"
1

A in B:判断 A 是否是 B 的子集,若是则返回 1,否则返回 0

. local A5 a b c d
. local B5 a b c d e
. local C5
. local new5 : list A5 in B5
. local new6 : list C5 in B5
. di "`new5'"
1
. di "`new6'"
1

3. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 暂元 课程主页, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:计量专题
    • ⛵ 连享会 - 课程主页
    • Stata 33 讲 - P2 暂元
  • 专题:Stata命令
    • moremata程序包手动安装方法
  • 专题:Stata绘图
    • Stata绘图:用暂元统一改变图形中的字号
  • 专题:Stata程序
    • Stata程序:最大公约数和最小公倍数
    • Stata程序:10 分钟快乐编写 ado 文件
    • Stata程序:Monte-Carlo-模拟之产生符合特定分布的随机数
    • Stata程序:我的程序多久能跑完?
    • Stata程序:暂元-(local)-和全局暂元-(global)
    • Stata程序:切割文件路径和文件名
    • Stata程序:在我的程序中接纳另一个程序的所有选项
    • Stata程序:是否有类似-Python-中的-zip()-函数
    • Stata 程序:数值求解极值的基本思想
  • 专题:合成控制法
    • Stata:合成控制法程序分享
  • 专题:内生性-因果推断
    • Robins - Causal Inference: What if - 数据和程序


🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。

连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
 最新文章