社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Stata-Python交互:将Python数据导入Stata

连享会 • 1 年前 • 335 次点击  

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · CGE 专题:理论与实操

从 0 到 1:学以致用的 CGE 课程

可计算一般均衡模型 (Computable General Equilibrium, CGE) 是研究宏观经济问题的利器。CGE 的基本思想是,在整个经济中,供应和需求是相互关联的,这使得一个部门或市场的变化会传递到其他部门和市场。

CGE 模型由一系列描述不同经济部门、市场和要素之间关系的方程构成,用以分析各种经济政策和外部冲击 (如税收、贸易、环境、政治) 的影响。我们可以采用模拟分析来评估它们对经济系统中关键指标的影响,如就业、产出、通胀、收入分配等。

🍎 通过本期课程的学习,希望大家能掌握如下内容:

基本目标:

  • 什么是一般均衡,相对于局部均衡而言有什么区别?
  • 如何构建一个简单的一般均衡模型?
  • 一般均衡与投入产出表是如何结合的?
  • 如何构建一个标准的一般均衡模型?

进阶目标:

  • CGE 模型实操与写作示例:如何熟练的运用 GAMS 软件对构建模型,并且有效的 debug。包括如何解决模型报错;如何得到基准情景的解;如何得到正确的反事实情景的解。
  • CGE 模型潜在的扩展:针对不同的研究方向,对模型进行不同类型的扩展。例如如何嵌入能源与碳排放模块,以运用于能源与环境经济学领域;如何分解不同收入人口,以研究更细致的分配效应;如何拆分中央政府和地方政府,或细化税收种类,以研究财政领域的问题。
  • CGE 建模灵活性的掌握:以嵌入能源与环境模块为例,掌握 CGE 模型的灵活性,帮助你撰写你要研究的特定议题。

🍎 本课程主要分为三个模块:

  • T1 基础:投入产出表、社会核算矩阵与 CGE 模型
  • T2 扩展:模型的变种、扩展及其实操
  • T3 进阶:嵌入特殊模块、结果输出与解读



作者: Chuck Huber
编译: 丁晨 (厦门大学)
邮箱: 3049378404@qq.com

致谢: 本文摘自以下文章,特此感谢!
Source: Chuck Huber, 2020, Stata/Python integration part 9: Using the Stata Function Interface to copy data from Python to Stata, -Link-

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

Stata/Python 交互系列推文 源自 Stata 公司的统计项目总监 Chuck Huber 博士发表于 Stata 官网的系列博文,一共 9 篇。较为系统地介绍了 Stata 与 Python 的交互方式,包括:如何配置你的软件、如何实现 Stata 与 Python 数据集互通、如何调用 Python 工具包、如何进行机器学习分析等。

  • Part 1: Setting up Stata to use Python -Link-
  • Part 2: Three ways to use Python in Stata -Link-
  • Part 3: How to install Python packages -Link-
  • Part 4: How to use Python packages-Link-
  • Part 5: Three-dimensional surface plots of marginal predictions-Link-
  • Part 6: Working with APIs and JSON data -Link-
  • Part 7: Machine learning with support vector machines, -Link-
  • Part 8: Using the Stata Function Interface to copy data from Stata to Python, -Link-
  • Part 9: Using the Stata Function Interface to copy data from Python to Stata, -Link-

中文编译稿列表如下:

  • Stata-Python交互-9:将python数据导入Stata
  • Stata-Python交互-8:将Stata数据导入Python
  • Stata-Python交互-7:在Stata中实现机器学习-支持向量机
  • Stata-Python交互-6:调用APIs和JSON数据
  • Stata-Python交互-5:边际效应三维立体图示
  • Stata-Python交互-4:如何调用Python宏包
  • Stata-Python交互-3:如何安装Python宏包
  • Stata-Python交互-2:在Stata中调用Python的三种方式
  • Stata-Python交互-1:二者配合的基本设定


