乐于分享
好东西不私藏

博士生千万别把AI给的,当成自己掌握了这个能力,该吃的苦一点也不能省!分享几个我使用做项目的经验教训

博士生千万别把AI给的,当成自己掌握了这个能力,该吃的苦一点也不能省!分享几个我使用做项目的经验教训
最近来咨询我Stata和实证问题的客户,几乎都已经使用AI做实证了。
有些人以前没有实证基础,连Stata也不熟,跟着AI一步步操作,也能把实证做得七七八八。
可项目一复杂,大家问得最多的还是那句话:“我已经用了最先进的AI模型,为什么还是做不出来?就算结果跑出来了,我也不知道到底对不对。”

等他们把代码发给我,我打开一看。

嗯,确实很AI!
首先是太冗长。Stata的使用人群相对较少,AI在这方面的知识库可能没有那么丰富,写出来的代码有时比较原始。它会使用一些老代码,甚至自己编写一大段操作代码,让人着实看不懂。这些操作在我实际做项目时根本不会使用,却让整份代码变得非常臃肿,很难阅读。
其次,AI给出的代码缺乏美感,不利于检索具体操作。即使发生错误,也不知道错在哪里。它很喜欢在代码开头使用局部宏和各种临时操作,然后让这些设置贯穿整份代码。这样一来,每次操作都要从头开始。可实际做项目时,我们经常只需要修改和执行中间的某一个步骤。如果完全按照AI给出的代码,中间想单独测试时可能无法执行,还要再从头开始,非常不利于边做边改。
01
简单代码可以交给AI,复杂项目仍需要自己判断
从我自己的体验来看,如果只是让AI写一些简单代码,或者写某个模块,的确比较容易。但面对复杂和较大的科研项目,自己还要有丰富的项目经验。这些经验很难只从AI上学会,还需要扎实的计量基础、Stata代码操作基础,以及自己做过大量项目以后形成的判断。只有这样,你才能知道AI做得对不对。
到了这个阶段,我们更多承担的是评审专家的角色。AI负责生成代码,我们负责判断代码能不能用、为什么这样写,以及可能在哪一步出错。如果自己还是初学者,却要指挥AI完成一个复杂项目,只会越做越迷糊。
例如,在复杂项目中,我会特别注意下面几个方面。
02
文件夹管理
一个分析项目通常包含数据测算、数据整理与合并、数据清洗,最后才是数据分析。如果所有代码和数据都挤在一个文件夹下面,最后就是乱七八糟的一堆内容,只会让项目越来越混乱。我的习惯是分别建立原始数据、数据整理、数据分析和实证结果文件夹。
数据整理文件夹存放已经计算好的数据和整理代码,数据分析文件夹存放最终的汇总数据和分析代码,回归表格和其他输出再放进实证结果文件夹。这样后续无论是检查还是复现,都能清楚地找到对应位置,减少出错。
03
项目顺序管理
开始之前,要先规划好整个项目的先后顺序。AI习惯把数据全部合并完以后再进行测算,这很容易让项目变得混乱。
我多年的习惯是,如果核心变量需要复杂测算,或者需要先对数据进行预整理,那就先单独测算每一个变量。把每一个变量分别做出来以后,再进行后面的合并。有时某个指标的测算还需要结合另一份数据。我通常会在数据整理文件夹下面设置多个指标计算文件夹,然后使用global命令明确数据地址,再把外部数据合并到当前需要测算的指标中。这样可以避免数据重复保存,也可以通过global立刻看出合并进来的外部数据是哪一份。
每一项数据分别做完以后,我再进行数据合并、汇总和清洗。在这一步,AI也很喜欢边合并边整理,这会让整个合并整理程序变得混乱和复杂。我的做法是先完成数据合并,合并完以后,再测算个别变量,生成分析需要的其他新变量。
之后再对变量进行排序,只保存真正需要的变量。这一步很关键。很多同学做到最后,数据库已经高达300MB,实际分析时却只使用其中几个变量。我们只需要保存分析所需的数据和变量,其他用不到的过程变量都要删除。否则,最终数据会越来越大,每次打开数据、跑回归时都非常卡顿。得到最终合并的数据以后,再进入数据分析。
04
对代码质量和要求的管控
AI的确能解决很多问题,但它会默认你什么都不懂。虽然你可能确实不懂。为了让你看懂,它会加入很多代码审计、前期测试和多余的注释。如果它不知道哪些命令更高效,也会给你一套比较原始的底层代码来执行你的想法。这些都会让整个数据分析任务变得冗余和难以理解。
所以我会明确要求它不准加入这些审计和前期测试代码,也不准加入其他我认为不需要的代码。注释可以出现在哪些地方、写到什么程度,都要给它明确的边界。
上面只是简单说了使用AI做Stata时需要注意的一些问题,具体细节还有很多,很难一次全部说完。
05
代码跑通,不代表这个能力已经属于你
总的来说,AI对初学者当然有帮助。但如果想熟练掌握实证研究和Stata操作,古法编程、手搓代码,自己一步步实操,仍然很有必要。只有亲手做过,你才能理解代码背后真正的操作逻辑。
AI用多了,很容易产生一种幻觉,好像自己真的会了,似乎已经掌握了这项能力。可实际的基础能力并没有发生变化。遇到复杂项目时,很容易就露馅,也经不起老师的一次检查。总不能每次老师在组会上问你这一步是怎么做的,你都回答,我先问一下AI吧。
AI对已经具备熟练技能的人来说,真的可以极大提高效率。我现在会利用这些年做过的上千份数据研究中的代码和操作逻辑,让AI帮我总结和提炼。在不断训练和迭代的过程中,它越来越接近我的代码风格和使用习惯,基本可以复现很多重复动作。
但这不代表AI可以直接替代我把项目做完。换一个人使用同样的AI,也未必能做到我的水平。我自己做过测试,换一个人使用它依然无法达到我的要求。
06
Skill给了形,真正用好还要懂意
现在出现了大量开源Skill。有些Skill还是初级产品,有些已经比较成熟,在一些流水线项目上表现也很稳定。可一旦涉及复杂项目,同一个Skill放在不同的人手里,表现会有很大差别。原作者可能可以稳定使用,换一个人安装以后,却很难稳定输出自己想要的效果。
这些区别还是来自经验。一个Skill总结的是开发者自己的经验,它把表面上可重复的动作和标准化流程固定下来,先给你一个形。真正想把它用好,还需要知道背后的意,既要知其然,也要知其所以然。
只有真正来自自己经验总结的Skill,才真正属于自己。缺少这层经验,即使使用再高级的AI,最后的效果也很容易不尽如人意。
AI迭代得太快。各家公司每隔一段时间就会发布新的AI产品,弄得大家都变得匆匆忙忙,担心今后会不会被AI替代。网上还有一个段子,AI时代,只要我学得慢,就不用再学。
从我自己的体验来看,目前AI仍然只是一个好用的工具。想真正利用好这个工具,还是需要自己具备扎实的基础,以及准确的审查和判断能力。
如果今后打算深耕学术,基本功这一关早晚都要过。该吃的苦还得吃,该熬的夜还得熬。只有把学到的东西真正做懂,并内化成自己的知识,它才会成为你以后做研究时最可靠的底气。