Stata之post命令——数据邮递
本文作者:温和铭,中南财经政法大学统计与数学学院
本文编辑:王玉洁
技术总编:戴 雯
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程、Stata基础课程、Stata进阶课程、Stata文本分析、正则表达式、网络爬虫、基本字符串课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~
引言
1、postfile
命令
通过help post
,我们就能很轻松地get到post
的语法,整个post
的过程,相当于将文件“邮寄”到一个特定的收件地址,并实现输入邮件名和收件地址再次调用文件。在官方的介绍文档中,一共有如下五种命令:
postfile postname newvarlist using filename [, every(#) replace] #
postname:收件地址,即内存中划出的区域的名字。
filename:邮件名,即表示保存的数据的名字。
newvarlists:邮件的具体信息,即数据中包含的变量名列表。
简单来说,postfile就是进行了一个声明,表示在postname内存区域中,生成一个filename数据文件,该数据包含的变量是newvarlists。
2、post
命令
post
命令起到的作用就是向先前postfile
中声明的数据集追加新的观察值。具体语法规则如下:post postname (exp) (exp) ... (exp)命令拆解:postname:收件地址,即内存中划出的区域的名字。filename:邮件名,即表示保存的数据的名字。newvarlists:邮件的具体信息,即数据中包含的变量名列表。简单来说,postfile就是进行了一个声明,表示在postname内存区域中,生成一个filename数据文件,该数据包含的变量是newvarlists。
postname:收件地址,即需要将文件保存至哪个区域。
(exp) (exp) ... (exp):追加的数据内容,与postfile中的
3、postclose
命令
postclose
命令关闭邮件系统,具体语法如下:postclose postname
该命令的含义为:结束向postname
的内存区域追加数据,将所有post
的数据写入Stata内存中,可以使用use
命令打开。
4、postutil dir
和postutil clear
命令
postutil dir
命令就派上用场了。输入postutil dir
,我们就可以调取出所有当前打开的postfile
中规定的“收件地址”,即在postfile
命令中划出的名为postname
的内存区域。此外,我们需要输入postutil clear
将所有打开的postfile
关闭。综合上述介绍,我们可以将post
的工作方式归纳为:首先使用postfile
命令打开一个postfile,然后发出一个或多个post
命令,最后使用postclose
关闭文件。此外可以使用postutil dir
和postutil clear
命令来查看或关闭所有打开的postfile。纸上得来终觉浅,接下来,就让我们用具体的例子来展示这一过程吧。
mat
命令,将采集到的中间数据存储到矩阵中,但是这种方法仅适用于数据量小于10000的情况,当处理大体量数据时,使用post
命令才是正解。我们以伍德里奇计量经济学导论教材中的数据SMOKE.dta进行演示。(Note:相关数据集大家可以通过在公众号后台回复 SMOKE 获取哦)1. 确定回归变量,定义统计量
我们的目标是利用SMOKE.dta中的数据估计日香烟消费量的需求函数,并收集多次随机抽样中回归的系数和对应的标准误。首先需要确定抽样次数和参与回归的变量。
cd "D:/"
use SMOKE.dta, clear
local reps = 10000 //设置抽样次数为10000次
set seed 1234 //设定种子数,以便结果可以复现
local varlist "cigs lincome lcigpric educ age agesq restaurn" //定义一个局部暂元,存储需要回归的变量
gettoken y x: varlist //gettoken的作用是将暂元varlist的内容按照我们的要求以空格为切割点,分成两部分,第一空格之前的部分存入暂元y,剩余部分存入暂元x
local word_num: word count `x' //对暂元x中的元素进行计数
tokenize "`x'" //分解暂元x,并将结果分别存入暂元`1',`2',...
我们可以用display
命令分别展示存储变量的暂元x,y和用于对自变量计数的暂元word_num。
可以看到,我们已经切分好了自变量和因变量,并存储在了对应的local
中。
接下来,我们需要新建局部暂元,存储每次回归中新产生的各自变量的回归系数b和标准误_se。
local j = 1
local st1 ""
local st2 ""
while "``j''" != "" {
local st1 "`st1'b_``j'' se_``j'' "
local st2 "`st2'(_b[``j'']) (_se[``j++'']) "
}
tokenize
分解自变量后,每一个自变量对应的编号,如变量lincome对应的j值为1,以此类推。st1是需要在postfile
命令中加入的变量名,st2存储的是实际回归中产生的回归系数(b)和标准误(se)的值。我们实际要做的就是将st2中的数据一条条加到st1中。2. 使用post
系列命令“邮递”数据
做好了前期准备,接下来就只需要开始传递数据啦。我们的逻辑是:
postfile
命令进行一个声明:在我们命名为smokepost
的内存区域中,要生成一个temp
数据文件,该数据包含的变量是st1
,也就是回归系数和标准误。post
命令,结合forvalues
和“起死回生”命令,将每一次抽样回归产生的回归系数和标准误,即st2中的数据,逐条追加到smokepost
的内存区域中。postclose
,停止追加数据。capture postclose smokepost
tempfile temp //定义一个临时文件
postfile smokepost `st1' using "`temp'", replace //(1)
forvalues i = 1/`reps'{
preserve
bsample //自抽样
qui reg `varlist' //回归,不报告结果
post smokepost `st2' //(2)
restore
}
postclose smokepost //(3)
temp
文件,查看邮件是否顺利送到了。use "`temp'", clear
sum
post
在多次重复存储数据中的妙用,除此之外,post
还有更多的实践场景,感兴趣的读者可以自行探索,欢迎在后台交流!最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐 Seminar丨2002年萨班斯·奥克斯利法案的经济后果
我几乎画出了“隔壁三哥”家的国旗
Python基础——三大数字类型,你都了解吗?如何用Stata绘制带指向性箭头标注的图像
Seminar丨荐仆贷款——19世纪中国的信任辅助贷款 【技能篇】多进程队列间通信
Seminar丨公司董事会的人才增长:来自中国的证据
正则表达式--懒惰模式
爬完独立董事的年薪,我的眼镜跌破了! 识别旅游“照骗”——看风景名胜是否名副其实 主成分分析的Python实现正则表达式--贪婪模式
Seminar丨谁更重要:高管股权薪酬与财务报告欺诈DOS能量,超乎你想象!爬虫实战丨走进哈利波特的魔法世界
数据集合并的新路子-frlink命令
Seminar丨附近的公司:利用卫星图像研究本地信息优势线性同余法生成伪随机数
[技能篇]多线程爬虫
“好哭”是衡量一部好电影的标准吗?
Stata&Python云端课程来啦!带你了解Stata中的矩阵
Seminar|总统的朋友:政治关联与企业价值爬虫实战 | 爬取中国天气网
爬虫实战 | 爬取东方财富网经济数据——以居民消费价格指数(CPI)为例
Seminar|媒体关联董事对融资和外部治理的影响神奇的组内交叉合并 PDF分章节转TXT并实现可视化——以胡景北知青日记1971至1978年为例万物皆可开——shellout妙用
无处不在的系列配置项|从零开始的Pyecharts(三)
使用Python制作自动聊天机器人
fillin一下,平衡回来~
order命令——快速改变变量顺序的利器关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。