![](http://mdimg.yxj1010.top/xlbxs_ydt2.png)
目錄:
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吧!
開啟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