目录

  • 1. 导读

  • 2. 实例说明

    • 2.1 下载并处理数据

    • 2.2 拷贝数据到Stata

    • 2.3 作图

  • 3. 参考资料

  • 4. 相关推文



1. 导读

本文介绍如何使用SFI模块将python数据拷贝到Stata,原文使用python的yfinance模块从Yahoo!Finance网站下载道琼斯工业指数(DJIA)。鉴于国内连接yfinance不太稳定。本文改用pandas_datareader获取道指(DJIA),并使用Stata画出下图:

如果你对Stata+Python不熟悉,请先阅读以下几篇文章。

  1. 在Stata16中如何快速配置Python?
  2. 如何在stata中调用python

2. 实例说明

2.1 下载并处理数据

首先我们使用pandas_datareader.data下载道指:

. python
----------------------------------------------- python (type end to exit) -----------------------
>>> import pandas_datareader.data as web
>>> dowjones=web.DataReader('^DJI','stooq','2010-01-01','2019-12-31')
>>> dowjones
Open High Low Close Volume
Date
2019-12-31 28414.64 28547.35 28376.49 28538.44 193336533
2019-12-30 28654.76 28664.69 28428.98 28462.14 181507192
2019-12-27 28675.34 28701.66 28608.98 28645.26 182181663
2019-12-26 28539.46 28624.10 28535.15 28621.39 156025977
2019-12-24 28572.57 28576.80 28503.21 28515.45 86151979
... ... ... ... ... ...
2010-01-08 10606.40 10619.40 10554.30 10618.20 172637555
2010-01-07 10571.10 10612.40 10505.20 10606.90 217441286
2010-01-06 10564.70 10595.00 10546.50 10573.70 186108764
2010-01-05 10584.60 10584.60 10522.50 10572.00 188599202
2010-01-04 10430.70 10605.00 10430.70 10584.00 179768845

[2516 rows x 5 columns]
>>> end
-------------------------------------------------------------------------------------------------

下载的道指数据,是以日期为索引,下面将索引项变更为字符串项:

. python
----------------------------------------------- python (type end to exit) -----------------------
>>> dowjones.index
DatetimeIndex(['2019-12-31', '2019-12-30', '2019-12-27', '2019-12-26',
'2019-12-24', '2019-12-23', '2019-12-20', '2019-12-19',
'2019-12-18', '2019-12-17',
...
'2010-01-15', '2010-01-14', '2010-01-13', '2010-01-12',
'2010-01-11', '2010-01-08', '2010-01-07', '2010-01-06',
'2010-01-05', '2010-01-04'],
dtype='datetime64[ns]', name='Date', length=2516, freq=None)
>>> dowjones['dowdate']=dowjones.index.astype(str)
>>> dowjones['dowdate']
Date
2019-12-31 2019-12-31
2019-12-30 2019-12-30
2019-12-27 2019-12-27
2019-12-26 2019-12-26
2019-12-24 2019-12-24
...
2010-01-08 2010-01-08
2010-01-07 2010-01-07
2010-01-06 2010-01-06
2010-01-05 2010-01-05
2010-01-04 2010-01-04
Name: dowdate, Length: 2516, dtype: object
>>> end
-------------------------------------------------------------------------------------------------

2.2 拷贝数据到Stata

使用python的SFI模块,将数据拷贝到Stata中:

. python
----------------------------------------------- python (type end to exit) -----------------------
>>> from sfi import Data
>>> Data.setObsTotal(len(dowjones))
>>> Data.addVarStr("dowdate",10)
>>> Data.addVarDouble("dowclose")
>>> Data.addVarInt("dowvolume")
>>>
>>> Data.store("dowdate",None,dowjones['dowdate'],None)
>>> Data.store("dowclose",None,dowjones['Close'],None)
>>> Data.store("dowvolume",None,dowjones['Volume'],None)
>>> end
-------------------------------------------------------------------------------------------------

