![](http://mdimg.yxj1010.top/xlbxs_ydt2.png)

目录:


一、什么是stata_kernel

Github:kylebarron/stata_kernel

1. stata_kernel简介

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

2. 为什么要使用stata_kernel

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

个人认为stata与SPSS最大的区别在于用户在使用过程中的操作逻辑不同:前者偏向于代码逻辑,操作快捷,自定义程度高,但有着一定的编程门槛;而后者偏向于UI操作,操作复杂,自定义程度及复用性不高,但胜在使用门槛较低。因此当代码逻辑的stata也开发出一套用于快捷操作的UI时,未免会让像我这样的使用者觉得有点狗尾续貂,本质上来说,我对stata的使用需求更多是在于其丰富多元的计量分析命令,我希望通过编写程序的方式去解决每一个数据分析问题,并且让这些程序在不同问题上可以简单迅速地复用(因此注释或笔记功能就显得非常重要),同时我还希望能将我解决问题的过程形成笔记或讲义,因此界面的美观程度以及可导出性也是我所重视的问题。

而在众多IDE工具中(pycharm、vscode等),jupyter工具(jupyternotebook或jupyterlab)在编程学习或数据分析方面一直有着独特的优势,其UI简洁明亮,其也是我目前最喜欢使用的一款IDE工具(尤其是在jupyterlab推出桌面版且兼容了插件管理器之后);所以在jupyterlab中像开发python程序一般编写我的stata程序,并且能够实时调试或者记录笔记,就成为了我对stata使用的追求,而通过使用stata_kernel,便可以实现这一点!

3. stata_kernel与pystata的区别

熟悉stata的朋友应该知道,在stata17之后,官方推出了一种stata与python的全新交互方式,即通过在python环境中直接安装pystata模块,便能在python环境中直接调用stata17。而这正是二者的区别,stata_kernel以是jupyter环境内核的形式运行,而pystata则以python包的形式运行,这是两种不同的运行模式,即便我是在jupyter环境中运行python内核,从而运行stata代码,也与stata_kernel的方式运行stata代码截然不同。

当然,我们没有必要去区分二者的运行方式差异,毕竟一般情况下使用者仅仅关注最终的结果,在我目前的使用场景和体验中,我认为二者的差别或者优劣如下:

stata_kernel:

  • 优势: 使用stata_kernel,我可以像在stata中一样去编写我的数据分析程序,并且可以随时插入markdown笔记,或者唤起stata程序(在stata_kernel中运行bro命令将会唤醒本地的stata应用,并在stata中呈现bro的结果)通过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的语法进行高亮显示。

4. stata_kernel与pystata如何选择

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

二、如何安装stata_kernel

1. 安装任意一个jupyter环境

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

2. 自定义jupyter环境配置(可选)

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

2.1 Jupyter更改启动路径

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

2.2 Jupyter更改中文语言

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

3. 安装stata_kernel

3.1 注册stata

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

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

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

3.2 安装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

4. 安装stata语法高亮

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

jupyter labextension install jupyterlab-stata-highlight

三、使用stata_kernel

打开jupyterlab,选择stata内核,像编写python程序一样使用stata吧!

stata_kernel开发者文档

四、卸载stata_kernel

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

pip uninstall stata_kernel
jupyter kernelspec list
jupyter kernelspec remove stata

五、疑难杂症解决

1. 图像不显示问题

当本地使用的是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),并替换重复文件即可。

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.1 思路①:完全卸载并重装Anaconda

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

conda install anaconda-clean
anaconda-clean --yes

然后卸载anaconda并重新安装

3.2 思路②:完全卸载并重装stata

卸载stata_kernel——卸载stata——重装stata——重装stata_kernel

