Jupyter与Stata关联-stata_kernel

发布时间:2023-03-04 阅读 828

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:杨晓军 (云南大学)
邮箱yxj@mail.ynu.edu.cn


目录


1. 什么是 stata_kernel

1.1 stata_kernel 简介

Jupyter 是一个用于交互式数据科学的开源生态系统,简单来说通过 stata_kernel,用户可以为 Jupyter 工具安装一个 Stata 内核,再通过 Jupyter 环境调用本地的 Stata 应用,完成一系列在 Stata 中可以进行的操作。

1.2 为什么要使用 stata_kernel

Stata 作为一个专业的数据分析和科学研究软件,虽然其有着众多的计量分析工具,且在回归分析等方面有着巨大的功能优势,但我始终觉得它的 UI 设计丑陋且不合理。

个人认为 Stata 与 SPSS 最大的区别在于用户使用过程中的操作逻辑不同:前者偏向于代码逻辑,操作快捷,自定义程度高,但有着一定的编程门槛;而后者偏向于 UI 操作,操作复杂,自定义程度及复用性不高,但胜在使用门槛较低。因此当代码逻辑的 Stata 也开发出一套用于快捷操作的 UI 时,未免会让像我这样的使用者觉得有点狗尾续貂。

本质上来说,我对 Stata 的使用需求更多是在于其丰富多元的计量分析命令,我希望通过编写程序的方式去解决每一个数据分析问题,并且让这些程序在不同问题上可以简单迅速地复用 (因此注释或笔记功能就显得非常重要)。同时我还希望能将我解决问题的过程形成笔记或讲义,因此界面的美观程度以及可导出性也是我所重视的问题。

而在众多 IDE 工具中 (PyCharm、VScode 等),Jupyter 工具在编程学习或数据分析方面一直有着独特的优势,其 UI 简洁明亮,是我目前最喜欢使用的一款 IDE 工具 (尤其是在 JupyterLab 推出桌面版且兼容了插件管理器之后)。通过使用 stata_kernel,便可以在 JupyterLab 中像开发 Python 程序一般编写我的 Stata 程序,并且能够实时调试或者记录笔记。

1.3 stata_kernel 与 pystata 的区别

熟悉 Stata 的朋友应该知道,在 Stata17 之后,官方推出了一种 Stata 与 Python 的全新交互方式,即通过在 Python 环境中直接安装 pystata 模块,便能在 Python 环境中直接调用 Stata17。

stata_kernel 以是 Jupyter 环境内核的形式运行,而 pystata 则以 Python 包的形式运行,这是两种不同的运行模式。当然,我们没有必要去区分二者的运行方式差异,毕竟一般情况下使用者仅仅关注最终的结果,在我目前的使用场景和体验中,我认为二者的差别或者优劣如下:

对于 stata_kernel:

  • 优势:使用 stata_kernel,我可以像在 Stata 中一样去编写我的数据分析程序,并且可以随时插入 Markdown 笔记,或者唤起 Stata 程序通过 UI 界面直接查看某些数据情况.同时我还可以通过安装 Jupyter 插件,实现 Stata 的语法高亮,使得我的代码美观易懂。
  • 劣势:使用 stata_kernel,我无法如使用 pystata 一般地实现 Stata 与 Python 的交互。

对于 pystata:

  • 优势:使用 pystata,我可以轻松地实现 Python 与 Stata 的交互,比如我可以通过 Python 命令清洗数据,再调用 Stata 中丰富的数据分析指令进行计量分析,并使用 Python 指令对分析结果进行美化和输出.这一系列操作将不会有任何割裂感,因为本质上我们都是在 Python 环境中完成这些操作的。
  • 劣势:使用 pystata,我们要调用 Stata 语法时,将不得不在每一个 cell 中添加魔法指令 %%stata,或使用复杂的 stata.run("") 语句去使 Stata 命令生效。且由于此时的语法高亮仅作用于 Python 语言,我们将不能正确对 Stata 的语法进行高亮显示。

1.4 stata_kernel 与 pystata 如何选择

如果你需要的是一个更加美观便捷,功能丰富的 Stata 编辑器,那么使用 stata_kernel 即可。如果你更看重 Stata 与 Python 的交互功能,那么你应该使用 pystata。如果你兼有两种需求,那么小孩子才做选择,大人当然全都要!

2. 如何安装 stata_kernel

2.1 安装任意一个 Jupyter 环境

推荐使用 Anaconda 配置基础环境,再使用 Jupyterlab Desktop 或者 Vscode 引用 Anaconda 配置好的环境内核,来作为你的 IDE 工具。

2.2 自定义 Jupyter 环境配置 (可选)