道指数据摘要:

. list in 1/5, abbreviate(9)

+-----------------------------------+
| dowdate dowclose dowvolume |
|-----------------------------------|
1. | 2019-12-31 28538.44 1.9e+08 |
2. | 2019-12-30 28462.14 1.8e+08 |
3. | 2019-12-27 28645.26 1.8e+08 |
4. | 2019-12-26 28621.39 1.6e+08 |
5. | 2019-12-24 28515.45 8.6e+07 |
+-----------------------------------+

变量格式转换

  1. dowdate:String ->Date,生成新变量date
  2. dowvolume:变更以百万股为单位
. generate date = date(dowdate,"YMD")

. format %tdCCYY-NN-DD date

. replace dowvolume = dowvolume/1000000
(2,516 real changes made)

. format %10.2fc dowvolume

. label variable dowvolume "DJIA Volume (Millions of Shares)"

. list in 1/5, abbreviate(9)

+------------------------------------------------+
| dowdate dowclose dowvolume date |
|------------------------------------------------|
1. | 2019-12-31 28538.44 193.34 2019-12-31 |
2. | 2019-12-30 28462.14 181.51 2019-12-30 |
3. | 2019-12-27 28645.26 182.18 2019-12-27 |
4. | 2019-12-26 28621.39 156.03 2019-12-26 |
5. | 2019-12-24 28515.45 86.15 2019-12-24 |
+------------------------------------------------+

2.3 作图

以date为横坐标,dowclose为纵坐标y(左侧),做折线图;dowvolume为纵坐标y2(右侧),做直方图;Stata基础命令详见连享会公开课-stata33讲

twoway (line dowclose date, lcolor(green) lwidth(medium))         ///
(bar dowvolume date, fcolor(blue) lcolor(blue) yaxis(2)), ///
title("Dow Jones Industrial Average (2010 - 2019)") ///
xtitle("") ytitle("") ytitle("", axis(2)) ///
xlabel(, labsize(small) angle(horizontal)) ///
ylabel(5000(5000)30000, ///
labsize(small) labcolor(green) ///
angle(horizontal) format(%9.0fc)) ///
ylabel(0(500)3000, ///
labsize(small) labcolor(blue) ///
angle(horizontal) axis(2)) ///
legend(order(1 "Closing Price" 2 "Volume (millions)") ///
cols(1) position(10) ring(0))
dowjones

3. 参考资料

  1. Stata/Python integration part 9: Using the Stata Function Interface to copy data from Python to Stata
  2. Stata-Python模块
  3. 【Python搞量化】pandas_datareader 经济和金融数据读取API介绍

4. 相关推文

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

  • 专题:Stata入门
    • 使用 Jupyter Notebook 配置 Stata\Python\Julia\R
  • 专题:Stata教程
    • Stata-Python交互-9:将python数据导入Stata
    • Stata-Python交互-8:将Stata数据导入Python
    • Stata-Python交互-7:在Stata中实现机器学习-支持向量机
    • Stata-Python交互-6:调用APIs和JSON数据
    • Stata-Python交互-5:边际效应三维立体图示
    • Stata-Python交互-4:如何调用Python宏包
    • Stata-Python交互-3:如何安装Python宏包
    • Stata-Python交互-2:在Stata中调用Python的三种方式
    • Stata-Python交互-1:二者配合的基本设定
  • 专题:Stata程序
    • Stata程序:是否有类似-Python-中的-zip()-函数
  • 专题:文本分析-爬虫
    • VaR 风险价值: Stata 及 Python 实现
    • 支持向量机:Stata 和 Python 实现
  • 专题:Python-R-Matlab
    • Stata交互:Python-与-Stata-对比
    • Python+Stata:批量制作个性化结业证书
  • 专题:其它
    • ES 期望损失: Stata 及 Python 实现



New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/168177
 
335 次点击