Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者: 连玉君 (中山大学)
邮箱: arlionn@163.com
目录
导言:
这篇推文 1 个月前就已经基本上完成了,我一直放着,时不时地改一下,然后继续使用 ChatGPT,再返回来改这篇推文。如此反复,……。我的纠结之处在于:一个新东西来了,貌似很强大;我们感觉很兴奋,但也有不少隐忧。比如,我在思考:在 ChatGPT 时代,记忆力还重要吗?还需要花那么时间学英语吗?我还要撅着屁股一篇一篇地查文献、读文献吗?
今天扫了一眼知乎,发现很多人在讨论「ChatGPT」。形如我者甚多!
连续试用了一段时间 ChatGPT,谈谈我的感受和想法。
先说说它带给我的惊艳感受:
我写了一个新的 Stata 程序,把代码扔给 ChatGPT,它很快帮我写好了 .sthlp 格式的帮助文件,基本上无需太多修改。它完全读懂了程序的思路,也补充说明了一些关键命令和函数的作用,对用户很贴心。
上初一的儿子要参加一个英语演讲比赛。我们列出提纲后,让 ChatGPT 协助写一篇限时三分钟的演讲稿。它给出了 7-8 种不同风格,有煽情的、幽默的、凝重的。最重要的是,按照正常语速读下来,每一篇的用时都没有超过 3 分钟。
再说说它不靠谱的地方:
因此,我做了一系列测试,以便了解它能干什么,不能干什么,以及我该更好地适应 ChatGPT 来袭的时代。
简单测试后发现:
第一轮: 10:01
第二轮: 10:02
修改后的文稿基本上可以直接使用了 (原来,啰嗦的文字是这样产生的)。
第三轮: 10:13
十分钟后,我再次发问,给出的关键词完全相同,但问题做了一点点修改。得到的答复很不一样:
第四轮: 10:17
又过了几分钟,我把第一轮的问题原封不动地又问了一遍,ChatGPT 的语言表述发生了比较明显的变化:
我觉得不太满意,又重新提问,但要求更具体了。这次,它的表现还不错。
我先让 ChatGPT 把一段中文翻译成英文,然后再让它把自己的英译文翻回中文。整体上表现也不错。
ChatGPT 自己造了一个成语:「千里之提,始于足下」,有点意思。
背景: 下面这段文字是我在 Stata 寒假班中 答疑 时 (https://gitee.com/arlionn/PX/wikis/2023寒假班/初级班-2023寒假/初级班-Day1-答疑.md),直接通过讯飞语音转换出来的表述,很多口语化的表述,也夹杂着不少口头语,比如,「厄,啊,……」,也包含了不少错别字,比如「公私财物->公司财务;心水->薪水」。我想让 ChatGPT 帮我改写成书面语。它完成的不错。所以,日后开会时,可以用录音笔或者语音输入法记录,然后让 ChatGPT 帮我们转化为正式的书面文稿。
说明: 下面这段代码是这两天我刚写的,存放在我的本地电脑上。我没有通过邮件或微信跟任何人分享过这个代码。我想测试一下 ChatGPT 能否读懂这段代码,并帮我写个解读代码的说明文档 (类似于帮助文件或 readme 文档)。整体看来,它完成的不错。
能否帮我分析一下如下 Stata 代码,写一段 200 字左右的文字来介绍这段代码的功能和基本思路。
*!v1
* 2023/2/9 2:05
* Yujun, Lian, arlionn@163.com
*-Goal: protect special 'family name' and trace-back
* . compact_name v // van Putten --> van~~Putten
* . compact_name v, back // van~~Putten --> van Putten
*cap program drop compact_name
program define compact_name, rclass
version 8
syntax varlist(min=1) [, Add(string) Back Symbol(string) Generate(string)]
foreach var of varlist `varlist'{
if "`generate'" == ""{
local genrep "replace" // generate or replace
local varname "`var'"
}
else{
*-confirm the validity of variable name
cap noi confirm new variable `generate'
if _rc{
exit 198
}
else{
local genrep "generate"
local varname "`generate'"
}
}
if `'"`symbol'"' == ""{
local symbol "~~" // symbol used to substitute blank
}
if "`back'" != ""{
local nchanges = 0
qui `genrep' `varname' = subinstr(`var', `"`symbol'"', " ", .)
qui count if strpos(`var', `"`symbol'"')
local nchanges = `nchanges' + r(N)
exit
}
#delimit ;
local list `"
"van de"
"von der"
von
van
de
mc
mac
la
st.
st
"`add'"
"' ;
#delimit cr
local nchanges = 0
foreach name in `list'{
qui `genrep' `varname' = subinstr(`var', " `name' ", `" `name'`symbol'"', .)
qui count if strpos(`var', "`name'")
local nchanges = `nchanges' + `r(N)'
}
dis "(`nchanges' real changes made)"
return scalar N = `nchanges'
}
end
这段 Stata 代码是一个定义程序,名为 compact_name,它的主要目的是保护特殊的姓氏,并可以进行追踪。程序允许用户输入一个变量列表,并通过以下方法对其进行处理:使用一个特定的符号替换姓氏中的空格,或将已经替换的空格还原。
代码的基本思路是,先确定是生成新变量还是替换原有变量,并确定用于替换空格的符号。接着,对于列表中的每个姓氏,使用
subinstr()
函数替换其中的空格。最后,统计并输出实际完成的替换次数。总的来说,这段代码是一个很好的实例,演示了如何在Stata中定义程序并处理字符串。
追问: 能否进一步解释一下上述代码中你认为比较重要的函数或语句,以便帮助那些 Stata 初学者更快地理解这段代码。
ChatGTP-02:
上述代码实现了一个 Stata 自定义函数 compact_name,它的主要目的是对输入的字符型变量(或者多个字符型变量)的家族名称进行保护,并且支持还原操作。具体来说,如果输入的字符串包含 "van de"、"von der"、"von"、"van"、"de"、"mc"、"mac"、"la"、"st."、"st"(这些名称可以通过参数 Add 来增加),那么这个函数就会将这些名称的中间空格替换为符号 "~~",如果需要还原,可以使用参数 Back 来指定。
代码的主要思路是:
利用 foreach
循环语句,遍历需要处理的字符串变量;
使用 confirm
函数判断新生成的变量名是否有效;
如果 Back
参数被指定,则使用 subinstr
函数进行还原操作;
如果没有指定 Back
参数,则循环判断字符串中是否包含待保护的名称,如果包含则使用 subinstr
函数进行保护;
最后使用 dis
语句输出实际执行的修改次数,并返回该数值。
重要的函数与语句:
foreach
:Stata 循环语句,可以对数据集中的多个变量进行批量处理。
confirm
:Stata 内置函数
继续
那么其他几个函数也有必要了解一下。
subinstr()
:这是一个 Stata 内置函数,可以在字符串中替换一个子串。该函数有三个参数:需要处理的字符串,需要被替换的子串,替换后的子串。在代码中,这个函数用于把 "van de", "von der" 等这样的姓氏中的空格替换成双波浪线,或者把双波浪线还原成空格。
count if
:这是 Stata 的一个命令,用于统计符合条件的数据记录数。在代码中,这个命令用于统计空格替换操作对数据的影响。
strpos()
:这也是一个 Stata 内置函数,用于检测字符串中是否包含某个子串。在代码中,这个函数用于判断给定的字符串是否包含 "van de","von der" 等这样的字符串。
这就是该代码的功能和主要思路,包括如何使用 Stata 的函数和命令来完成数据处理。理解这些知识点对于更好地理解代码是非常重要的。
接下来,我们再让它写个 Python 风格的帮助文件:
经过两天的测试,个人认为,对于一个高校教师,ChatGPT 大体上可以协助我们在如下几个方面节省不少时间:
我把 测试 D: 口语转书面语 的截图发给了一位朋友,想听听他的看法。他的回复如下:
一位资深传媒从业者的顾虑:作为工具确实有用。但问题是,对学习文字的人,尤其是学生来说,文字水平将越来越低。是个大问题。
当我个人却没有那么悲观。我的看法如下:
我认为,不必过分担心这个问题。因为,电饭煲、洗衣机、洗碗机 …… 的发明,并没有降低我们做家务的能力,或者,从更一般的意义上来讲,这些东西的发明并没有降低我们的生活能力。
ChatGPT 的表现很大程度上取决于我们怎么提问,这就会倒逼使用者不断思考自己到底想要什么。 在这个过程中,我们思考的深度会提高。很多东西,一旦想明白了,有了深度,写清楚反而是水到渠成。
很多人之所以写不清楚,是因为读的少,思考的少,没有想法。换言之,把一个只有 30 分干货的东西反复打磨,修改,最终最多只能得到 50 分。但是,如果借助 AI 技术,可以节省很多时间,精力就可以放在大量阅读和思考上。写东西时,可能选题就已经可以达到 60 分了,列出合理的提纲又可以得到 20 分,再加上 AI 的打磨,就可以得到一个高分的成品了。
华为,苹果等顶级公司,都专注于系统设计和理念,很多关于技术细节和实现方面的工作都外包出去了,让自己的组织有更多弹性和灵活性。
Note: ^=^ 这部分内容我偷懒了,90% 以上的文字都是 ChatGPT 完成的。
我昨晚和上初一的儿子聊了一个多小时,天马星空地猜想着 ChatGPT 日后可能会在哪些地方现身。
场景一:智能同声翻译器。 未来可能会有一种小型智能翻译器,无论我们去往哪个国家,只需说出母语,该翻译器即可快速将语音转化为文字,进行润色后翻译成外语,并以我们的语音模仿方式播放出来。进一步改进,例如使用技术屏蔽母语声音,将转换过程的时差降至最小(例如,小于0.01秒),以使对方认为我们在用外语与他交流。同样的,对方讲话时,反向流程也会生效,我们的隐形耳机可以听到流畅的母语。对于口音不好或表达不清的用户,这个智能翻译器就会显得更有用了。小孩基本上不用再学习外语了,只需要专注于训练自己的思维能力即可。(注:这段话是经由 ChatGPT 修改后完成的,它的工作量约占 10-20%。)
场景二:软件插件。 在很短的时间内,大多数的 Office 套装软件都会安装一个 ChatGPT 或类似功能的插件,以便提供弹出菜单中的「翻译」、「修改」、「改写为学术论文风格」等选项。此外,在 RStudio、VScode 和 Jupyter Notebook 等软件中安装 ChatGPT 插件(VScode 上已经有了),可实现代码优化、错误检查、帮助文档撰写等功能。(注:这段话是经由 ChatGPT 修改后完成的,它的工作量约占 10%。)
场景三:智能病历生成。 智能设备可以自动记录医生和病人的问诊和查房谈话内容,并在医生修改和确认后生成病历。随着时间的累积,AI 病历的准确性和可靠性将不断提高。医疗行业的效率和质量可以得到大幅提升,因为医生不再需要花大量时间手写病历。此外,AI 病历还可以提供更细致和准确的病史记录,从而帮助医生更好地诊断和治疗病人。(令人担心的是,长此以往,会不会有很多医生失业?) (注:这段话是经由 ChatGPT 修改、补充后完成的,它的工作量约占 60 %,我只是提供了大致的想法。)
场景四:智能简历和广告语 我们只需要提供某位学者的主页,一些他的 Google 学术主页等网址,ChatGPT 就可以快速按要求 (如风格、字数、他在哪些期刊发表了论文、教授哪些课程等),它就可以快速生成「嘉宾介绍」。同样,给定不同的需求,可以让 ChatGPT 写出多种不同风格的广告语
我这个测试有点难度。
大致背景如下:我突然想起小学四年级在同学家读过的一篇小说,至今印象深刻。多年以来,我总会时不时地想起这篇小说,揣摩作者到底想要传达哪些深层的思想。不过,我只记得大致情节,至于小说的作者和篇名之类的,完全想不起来。下面是测试过程:
我改换了五种方式向 ChatGPT 提问,但一直没有得到有效的答案 (ChatGPT 的回答我没有列出来,大致的意思是它找不到,让我提供更多的信息给它。):
我又试了 Google 搜索,依旧无果。最后,只好转用百度。经过三次修改关键词,最终用关键词「印度作家 小说 女孩 陪葬 面纱 火坑 雨」找到了答案——「摩诃摩耶」,是印度诗人泰戈尔的短篇小说,创作于 1892 年。
我感觉自己可能过度使用,甚至误用了 ChatGPT。下面的问答或许可以证实我的猜测:
Note: 下面这段文字完全是我自己写的,没有让 ChatGPT 参与。
总体上,ChatGPT 是很好的助手,但使用效果取决于我们如何向它 发问 和 追问。在不断追问过程中,它给出的回应越来越接近我想要的东西。同时,在这个过程中,它的那些宽泛的回答会给我很多启发,让我在下一轮追问中给出更准确的关键词和限定条件。
还有一个奇妙甚至有点让我担心的感受。
连续两天跟 ChatGPT 互动,我自己写东西的时候会时不时让它帮我修改,我的思考模式会被它「带节奏」,以至于当我大比例使用它给出的文字时,会偶尔产生我也是一个 AI 机器人的感觉。我也会时不时地重新琢磨文字表述,以免让人误解我正在写的文字是由 ChatGPT 生成的。这些不断出现的错觉和莫名的提防心态让人很不舒服。
有些事儿无法阻止,索性顺势而为吧。
最后,给大家出个选择题。
给定关键词「ChatGPT, AI, 担心, 体验, 乐观, 改变学习思路」,下面的两句话一句是我写的,一句是 ChatGPT 写的,你能分辨出那句是它写的吗?
A. 我很担心 ChatGPT 和 AI 带来的冲击,但体验一番后,我还是比较乐观的。以后要改变我的学习思路了。
B. ChatGPT AI 担心影响用户体验,因此努力保持乐观态度并不断改变学习思路。
Note:产生如下推文列表的 Stata 命令为:
lianxh ChatGPT
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh