找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 382|回复: 0

AI可以编写Stata代码吗?

[复制链接]
发表于 2025-9-6 22:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
作者:微信文章

🍓 课程推荐:连享会:2025生成式人工智能专题·网络直播
嘉宾:杨阳 (香港浸会大学)
时间:2025 年 9 月 13, 14, 20 日
咨询:王老师 18903405450(微信)

w1.jpg


作者: 于凡 (湖北经济学院)
邮箱: 1220447487@qq.com



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

w2.jpg



目录

    导言

    借助 ChatGPT 写 Stata 代码






Source:Owen Ozier, Can AI write your Stata code?. Blog, 2023. -Link-


导言

随着 AI 技术的迅速发展,很多人开始担心自己的工作是否会被 AI 取代?也有人很兴奋,认为日后不用再花大量的时间学习编程了,因为这些工作都可以交给 AI 来完成?

此前,连享会也发布过几篇关于此话题的推文:
    余坚, 2023, Stata:ChatGPT 你能帮我干点啥?, 连享会 No.1164.连玉君, 2023, 连玉君:我与 ChatGPT 聊了一个月, 连享会 No.899.

一个基本的共识是,ChatGPT 能做什么取决于使用者如何提问,如何引导 ChatGPT。这里就出现了一个有意思的悖论:如果你是一个新手,没有能力提出有深度的问题,那么 ChatGPT 其实作用甚微;如果你是个老司机,ChatGPT 可以助力,帮你完成很多基础的工作,让你可以把更多的精力用在深度思考、架构搭建方面。这意味着,ChatGPT 会加大人与人之间的「能力差距」,甚至是「贫富差距」。

那么,如果不仅限于 ChatGPT,从更一般的意义上讲,AI 可以直接用来帮我们编写 Stata 代码吗?

下面,我们就和大家一起分享一下来自 Williams College 的 Owen Ozier 教授的观点。整体上,他认为短期内 AI 无法接替我们的 Stata 编程工作。

借助 ChatGPT 写 Stata 代码

当今世界,人工智能似乎可以做任何事情,如格式化参考文献,编写招聘简介,或者一起撰写论文,即使有时侯它也会杜撰出一些令人匪夷所思的答案。但,人工智能能够用来编码吗?我尝试向 OpenAI 的 ChatGPT 询问了六段 Stata 代码(其中一段用其他编程语言编写),最终得到的结果却喜忧参半。对于一些简单的问题,它可以给出正确的答案,针对存在异常的代码,它也可以给出有修改过后的范例代码。尽管被大肆宣传、炒作,但依旧没有人愿意聘请 ChatGPT 作为其研究助理。

首先,我询问了一个简单的格式化图形的问题:如何更改图形上的 x 轴标签, ChatGPT 的表现出色。

w3.jpg
Ai-Stata-owen1

图 1:Chatting with ChatGPT

如上图所示,我询问的问题位于最顶部。紧接着,ChatGPT 针对我的问题立马给出了回复,ChatGPT 按照预期改进了图表代码,其给出的两个答案都以期望的间隔标记轴,尽管只有一个答案用了相关的数字标识进行标记。到目前为止还不错。ChatGPT 得到 1 分,人类暂时未得分,因此记为 0 分。

其次,我询问“如何连续两次让 Stata 的随机数生成器生成相同的随机数序列,以实现代码可复用性?” ChatGPT 给出了正确的答案,即设置随机种子,但立即给出了一段因 foreach 存在语法错误而不能正常运行的代码片段。ChatGPT 经过几轮建议后才给出了一段有效的代码片段,即至少第一部分是对的。本局为平局, ChatGPT 仍以 1-0 领先人类。

然后,我询问了 summarize 命令。我需要在“默认汽车数据集”中汇总汽车价格时,它显示小数点后三位。我询问 ChatGPT 如何获得小数点后第四位,以及如何在不进行任何额外计算的情况下获得方差。针对以上两个问题,经过多轮反馈修改,最终 ChatGPT 给出了满意的答案。错误的联想是 ChatGPT 第一个最大的幻觉:ChatGPT 居然发明了一个在 Stata 中根本就不存在的函数—— pwvariance ,这个函数完全是虚构的。最终,在大量指导下,ChatGPT 依旧找到了一个行之有效的解决方案。ChatGPT 本轮解决问题的过程不太理想,与人类战成 1-1 平。

