![](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. SpringCloud -Netflix 总结·

    springcloud 核心组件 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.智能路由.消息 ...

  2. 【kafka】JDBC source&sink connect实现数据从Oracle实时同步插入更新到PostgreSQL(PG)

    〇.所需资料 1.JDBC connect的plugins下载地址(confluent) 一.Oracle建表 1.表规划 表名:Test_TimeFormat_Order.Test_Stress_O ...

  3. 【Zookeeper】结构、应用、安装部署与参数、客户端命令行操作、API应用、内部原理(选举机制、写数据、监听器)

    一.Zookeeper入门 1.概述 分布式服务管理框架(存储和管理数据) Zookeeper=文件系统+通知机制 2.特点 主从集群 半数以上,正常工作 请求顺序执行 数据更新具有原子性 3.数据结 ...

  4. ChatGPT 可以联网了!浏览器插件下载

    Twitter 用户 An Qu 开发了一款新的 Chrome 插件帮助 ChatGPT 上网,安装插件以后 ChatGPT 就可以联!网!了! 简单来说开启插件后,他可以从网上搜索信息,并且根据用户 ...

  5. 编译安装nmon

    nmon 是什么? nmon(Nigel's performance Monitor for Linux)是一种Linux性能监视工具,当前它支持 Power/x86/x86_64/Mainframe ...

  6. JavaScript:代码细节和良好编码习惯

    这些细节,与语法无关,仅仅是编写代码时需要注意的最最基本的细节和一些良好编码习惯. 注释代码 注释代码分为单行注释和多行注释,如下所示: 严格区分大小写 JS的代码时严格区分大小写的,变量a和A是不同 ...

  7. 基于MongoDb的事件订阅实现hook监听

    详情请参考原文:-- 基于MongoDb的事件订阅实现hook监听(insert,update,remove,find等事件开始,事件成功等)

  8. C#开发的磁吸屏幕类库 - 开源研究系列文章

    上次写了一个关于线程池的博文,里面讲到了关于磁吸屏幕的类库,今天就把这个类库进行下讲解. 一.      类库目录: 类库的目录见下图,主要定义了Win32的一些API,以及一些API使用到的常量和结 ...

  9. 基于windows系统使用GNVM进行node切换版本

    GNVM是什么? GNVM 是一个简单的 Windows 下 Node.js 多版本管理器,类似的 nvm nvmw nodist . 安装 进入官网,下载你所需要的包,直达链接 下载完成 放到我们的 ...

  10. JS原生上传文件,读取文件格式,控制文件只可以上传某些格式,并使用fileReader转换格式

    本文为代码片段记录,方便后期使用哇! <!DOCTYPE html> <html lang="en"> <head> <meta char ...