软件教程 | Jupyter&stata之stata_kernel攻略的更多相关文章

  1. Git使用教程 Windows使用Git全攻略

    在Windows上安装Git 我们需要先把Git的安装包下载下来,访问网址:https://git-for-windows.github.io/ 或者百度网盘:链接: https://pan.baid ...

  2. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

  3. 小兔JS教程(三)-- 彻底攻略JS回调函数

    这一讲来谈谈回调函数. 其实一句话就能概括这个东西: 回调函数就是把一个函数当做参数,传入另一个函数中.传进去的目的仅仅是为了在某个时刻去执行它. 如果不执行,那么你传一个函数进去干嘛呢? 就比如说对 ...

  4. Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版

    Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.作为一个程序员,我们需要掌握其用法. 作为开源代码库以及版本控制系统,Github目前拥有140 ...

  5. maven教程全攻略

    maven教程全攻略 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关 ...

  6. Anaconda使用教程全攻略

    Anaconda使用教程全攻略 本文转自 https://zhuanlan.zhihu.com/p/32925500           〇.序 Python是一种面向对象的解释型计算机程序设计语言, ...

  7. 最新亚马逊 Coupons 功能设置教程完整攻略!

    最新亚马逊 Coupons 功能设置教程完整攻略! http://m.cifnews.com/app/postsinfo/18479 亚马逊总是有新的创意,新的功能.最近讨论很火的,就是这个 Coup ...

  8. phpMyAdmin 安装教程全攻略

    管理MYSQL数据库的最好工具是PHPmyAdmin,现在最新版本是phpMyAdmin 2.9.0.2,这是一个国际上开源的软件,一直在更新版本,你可以从 http://www.phpmyadmin ...

  9. Xlua使用教程、攻略

    Xlua 使用指南 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新! ...

  10. 【与软件无关】2013赤峰地区C1科目三考试攻略【绝对原创】

    期待很久的科目三,终于在开考了.传说中的全部电子评判,让习惯给考官送礼的赤峰人民无所是从.据说前几天曾经有一个驾校,考了一整天,八十多个人一个没过的. 我这个攻略是今天通过考试后的一点心得,希望能有用 ...

随机推荐

  1. Base64 学习

    base64是什么 Base64,就是包括小写字母a-z,大写字母A-Z,数字0-9,符号"+" "/ "一共64个字符的字符集,(另加一个"=&qu ...

  2. 基于.net C# Socket WinForm MQTT 客户端开发

    1.什么是MQTT? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的&quo ...

  3. 【面试真题】ThoughtWorks-编程结对技术面试(一面)-2022年2月11日

    一.技术问题 1.Hbase (1)介绍 (2)项目中是否有用到 于:存大量数据(千万),考虑性能,方便进行数据处理,对其进行分析 自己:ADS层和Flink的数据,DWD计算出的的中间层数据存入DW ...

  4. Leanote蚂蚁笔记-私人云笔记服务器搭建

    title: Leanote蚂蚁笔记-私人云笔记服务器搭建 date: 2020-02-22 21:53:24 categories: - [IT,技术] - [IT,软件,程序] - [IT,软件, ...

  5. WinUI(WASDK)使用MediaPipe检查手部关键点并通过ML.NET进行手势分类

    前言 之所以会搞这个手势识别分类,其实是为了满足之前群友提的需求,就是针对稚晖君的ElectronBot机器人的上位机软件的功能丰富,因为本来擅长的技术栈都是.NET,也刚好试试全能的.NET是不是真 ...

  6. Velero系列文章(四):使用Velero进行生产迁移实战

    概述 目的 通过 velero 工具, 实现以下整体目标: 特定 namespace 在B A两个集群间做迁移; 具体目标为: 在B A集群上创建 velero (包括 restic ) 备份 B集群 ...

  7. SQL审核平台Yearning

    1.关于Yearming Yearming是一个Sql审核平台,底层使用Go语言,安装和部署方式也很便捷 项目地址 https://guide.yearning.io/install.html git ...

  8. java中的递归机制

    本文主要讲述java中的递归机制. 示例1,递归代码如下: public class Recursion01 { public static void main(String[] args) { T ...

  9. python 定时发送邮件

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart f ...

  10. pytest常用参数汇总

    1.  -s    表示输出调试信息,包括print打印信息 D:\demo>pytest -s ./pytest_1 ===================================== ...