接着,我询问除了“duplicates list”之外,使用什么样的 Stata 命令可以在某个数据集中通过一个标识符唯一地表示所有的观察对象。在 Googel 上快速地搜索后,显示的结果有IPA 对该问题给出的答案,但我无法说服 ChatGPT 给出这个答案。因为 ChatGPT 提出了一些行不通的做法,如“tabulate, nodup”,这似乎是 SAS 和 Stata 语法的混合。根据背靠背幻觉(back-to-back),ChatGPT 现在以 1-2 落后人类。

最后,根据 David McKenzie 的建议,我询问 ChatGPT 将一些非常标准的“经济语言”翻译成回归命令。我问它:“我正在使用 Stata 中内置的 1978 年汽车数据集进行数据分析,我想对汽车重量进行回归分析,解释变量为「汽车产地属性 (foreign)」,同时控制长度和维修记录的固定效应,并在品牌层面对标准误差进行聚类调整。我应该使用什么命令?” ChatGPT 必须猜测变量名称,通过经过一系列的调整,ChatGPT 给出的结果为:

xtreg weight i.foreign##c.length c.rep78, re i(brand) cluster(brand)

这是不正确的。该结果添加了汽车产地 (foreign) 与长度 (length) 两个变量(并未要求的属性)之间的交互作用,且并不包括长度和修复记录固定效应,而是将它们视为连续回归量。ChatGPT 需要一些亲力亲为的微观管理!更好的答案是:

reg weight i.foreign i.length i.rep78, cluster(brand)

或者,其并没有识别出第一个回归数据已经是虚拟变量,因此,下面三个命令(或其他可能性)中的任何一个都是很好的答案:

reg weight foreign i.length i.rep78, cluster(brand)

areg weight foreign i.rep78, absorb(length) cluster(brand)

reghdfe weight foreign, absorb(length rep78) vce(cluster brand)

最后,当 ChatGPT 以 1-3 落后人类时,我尝试使用一些小技巧。我要求 ChatGPT 提供一段使用递归函数生成斐波那契数的 Stata 代码,该代码可以。ChatGPT 提供了几段看起来像 Stata 的代码片段,但它无法正确使用暂元 (local),也没有使用诸如 r-class 或 e-class 类型的的标准的 Stata 编程语法。因此,若不做进一步的手动修改,它给出的代码是无法正确运行的。

我猜或许是上述任务对于 ChatGPT 而言太难了,于是我向 ChatGPT 询问了 R、Python、Matlab 和 C 中关于相同问题的函数。在其他四种语言中,ChatGPT 都提供了一次运行即正确的代码。造成这种情况的原因有很多:首先,人们并不会使用 Stata 编程语言来解决这类问题,或者说它并不是为这些任务而设计的,所以即使可以通过 Stata 代码解决这些问题,但它并不是 Stata 中常规的编程范式或有效的工作方式。这或许是一个不公平的挑战,所以本轮并不会更新得分。另一个可能的因素是互联网上提供的建议的可用性大大存疑,因为 ChatGPT 训练所需要的文本来源正是互联网。下图显示了“Stata 语言”相对于“C 语言”等其他语言建议的可用性,从这些短语的 Google 搜索结果总数可以看出:Stata 的搜索结果比 Matlab 少一个数量级,并且进一步落后于 Python、R 和 C(尽管 Google 搜索单字母字符串可能会产生一些测量误差)。

w4.jpg
Ai-Stata-owen2

图 2:Google search results for different programming languages

总体而言,我的感受和很多人相似,即 ChatGPT 在回答计算机编程类问题时,“错误率很高”。ChatGPT 生成的代码可能有助于经验丰富的程序员入门,但对于新手来说,由于 ChatGPT 给出的代码并不准确,往往会导致新手花大量的时间调试错误,甚至陷入自我怀疑。简而言之,研究助理还不会失业。Stata 编程目前是安全的,短期内不会被人工智能接管。

w5.jpg

🍓 课程推荐:连享会:2025生成式人工智能专题·网络直播
嘉宾:杨阳 (香港浸会大学)
时间:2025 年 9 月 13, 14, 20 日
咨询:王老师 18903405450(微信)



连享会微信小店上线啦!


Note:扫一扫进入“连享会微信小店”,你想学的课程在这里······

w7.jpg



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



🍏 关于我们


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

w10.jpg
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+2, 2025-10-24 16:11 , Processed in 0.142638 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表