Stata代码解释(配合demo1代码)

更新时间:2023-10-14 20:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

在stata代码第二行的(有铅笔在纸上写字)的图标打开代码文件 在打开的DO-file中open-file,点击.do结尾的文件(demo.do) 红色:路径 绿色:注释 蓝色:代码

1-8行:相当于表头

11-14行,是每一个stata代码中都有的

clear all——清空STATA所有文件中的数据,重新开始

cap log close——关闭之前打开的log文件(后面会说是什么)

set more off——跑一个特别长的回归,STATA会显示一个more,要一直点才会不断出现,如果一开始就这么写的话就不会出现这个情况

cd \课件/17秋计量/Stata_0923\——固定stata的工作目录,打开数据、存储数据、打开log、存储log文件、输出表格的操作就都不用输这个路径了,直接输文件的名字就好! 把STATA的工作目录调到一个工作路径上,打开数据时,要找到数据所在路径并复制粘贴到这个部分就行, .dta前面的部分

选定所想运行的代码,点do_file里最上面的第二行小图标里面的Do就可以了 然后返回输出界面看,如果有红色字体就是报错

Log文件:

Log就是日志的意思

相当于就将所有操作过程、代码、执行情况都记录在一个.txt的文件中,防止写代码的时候忘记保存code.突然停电等情况, Help:

执行help log文件就会自动跳出stata的帮助文件,这个文件中就会系统的介绍log的用法 Help+一个指令,运行时就会自动跳出stata关于该指令的帮助文件,系统介绍这个指令的用法

如何导入数据:

如果数据时一个.dta文件,就直接在操作界面中打开数据就好 use 文件名称.dta, clear

(clear的作用是如果现在你正在使用另一个数据,如果没有clear那么就会报错,相当于先关掉你之前正在处理的数据,重新打开一个新的数据,如果你之前处理的数据没有保存的话,那么stata会直接关闭不保存,所以一定要先保存再打开)

运行一下,到操作页面看,右边就是出现的所有变量,下面就是变量的描述 这一个数据集是在古德里奇里面所附的,助教已经发到论坛上了

操作页面上面的小图标里:在dofile的右边有data editor, data editor browse,

Data editor browse 打开以后就是整个样本集的全貌,几个变量,几个样本点,可以浏览数据(不能编辑)

Data editor点开以后,和browse的页面一样,但是可以对数据进行编辑 所以不鼓励用data editor Excel 也可以直接打开

默认将第一行作为变量名 剩下的都是数据

import excel using (excel文件名).xlsx, first clear

不输入first的话,会把所有的格都当做数据,如果输入first clear的话,stata会将第一行作为变量名而非数据

Stata识别命令的时候会以行为单位的,相当于会先执行一行的,再执行下一行,所以如果一行命令很长的时候,可以换行,否则会一直从左边写到右边去

换行的时候先打一个空格,再接三条从右上向左下的斜线///,stata自动将这种代码当做一行处理

38.39行

执行browse指令,就相当于刚刚点开了放大镜的那个小图标 执行edit也一样,相当于点开刚刚的小图标

如何保存处理过后的数据 46行

save (取一个你想命名的名字)_1.dta,replace

注意要有_1,要不然之前原始的文件就会被换成新的文件 Replace必须写,相当于把之前的文件替换掉,不然会报错

Describe:变量的基本信息,是数值型的还是字符型的,先给你展示一下 第一列就是变量的类型:整数、小数型的 第二列是腐烂了美团

第三列是label:我们存变量的时候,之后会有很多的操作,所以变量名不会很长,所以取名会比较精简,但是为了防止之后不知道所写的是什么,就会加一个label,解释一下这个变量名

如果describe之后没有加任何东西的话,就是默认展示所有变量

如果describe之后加上一个变量例如wage,就只会展示wage的变量名 Describe可以缩写为d

之前的browse 也可以写为bro

哪些变量可以缩写,可以点击help进行查看

Codebook

展示一些具体的描述性统计

例如61行codebook,可以看出取值范围,非重复的值是多少,标准差,均值,最大最小值等

Summary(缩写为sum)和codebook一样

Sum wage, detail则会更详细一些,会告诉你很多分位数上的值是多少

如果想调用其中的一个数值,

一个就是复制下来粘贴,但是不美观也容易出错

另一个就是生成一个数值变量——scalar,例如把工资的平均值赋成一个数值变量

(插一句:stata的变量分为两种,一种是wage这种相当于一个项量,另一个是stata自己生成的一个相当于标量)

