Jupyter Notebook 与 Stata 交互-nbstata

发布时间:2023-09-16 阅读 364

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下载 - 推文合集

作者:黄晨晨 (厦门大学)
邮箱chens_huang@163.com


目录


1. 简介

Jupyter Notebook 是一个开源的 Web 应用程序,允许我们将交互式代码和结果合并在单个文档中。在连享会推文「Stata 与 Jupyter Notebook 关联的两种方法」中,我们介绍了使用 Jupyter Notebook + Stata 模式可以更好展示 Stata 代码和结果,方便与他人共享。

在上述推文中我们还介绍了将 Stata 与 Jupyter Notebook 关联的两种方法,分别是 ipystatastata_kernel。今天我们介绍一种新插件:nbstata

nbstata 允许我们在 Jupyter Notebook 中创建 Stata 笔记本,与在 Python 笔记本中使用 Stata 不同,这种方式是在 Python 代码中嵌入 Stata 命令。

nbstata 具有以下特点:

  • 设置简单;
  • 适用于 Stata 17+ (仅限);
  • 显示 Stata 输出,没有命令的冗余“回显”;
  • 自动完成变量、宏、矩阵和文件路径;
  • 具有类似 browse 功能的 DataGrid 部件 (例如,交互式过滤);
  • 变量和数据属性 (describee/return list) 可在“上下文帮助”侧面板中查看;
  • 可在笔记本中访问交互式/富文本帮助文件;
  • 可通过 #delimit; 实现互动支持 (以及各类评论)。

通过使用 Stata 笔记本我们可以实现:

  • 探索性分析:包括交互式、保留内容以供未来参考或编辑;
  • 以交织的方式呈现结果,可以包含:列表、标题、图片、链接、数学公式。

2. 使用指南

2.1 前期准备

启动和运行 nbstata 不需要太多时间,但是需要 Stata 和 Python 的支持。

Stata 版本:由于实现 nbstata 需要使用 pystata,所以必须安装 Stata 17 及以上的版本。如果安装的是 Stata 的旧版本可以通过使用 stata_kernel 的方式来代替。

如何设置 stata_kernel 可参考往期推文「Jupyter 与 Stata 关联-stata_kernel」或「Stata 与 Jupyter Notebook 关联的两种方法」。

Python 版本:需要 Python 3.7 或更高版本。如果不熟悉 Python,建议安装 Anaconda ,使用 Anaconda 中的 Jupyter Notebook 来实现我们需要的功能。

如何安装 Jupyter Notebook 可查看往期推文「使用 Jupyter Notebook 配置 Stata\Python\Julia\R」。

2.2 安装 nbstata

完成好前期准备之后就可以下载并安装 nbstata。下面以 Anaconda 软件为例介绍 nbstata 的安装。首先,打开 Anoconda Prompt,在对应环境下运行以下命令:

  • ounter(line
pip install nbstata

接下来运行以下指令,其语法如下 (方括号表示选项):

  • ounter(line
  • ounter(line
python -m nbstata.install [--sys-prefix]   [--prefix PREFIX] [--conf-file]

其中,

  • --sys-prefix 指定安装的环境,例如 virtualenv 或 conda env。
  • --prefix PREFIX 指定安装路径。
  • --conf-file 将创建一个配置文件。

如果不需要更改安装的环境或路径,推荐使用以下指令安装:

  • ounter(line
python -m nbstata.install --conf-file

该指令将生成一个配置文件,便于我们后续修改配置。

如果要更新 nbstata 版本,请运行以下命令:

  • ounter(line
pip install nbstata --upgrade

2.3 配置文件修改

在本地查找 .nbstata.conf 文件 (一般在 C 盘用户文件根目录),使用记事本方式打开该文件。建议将第二行 stata_dir 修改为本地 Stata 安装文件夹,这样在 Jupyter Notebook 运行时不容易报错。将第三行 edition 修改为安装的 Stata 版本,默认版本是 be,可以根据自己的情况修改为 semp 。注意地址的书写格式,例如:

  • ounter(line
  • ounter(line
stata_dir = D:/software/stata17edition = mp

此外,还有一些配置可以根据自己的需求进行修改:

  • graph_format:默认为 png ,可修改为 pdfsvgpystata
  • graph_width/graph_height:默认情况下,生成的图形宽度为 5.5in (英寸),高度为 4in。宽度或高度可以指定为一个数字或一个数字及其单位 (in、cm 或 px)。
  • echo:控制命令的回显,默认为 None
    • True:回显所有命令。
    • False:不会回显单行命令。
    • None:不回显任何命令。
  • splash:控制 Stata 启动时闪屏信息的显示。默认为 False
  • missing:设置 %browse%head%tail 指令下输出中显示缺失值的形式。默认为 .,与 Stata 一致,如果要使用 pandas 的 NaN 格式,将其修改为 pandas

2.4 魔法指令

魔法指令 (Magics) 可增强在 Jupyter 中使用 Stata 的体验。它们仅在放置在代码单元格的开头时才起作用。Jupyter Magics 通常以 % 开头,但 nbstata magics 也可以用 *% 为前缀,通过这种方式可以避免将 Stata 笔记本导出到 .do 文件时 Magics 引起错误。

nbstata 目前支持以下魔法指令:

咒语 描述
%browse 查看数据集
%head 查看前 5 (或 N) 行
%tail 查看最后 5 (或 N) 行
%frbrowse 查看数据框
%frhead 查看前 5 (或 N) 个数据框
%frtail 查看最后 5 (或 N) 个数据框
%locals 列出暂元和它们的值
%delimit 打印当前分隔符
%help 显示 Stata 帮助
%set 设置单个配置选项
%%set 设置多个配置选项
%status 显示 Stata 或配置状态
%%echo 显示命令回显
%%noecho 不显示命令回显
%%quietly 静默所有单元输出,包括图表

3. 演示

配置成功后,打开 Jupyter Notebook,通过 Kernel -> Change kernel -> Stata(nbstata) 就可以使用 nbstata

stata_kernel 相似,nbstata 不需要特殊的指令启动,我们可以直接书写 Stata 代码。例如,在命令行输入:

  • ounter(line
  • ounter(line
  • ounter(line
sysuse auto,clearreg price weightscatter price weight

结果如下:

我们可以通过 %help 命令查看 Stata 帮助文档。例如,在命令行输入:

  • ounter(line
%help histogram

结果如下:

我们还可以使用 *%%echo%%noecho%%quietly 指令来体验显示命令回显、不显示命令回显以及静默所有输出的功能 (注意:由于 .nbstata.conf 文件中 echo 选项默认为 None,默认不回显任何命令) 。

分别在命令行输入以下命令:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
disp 1disp 2
%%echodisp 1disp 2
%%noechodisp 1disp 2
%%quietlydisp 1disp 2

结果如下图所示:

除了上述功能外,将 nbstataQuarto 搭配使用效果更佳,将具有更大的灵活性,可用于完成动态文档,具体内容可参考「Using Quarto for Stata dynamic documents」。

4. 参考资料

5. 相关推文

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

相关课程

免费公开课

最新课程-直播课

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

课程主页

课程主页

关于我们

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

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

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

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

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