赞
踩
Stata = statistics + data(统计分析+数据处理)
Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。
进入Stata的安装目录。
其中ado文件是最核心部分,ado下的base文件夹存放了Stata所有官方命令背后对应的ado程序。
updates中存放定期更新后对应的辅助文件。
plus中存放安装的插件。
(1)Stata的主界面
review窗口中的命令需要再次执行时,只需双击。
(2)菜单
file中,import和export用与传入和传出转化不同类型数据文件。
example dataset是Stata提供的一些范例数据。
点击describe查看数据的详细信息。
点击use调用该数据。
输入命令绘制数据的散点图
scatter price wei
Data中存放有关数据处理的操作。
Graphics中存放有关绘图的操作。
Statistics中存放有关统计分析的操作。
Window用于窗口布局。
Edit中的Preferences用于偏好设定。若操作中需要使用中文文字,则需要将Blod前的勾全部去掉。
设定好后在Edit–》Preferrences–》Save Preference set 中保存偏好设置。
Edit–》Preferrences–》Graph Preferences用于设定绘图模板。
Help中PDF documentation是Stata的电子手册。
(3)菜单条
除了使用Command和菜单栏点击执行命令外,使用菜单条的New Do-file Editor来打开一个新的文本编辑器。
用于将Command中输入的命令整合输入文本文件,方便工作延续和还原操作。
Stata工作原理是从硬盘中调取数据,存入内存后经过一系列统计和回归分析运算,再将相应的结果输出和存储到硬盘。
连玉君老师的puls外部命令包
sysdir
* 用于查看系统工作路径
sysdir set PLUS "E:\Stata15\ado\plus\"
sysdir set PERSONAL "E:\Stata15\ado\personal\"
sysdir set OLDPLACE "E:\Stata15\ado\"
* 用于修改系统工作路径
help <指令>
* 用于查看指令的详细信息
ssc install <指令>
* 用于当找不到指令时,安装外部指令
【工作路径】
(1)当前工作路径
Stata的左下角显示当前的工作路径,如果使用use调用数据,则默认从该目录下调入数据。
(2)更改文件路径
cd "<指定路径>"
* 例如 "D:\stata15\ado\personal"
(3)显示当前路径下的文件信息
dir
(4)打开当前工作路径下的文件夹“_data”
cd _data
(5)进入当前路径的windows操作界面
cdout
(6)调入当前路径下的数据“GTAs_2008.dta”
use "GTAs_2008.dta", clear
* clear 表示清除已被占用的内存
(7)调入指定目录下的数据“GTAs_2008.dta”
use "D:\stata15\ado\personal\_data\GTAs_2008.dta", clear
(8)设置全局暂元
global path "D:\stata15\ado\personal\"
* 此时使用数据只需引用全局暂元名称,再在引用路径的基础上加上相对路径即可
use "$path\_data\GTAs_2008.dta", clear
* $用于引用全局暂元
【文件和文件夹管理】
(1)显示当前工作路径
pwd
(2)显示当前工作路径下所有包含链接的文件信息
expl
(3)列举当前工作路径下所有文件
lall
* list all
view——浏览文件
edit——编辑文件
do——执行文件
(4)批量修改文件名称
help fpref // 在文件名中批量添加前缀或后缀
help fren // 批量修改文件名中的字段
help renfiles // 批量修改文件名
【stata系统文件设定】
(1)系统文件
UPDATES——Stata更新的所有文件
BASE——Stata官方命令对应的所有程序文件和说明文档
PULS——外部命令
PERSONAL——个人文件夹,常用语存放数据和相应程序
OLDPLACE——常用于存放自己编写的命令
(2)命令执行过程
编写命令让Stata执行
–》从BASE文件夹中找一个同名的ado文件,找到则执行
–》若BASE中没有,则在UPDATES中寻找
–》若UPDATES也没有,则在PLUS中寻找
–》若以上目录均找不到,则Stata输出无法识别命令
(3)可识别程序文件的目录
adopath
每执行一条新的命令时,会在以上几个路径下搜索同名的程序文件来执行。
(4)增加可识别程序文件的文件目录
adopath + "E:\Stata15\ado\personal\My_stata\_plus"
(5)Stata开机自启动基本设定
将以下指令保存至Stata的根目录下,并命名为profile.do。
* 基本参数设定 set type double // 后续产生变量都将是双精度型的 set memory // 为stata分配50M内存 set matsize 2000 // 矩阵维度 set scrollbufsize 50000 // 设定屏幕的最大显示行数 set more off, perma // 不分屏显示 * log文件设定 log using "E:\Stata15\ado\personal\stata.log", text replace cmdlog using "D:\Stata15\ado\personal\command.log", append * 文件目录设定 sysdir set PLUS "E:\Stata15\ado\plus" // 外部命令的存放地址 sysdir set OLDPLACE "E:\ado" sysdir set PERSONAL "E:\stata15\ado\personal" // 个人文件夹 * ado文档查找路径 adopath + "E:\Stata15\ado\personal" adopath + "E:\Stata15\ado\personal\_Myado" * 指定默认工作路径 cd "E:\Stata15\ado\personal"
这样在重新打开Stata是就会running E:\Stata15\profile.do 导入基本设定
还可以在profile文件中加入以下命令来确定每次启动时运行的盘符。
dis _n(30)
if "`c(sysdir_stata)'" == "D:\Stata15/" | "`c(sysdir_stata)'" == "d:\Stata15/"{
local D "D"
}
else{
dis in w "请在command窗口输入Stata所在的盘符,按回车键:______"
dis in w "Here is my Stata: " _request(isD)
local D "$isD"
}
在profile文件中加入以下指令,来自动以当前日期命名log文件 并存放于Stata15\do 文件夹下。
cap cd `c(sysdir_stata)'do
if _rc{
mkdir `c(sysdir _stata)'do
}
local fn = subinstr("`c(current_time)'",":","",2)
local fn1 = subinstr("`c(current_date)'"," ","",3)
log using `c(sysdir_stata)'do\s`fnl'`fn'.log, text replace
cmdlog using `c(sysdir_stata)'do\c`fn1'`fn'.log, replace
* cd `E':\Stata15\ado\personal // Stata启动后自动进入该目录
cd `c(sysdir_personal)'
(1)sum
* 帮助文档
help summ
从帮助文件中可以知道,summ命令可以简写为“su”。
方括号中为可选项。
sum wage // 计算变量的基本统计量
sum wage if race == 1 // 利用if限制样本范围
sum wage in 1/10 // 限定前十个观察值,in很少用
sum wage, detail // 附加选项,用于提高整个命令的灵活性(detail表示显示详细信息)
* Stata命令还支持前缀写法
bysort race: sum wage hours age // 按race种族分类计算变量的基本统计量
bysort marr collgrad: sum wage hours // 按marr 和 collgrad来计算变量的基本统计量
(2)调入数据
sysuse nlsw88, clear
sysuse 和 webuse都是 use 命令的拓展命令,sysuse 用于从Stata的内置数据库中调取数据,webuse用于从网络上调取数据。
(3)语法文件
help language
bysort属于prefix(前缀)
在Stata中,选项option通过逗号分隔。无论命令多长,只能有一个逗号裸露在外。
* 实例1
sysuse nlsw88, clear
gen lnwage = ln(wage) // gen用于生成新变量
gen yes_white = (race==1)
tabstat lnwage hours married age, by(yes_white) s(mean) f(%3.2f) // 计算基本统计量
* 实例2
* 绘制标准普尔500指数,某年份的收盘价价格走势
sysuse sp500, clear
twoway line close date, title("收盘价", place(left))
实例2中第二行的第一个逗号前为指定的变量和绘图的类型,后面一个逗号包含在指定选title内,并未裸露在外。
(1)引用变量
* 帮助文档
help varlist
Stata中支持三种通配符:*,?,-
* 实例:对nlsw88数据中的age、race、married、never married、grade几个变量进行统计
sysuse nlsw88, clear
sum age race married never married grade // 方法1:最复杂
sum age-grade // 如果统计的是在数据中顺序存放的变量,通过观察Stata界面右上角的变量列表,可以得到所需的首尾两变量名称。若中间不连续,则可以分成连续的段进行处理
sum s* // 统计以s为首的所有变量
sum *arr* // 统计包含arr字符的变量
sum ?a?e // ?指代一个字符,即统计固定位置字符的变量
(2)因子变量:变量的前缀
因子变量的出现使书写效率提高
* 帮助文档
help fvvarlist
图为执行“tab race”指令后结果
* 实例:研究工资wage的决定因素,研究tenure、hours、i.race、i.industry对其影响
sysuse hlsw88, clear
tab race // 输出种族类别的表
reg wage tenure hours i.race i.industry // i.race和i.industry分别为种族和行业虚拟变量
reg wage tenure hours age c.age#c.age // “c.”表示后接连续变量。
reg wage tenure hours c.age##c.age // 为上一行命令的简写,等价于上一行命令。
reg wage tneture hours i.marr i.marr#c.hours
图为执行“reg wage tenure hours i.race i.industry”指令后结果。结果直接呈现了连续变量,类别变量race本身有三类,但是为了共线性问题将频数最高项,即白人作为基准组(对照组)。其中race下的2实际对应一个虚拟变量,若为黑人则取1,否则取0,3同理。行业虚拟变量同理种族虚拟变量。
图为执行“reg wage tenure hours age c.age#c.age”指令后结果。目的是查看age的平方项的影响,即age岁被解释变量wage是否二次的影响。不用生成平方项,只需使用c.age#c.age来指代一个平方项。可以看到平方项的结果为负,所以还是更适合做线性估计。
(3)时间序列变量
* 帮助文件
help tsvarlist
* 实例:根据时间变量进行排序
sysuse sp500, clear
tsset date // ts = time series
gen t = _n
tsset t
gen lnP = ln(close) // lnP为收盘价的自然对数
gen return = D.lnP // “D.”表示后面变量的一阶差分,D.lnP即收益率
gen Lreturn = L.return // “L.”表示后面变量的一阶滞后,L.return即前一天的收益率
gen L2return = L2.return // “L2.”表示两阶滞后,L2.return即前两天的收益率
reg return L.return L2.return
reg return L(1/3).return F(1/2).return // 精简写法:在回归时,不产生新变量,直接采用这种方式隐式迭代得到一二三阶滞后项,“F.”表示前推项,即向前推一期和推两期的前推项。
help contents // 进入帮助文档
help help // help 命令的帮助文件
help guide // basic Stata concepts(最基本的Stata命令)
help tabstat 一般化帮助文件
点击“(View complete PDF manual entry)”可以查看帮助文件的pdf文件,pdf文件中列举了许多范例。
帮助文件右上角的下拉菜单 Dialog–>tabstat
用于填写菜单命令(针对对数学命令不熟悉的情况,填写后stata自动生成对应的文字命令)
Also See是同现在输入的tabstat命令相关的命令,横向关联。
Jump To是具体目录,例如Description是该命令的整体介绍,Examples提供范例。
用于查找不清楚命令名称的情况
help findit // 网络搜索,查找外部命令和范例
使用findit命令后接命令的关键词()
* 实例
findit dynamic panel // 查询动态面板相关命令
其中“xt”开头为Stata的官方命令,“sj”开头的为Stata期刊中命令,其他为用户自己编写的外部命令。
【实现高效检索的建议】
help net_num // 查看外部命令来源
search —— 类似于findit
Stata Journal —— Stata期刊
STB —— Stata技术报告
help ssc // ssc: Statistical Software Components
(1)统计软件组件定期更新外部命令,通过以下命令来查看新加入的内容:
ssc whatsnew
下载安装ssc命令:
ssc install winsor, replace // 安装winsor命令,replace用于删除之前安装的旧版本
(2)外部命令存放地址:
使用net命令
help net
使用这两条命令指定下载的命令以及相关辅助数据、说明文档存放的位置。
(3)指定下载的外部命令存放地址:
net set ado "E:\Stata15\ado\personal\mypuls"
需要提前将指定目录的文件夹建好
(4)查看已安装的外部命令
ado // 呈现本机上安装的所有外部命令
ado, find(winsor) // 仅呈现包含特定关键词的外部命令
(5)其他管理外部命令的指令
help mypkg
mypkg // 呈现本机上已安装的外部命令(将外部命令按字母顺序排列)
mypkg xt* // 呈现xt开头的所有外部命令
which winsor2 // 列示命令的基本信息
(6)交流平台
Stata官方:常见问题解答FAQs
https://www.stata.com/support/faqs/
包含基本问题的简洁说明
加入Stata用户邮件列表:
https://www.statalist.org/
可以收到全球各种问题讨论邮件
中文:人大经济论坛【Stata专版】
https://bbs.pinggu.org/forum-67-1.html
help gen // gen:generate -- Create or change contents of variable
help egen // egen -- Extensions to generate
help varname // 多变量命名规则
help newvarlist // 多个新变量
(1)由英文、数字或“_”组成,至多不超过32个。
(2)首字符必须为字母或“_” 。(尽量避免是使用_”作为变量名的首字符,因为Stata的许多内部变量都是以“_”开头的。)
(3)英文字母的大写和小写具有不同的含义。
help rename // 单个重命名
help rename group // 批量重命名
help renvars // 批量添加前缀或后缀,常用于合并数据
实例:
sysuse auto, clear
rename make mk // 将变量make重命名为mk
rename (price rep78) (Price REP78) // 批量更改变量名称,第一个括号内为各原变量名称,第二个括号内为各原变量对应的新名称
rename mpg foreign trunk, upper // upper批量将变量名称大写
renvars price mpg wei, prefix(d1_) des // 将price mpg wei三个变量批量增加前缀“d1” (实测Stata15中不能使用renvars命令,均使用rename命令,详情见文档rename group文档)
对变量做进一步的说明。
help label
实例:
label var price "汽车价格($)" // label var为变量增加标签,price 为变量名,引号内为文字说明
label var rep78 "维修次数"
对于大型问卷调查,多数都是类别变量编码。使用数字对应文字来对数字含义进行说明。
* Step1: label define,定义标签内容
label define rep78 1 "很好" 2 "较好" 3 "中等" 4 "较差" 5 "很差"
* Step2: label value,将变量与标签内容关联起来
label value rep78 rep78 // 第一个rep78是变量名称,后一个rep78是标签的名称(为了简单起见,将变量名称和标签名称定义为相同的)
label list rep78 // 查看对应关系
des rep78
br rep78 // 查验结果
help des // 变量概况
help ds // 仅列示变量名称
实例:
sysuse nlsw88, clear
des
ds
ds, alpha // 按字母顺序排列显示
help lookfor // 基本命令
help lookfor_all // 外部命令
help findname // 外部命令
实例:
use d_lookfor, clear
lookfor "现金流"
lookfor "报酬"
(1)do文档实际上是Stata命令的集合,方便一次性执行多条Stata命令;
(2)do文档的使用让分析工作具有可重复性;
(3)在一篇文章的实证分析过程中,通常将数据的分析工作写在do文档中。
(1)新建和打开do-file
doedit // 新建do-file
输入命令后保存,在Do-file Editor中再次使用时点击菜单栏open选项打开。
doedit Test.do // 打开一个已存在的名为Test.do的do文档,可指定完整路径
还可以在主菜单条上点击“New Do-file Editor”按钮,新建do-file。
(2)文字特征
点击Do-file Editor窗口中的 Edit–》Preferences 修改偏好设置。
(3)执行do文档
点击菜单栏的“Execute(do)”按钮
或者按“Ctrl+D”。
默认不选中命令语句时执行整个文件,选中语句后执行特定选择的指令。
(1)注释
注释有以下三种方式:
* 第一种注释方式
sum price weight /* 第二种注释方式 */
gen x = 5 // 第三种注释方式
(2)断行
当一行语句过长时,采用断行的方式缩短语句。
断行有以下三种方式:
* 第一种断行方式: /// sysuse auto, clear twoway (scatter price weight) /// (lfit price weight), /// title("散点图和线性拟合图") * 第二种断行方式: /* */ (不常用) twoway (scatter price weight) /* */ (lfit price weight), /* */ title("散点图和线性拟合图") * 第三种断行方式: #delimit 命令(Stata默认出现回车即认为发生断行,所以使用delimit来改变发生断行的标记符号) #delimit ; // 设置断行的标记符号为“;” sysuse auto, clear; des; sum; // 为三条语句 twoway (scatter price weight) (lfit price weight), title("散点图和线性拟合图") #delimit cr // 退回为回车断行的标记方式
【注意:注释和断行的反斜杠前至少要有一个空格】
help functions
主要涉及以上的几大类函数:
math functions——数学函数
density functions——密度函数,用于描述随机变量的分布形态
random-number functions——产生随机数的函数
string functions——字符函数
programming functions——编程函数
datetime_functions——有关时间函数,用于时间序列
time-series functions——有关时间函数,用于时间序列
matrix functions——矩阵函数
help egen // egen用于使用函数来产生新变量
help math functions
sysuse nlsw88.dta, clear
gen ln_wage = ln(wage) // 以e为底数
gen log_wage = log10(wage) // 以10为底数
gen int_tenure = int(tenure) // 取整
gen round_tenure = round(tenure) // 四舍五入
list *tenure in 1/20
des industry // 对于类别变量,处理分为直接基于类别变量分析或是定义虚拟变量(即转化为0,1)
gen dummy = inlist(industry, 7,8,11) // 定义虚拟变量,这里是定义下图中的标号为7,8,11的三个行业属于同一类(取1),其他的为另一类(取0)
* inlist括号内第一项为类别变量的名称,逗号之后列举要展示的数字,后面可以定义文字信息
br industry dummy, nolabel // 查看定义虚拟变量后的结果
以下为定义虚拟变量后的结果。
help string functions
实例:股利分配数据(第一列为发布时间,第二列为数额),需要将时间变量切割为年月日。
实现思路:使用tostring命令将数字转化为文字,再进行切割。
use tostring2.dta, clear
tostring date_pub,gen(date1) // 数字--》文字
gen year = substr(date1, 1, 4) // 使用substr函数进行切割,取出前四位。从第一个字符开始,取四个字符
gen month = substr(date1, 5, 2) // 从第五个字符开始,取两个字符
gen day = substr(date1, 7, 2)
下图为切割结果:
destring year month day, replace // 再将 文字--》数字
实例:银企关系数据中银行名称的提取。数据中包含三个变量(id,year,objnm),但是由于objnm变量值过长,导致无法显示。
ues bankname.dta, clear
compress // 精简存储格式,compress attempts to reduce the amount of memory used by your data.
keep in 1/15 // keep: drop eliminates variables or observations from the data in memory.
使用compress进行精简,这时银行名称得以显示。
【compress()和kcompress()的区别】
需要将银行名称中的总行名称提取出来。
实现思路:使用查找替换进行处理
gen bank = objnm
* 搜索关键字进行替换
replace bank="中国农业银行" if strmatch(bank, "*农业银行*")
replace bank="招商银行" if strmatch(bank, "*招商*")
replace bank="中国银行" if strmatch(bank, "*中国银行*")
replace bank="中国工商银行" if strmatch(bank, "*工商*")
replace bank="兴业银行" if strmatch(bank, "*兴业*")
replace bank="光大银行" if strmatch(bank, "*光大*")
replace bank="交通银行" if strmatch(bank, "*交通*")
replace bank="北京银行" if strmatch(bank, "*北京*")
browse
【其他常用字符函数】
help substr() // 截取
help strmatch() // 查找替换
help strpos() // 字符出现的位置
help subinstr() // 替换字符
help subinword() // 替换单词
常用于蒙特卡罗模拟
help random_number_functions
实例:
clear
set obs 10000 // 设定10000个观察值
gen x_u = runiform() // 服从U~(0,1)均匀分布的随机数
histogram x_u // 绘图
gen x_n = rnormal() // 服从标准正态分布的随机数,r代表随机数
histogram x_n
gen x_p = rpoisson(5) // 服从自由度为5的泊松分布
histogram x_p
* 蒙特卡罗模拟,相关应用
help simulate
help bootstrap
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。