赋成数值变量的方式就是scalar (你所取的名字,例如wage_average)=r(mean)(你所调取的stata内部给这个量所取的名字)

如何知道stata对这个量的内部名字呢?

就是在sum wage 之后执行一个 return list,就可以看到stata内部对某一个值的内部标定,

想赋哪一个值就可以将前面的标定引用

Scalar 生成之后,stata就会自动保存下来,之后每一次想用的时候就输自己取的这个名字就好,例如你想让stata展示一下这个值的大小,就写display(缩写为dis)wage_avg就可以了

Tabstat,就是把变量的信息以表格的形式呈现出来(助教说这个和tabulate说反了,是看描述进行统计的)

Tab educ, stat( mean min max) by (urban)他就会具体的呈现出来

by (urban)就涉及两个变量了,就是在农村住的人,平均受教育年份是13.21,城市里住的人的受教育年份是14.56

tabulate feduc 是看具体的值,出现了几次

tabulate father education(指令打做tabulate feduc) 就是这个值出现了多少次都呈现出来,父亲的受教育程度0是文盲,有受过1年教育,一直到18年教育的phd,右边的frequent就是出现过多少次,再右边一列就是百分比,再右边一列就是累计的百分比,相当于统计当中的F的值

tab feduc, miss(也可以写作tab feduc, m)相当于把缺失的数据也展出出来 这个是用来看数据的分布和缺失程度的,非常重要

可以看变量之间二维的分布

就是在tab之后输入两个变量(例如tab south urban)south也是一个零变量,1代表来自南方,0代表来自北方,urban1则是1代表来自城里,0代表来自农村 之后以行出现south,以列出现urban

tab south urban,row就是以行为单位出现百分比,表现出在所有的北方人里面大概75%是南方人,在所有的列里面大概65%是城里人 tab south urban,chi2 就是做一个卡方检验,看这两个变量的分布上有没有显著性的y依赖于x的分布关系

94行

tab south urban, summ(wage) means看工资的平均值分为南方的城里农村以及北方的城里农村

95-97一样的意思

Correlation(简写做corr)就是看协方差和相关系数

Correduc wage就是得到两个的相关系数(正值就是正相关,负值就是负相关)

correduc wage, cov就是得到两个变量的协方差矩阵,左上角是教育程度的方差,右下角是工资的方差,左下角就是协方差

同样可以用return list 调取代数,并用scalar赋值变量

correducmeducfeduc 的话,涉及三个变量,最后就会反应他们之间的两两关系 list就是可以把brouse当中的几行数据调取出来

sort这个指令很重要,相当于excel当中的排序,sort hours就是把所有数据按照工作时长排序,(先执行之后再brouse一下看看) 从大到小排序——gsort hours order feducmeduc就是将这个变量放在最前面,后面再跟什么工作时长、教育年限之类的其他变量

scalar pi = 3.1415926,这是你取的名字,之后你再想用的时候就可以直接打pi就好

但这是一个数值变量,你如何生成一个变量、即一个项量呢?就是用generate这个指令,简写做gen,比如你想将每个人都算一个年龄的平方,例子见133行

另外例子:取工资的对数:generatelnwage = log(wage)

生成一个新的变量之后就要养成贴标签的习惯,label varage_sq \因为标签是文本,所以要加上双引号

另外一种标签是数据标签——label define urbanlabel 1 \是先生成一个数值标签(urbanlabel也是自己取的名字)相当于做衣服,label values就是将urbanlabel这个标签穿在urban上(给变量贴数值标签也重要) 生成随机数,了解就好: 做一些数值模拟的时候会用到

gen random1 = runiform()在(0.1)上生成随机分布的随机数,random1就是自己命的名 gen random2 = rnormal(0)(这个没有解释)

gen wage_k = wage/1000就是新生成一个单位,原来的单位是美元,现在自己新生成一个单位叫做千美元label varwage_k \:1000yuan)\

gen obsID = _n 按照顺序生成了一个编号(_n在stata当中就是自动生成1.2.3….) 只有每一个人都有了一个相应的编号,就可以把不同的数据集相互合并

egen比gen可以执行更为复杂的操作

egenIQ_rank = rank(IQ)就是按照IQ进行排序

bysorteduc: egenwage_byeduc = mean(wage)就是按照受教育程度来求工资的平均值,bysort就是同时也按education从小到大排序 对变量重新命名——见165行 变量的类型也可以调换

本文来源:https://www.bwwdw.com/article/bhjf.html

Top