![](http://mdimg.yxj1010.top/xlbxs_ydt2.png)
目录:
Github:kylebarron/stata_kernel
Jupyter是一个用于交互式数据科学的开源生态系统,简单来说通过stata_kernel,用户可以为jupyter工具安装一个stata内核,再通过jupyter环境调用本地的stata应用,完成一系列在stata中可以进行的操作。
stata作为一个专业的数据分析和科学研究软件,虽然其有着众多的计量分析工具,且在回归分析等方面有着巨大的功能优势,但我始终觉得它的UI设计丑陋且不合理。
个人认为stata与SPSS最大的区别在于用户在使用过程中的操作逻辑不同:前者偏向于代码逻辑,操作快捷,自定义程度高,但有着一定的编程门槛;而后者偏向于UI操作,操作复杂,自定义程度及复用性不高,但胜在使用门槛较低。因此当代码逻辑的stata也开发出一套用于快捷操作的UI时,未免会让像我这样的使用者觉得有点狗尾续貂,本质上来说,我对stata的使用需求更多是在于其丰富多元的计量分析命令,我希望通过编写程序的方式去解决每一个数据分析问题,并且让这些程序在不同问题上可以简单迅速地复用(因此注释或笔记功能就显得非常重要),同时我还希望能将我解决问题的过程形成笔记或讲义,因此界面的美观程度以及可导出性也是我所重视的问题。
而在众多IDE工具中(pycharm、vscode等),jupyter工具(jupyternotebook或jupyterlab)在编程学习或数据分析方面一直有着独特的优势,其UI简洁明亮,其也是我目前最喜欢使用的一款IDE工具(尤其是在jupyterlab推出桌面版且兼容了插件管理器之后);所以在jupyterlab中像开发python程序一般编写我的stata程序,并且能够实时调试或者记录笔记,就成为了我对stata使用的追求,而通过使用stata_kernel,便可以实现这一点!
熟悉stata的朋友应该知道,在stata17之后,官方推出了一种stata与python的全新交互方式,即通过在python环境中直接安装pystata模块,便能在python环境中直接调用stata17。而这正是二者的区别,stata_kernel以是jupyter环境内核的形式运行,而pystata则以python包的形式运行,这是两种不同的运行模式,即便我是在jupyter环境中运行python内核,从而运行stata代码,也与stata_kernel的方式运行stata代码截然不同。
当然,我们没有必要去区分二者的运行方式差异,毕竟一般情况下使用者仅仅关注最终的结果,在我目前的使用场景和体验中,我认为二者的差别或者优劣如下:
stata_kernel:
bro
命令将会唤醒本地的stata应用,并在stata中呈现bro
的结果)通过UI界面直接查看某些数据情况;同时我还可以通过安装jupyter插件,实现stata的语法高亮,使得我的代码美观易懂;pystata:
%%stata
,或使用复杂的stata.run("")
语句去使stata命令生效;且由于此时的语法高亮仅作用于python语言,我们将不能正确对stata的语法进行高亮显示。如果你需要的是一个更加美观便捷,功能丰富的stata编辑器,那么使用stata_kernel即可;如果你更看重stata与python的交互功能,那么你应该使用pystata;如果你兼有两种需求,那么小孩子才做选择,大人当然全都要!
推荐使用anaconda配置基础环境,再使用jupyterlab Desktop或者vscode引用anaconda配置好的环境内核,来作为你的IDE工具。
注:以下命令,均假设你的基础环境是通过使用anaconda来配置的
打开Anaconda Prompt,在对应环境下运行jupyter notebook --generate-config
,找到刚生成的配置文件jupyter_notebook_config.py
,打开后找到#c.NotebookApp.notebook_dir =
语句,将其改为c.NotebookApp.notebook_dir = '自定义启动路径'
,然后保存配置文件。
打开Anaconda Prompt,在对应环境下运行pip install jupyterlab-language-pack-zh-CN
,然后打开jupyterlab,选择"设置——语言——中文",并重启内核。
用管理员权限打开Windows PowerShell,然后运行以下指令:
cd "D:\ProgramData\Stata16" .\StataMP-64.exe /Register
其中
"D:\ProgramData\Stata17"
为本地stata的安装地址,StataMP-64.exe
为MP版本stata的启动程序名称,如果是SE版本则改为StataSE-64.exe
即可
conda update conda python -m pip install --upgrade pip pip install stata_kernel
.stata_kernel.conf
文件(一般在C盘用户文件根目录),打开后将第二行改为stata_path = "D:\ProgramData\Stata17\StataMP-64.exe"
,即本地stata程序的存放路径。需要注意的是,如果电脑中更新了stata版本(比如我之前是从stata16更新到stata17),仅仅重装stata_kernel是不会自动更新stata_path的,需要将用户文件夹下的.stata14文件夹删除(即删除旧版的文件夹,这是一个隐藏文件夹),再重装stata_kernel或手动修改stata_path才能继续关联。
python -m stata_kernel.install
打开Anaconda Prompt,运行以下指令:
jupyter labextension install jupyterlab-stata-highlight
打开jupyterlab,选择stata内核,像编写python程序一样使用stata吧!
stata_kernel开发者文档
打开Anaconda Prompt,运行以下指令:
pip uninstall stata_kernel jupyter kernelspec list jupyter kernelspec remove stata
当本地使用的是stata17版本时,可能会出现在jupyter中运行stata画图指令时无法输出图像(仅会保存图像至本地并输出保存路径)的问题,这是因为Stata17引入了许多破坏与stata_kernel兼容性的变化。
尽管在2022年4月5日已有开发者mcaceresb修复了这一问题,但stata_kernel的原作者似乎对于这个项目已经不再上心且已经很久未进行维护,导致最新版的stata_kernel发行包仍停留在2020年发行的v1.12.2,因此我们无法通过pip
的方式进行更新,但我们依然可以从github上下载最新的源代码在本地进行替换更新。
我们仅需在github上下载最新的stata_kernel包源文件,解压后将stata_kernel
文件夹下的所有文件复制粘贴至当前开发环境中的stata_kernel安装目录(如我的路径是D:\ProgramData\Anaconda3\Lib\site-packages\stata_kernel
),并替换重复文件即可。
检查安装anaconda时是否已将当前将Anaconda相关文件路径添加到了系统Path中,若有缺失则补充添加,添加方式为右键点击计算机——属性——高级系统设置——高级——环境变量——系统变量——Path——编辑——新建
,所需配置的环境路径如下:
例如,我添加的路径如下:
D:\ProgramData\Anaconda3 D:\ProgramData\Anaconda3\Scripts D:\ProgramData\Anaconda3\Library\mingw-w64\bin D:\ProgramData\Anaconda3\Library\usr\bin D:\ProgramData\Anaconda3\Library\bin
打开Anaconda Prompt,运行以下指令:
conda install anaconda-clean anaconda-clean --yes
然后卸载anaconda并重新安装
卸载stata_kernel——卸载stata——重装stata——重装stata_kernel