注:以下命令,均假设你的基础环境是通过使用 Anaconda 来配置的.

Jupyter 更改启动路径:打开 Anaconda Prompt,在对应环境下运行 jupyter notebook --generate-config,找到刚生成的配置文件 jupyter_notebook_config.py,打开后找到 #c.NotebookApp.notebook_dir = 语句,将其改为 c.NotebookApp.notebook_dir = '自定义启动路径',然后保存配置文件。

Jupyter 更改中文语言:打开 Anaconda Prompt,在对应环境下运行 pip install jupyterlab-language-pack-zh-CN,然后打开 Jupyterlab,选择“设置——语言——中文”,并重启内核。

2.3 安装 stata_kernel

注册 Stata:用管理员权限打开 Windows PowerShell,然后运行以下指令:

cd "D:\ProgramData\Stata17"
.\StataMP-64.exe /Register

其中 "D:\ProgramData\Stata17" 为本地stata的安装地址,StataMP-64.exe为MP版本stata的启动程序名称,如果是SE版本则改为StataSE-64.exe即可

安装 kernel:首先打开 Anaconda Prompt,然后运行以下指令:

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 才能继续关联。

最后再打开 Anaconda Prompt,运行以下指令:

python -m stata_kernel.install

2.4 安装 Stata 语法高亮

打开 Anaconda Prompt,运行以下指令:

jupyter labextension install jupyterlab-stata-highlight

2.5 使用 stata_kernel

打开 Jupyterlab,选择 Stata 内核,像编写 Python 程序一样使用 Stata 吧!

2.6 卸载 stata_kernel

打开 Anaconda Prompt,运行以下指令:

pip uninstall stata_kernel
jupyter kernelspec list
jupyter kernelspec remove stata

3. 疑难杂症解决

3.1 图像不显示问题

当本地使用的是 Stata17 版本时,可能会出现在 Jupyter 中运行 Stata 画图指令时无法输出图像 (仅会保存图像至本地并输出保存路径) 的问题,这是因为 Stata17 引入了许多破坏与 stata_kernel 兼容性的变化。

尽管在 2022 年 4 月 5 日已有开发者 mcaceresb[1] 修复了这一问题,但 stata_kernel 的原作者似乎对于这个项目已经不再上心且已经很久未进行维护,导致最新版的 stata_kernel 发行包仍停留在 2020 年发行的 v1.12.2[2]。因此我们无法通过 pip 的方式进行更新,但我们依然可以从 github 上下载最新的源代码在本地进行替换更新。

我们仅需在 github[3] 上下载最新的 stata_kernel 包源文件,解压后将 stata_kernel 文件夹下的所有文件复制粘贴至当前开发环境中的 stata_kernel 安装目录 (如我的路径是 D:\ProgramData\Anaconda3\Lib\site-packages\stata_kernel),并替换重复文件即可。

下载最新的源代码包
下载最新的源代码包
复制 stata_kernel 文件夹下的所有文件
复制 stata_kernel 文件夹下的所有文件
粘贴替换目前 stata_kernel 安装目录下 stata_kernel 文件夹下的所有文件
粘贴替换目前 stata_kernel 安装目录下 stata_kernel 文件夹下的所有文件

3.2 运行 Stata 代码时内核无响应

检查安装 Anaconda 时是否已将当前将 Anaconda 相关文件路径添加到了系统Path中,若有缺失则补充添加,添加方式为 右键点击计算机——属性——高级系统设置——高级——环境变量——系统变量——Path——编辑——新建,所需配置的环境路径如下:

  • 安装路径 \Anaconda (调用 Python 时需要)
  • 安装路径 \Anaconda\Scripts (调用 conda 自带脚本时需要)
  • 安装路径 \Anaconda\Library\mingw-w64\bin (使用 C with python 时需要)
  • 安装路径 \Anaconda\Library\usr\bin
  • 安装路径 \Anaconda\Library\bin (调用 Jupyter Notebook 动态库时需要)

例如,我添加的路径如下:

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

3.3 其他疑难杂症

思路一:完全卸载并重装 Anaconda。打开 Anaconda Prompt,运行以下指令:

conda install anaconda-clean
anaconda-clean --yes

然后卸载 Anaconda 并重新安装。

思路二:完全卸载并重装 Stata。

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh

参考资料

[1]

View all commits by mcaceresb: https://github.com/kylebarron/stata_kernel/commits?author=mcaceresb

[2]

v1.12.2版: https://github.com/kylebarron/stata_kernel/releases/tag/v1.12.2

[3]

kylebarron/stata_kernel: https://github.com/kylebarron/stata_kernel