STATA第五讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Stu_id 1 2 3 4 5 6
Name John Marry Jack Tom Jerry Jim
Chinese . 80 78 77 87 87
Math . 90 60 85 86 60
第五讲、命令语句结构与运算符
• 逻辑运算
– 逻辑运算符包括非(!或者~),和(&)、或(|)三种,大量运用在条 件和判断语句中。 – sysuse auto.dta, clear //导入系统自带的汽车数据文件 – list if (price>5000)&(foreign==1)//显示价格超过5000的国外车的基本 特征 – list turn if ((price<5000)|(price>10000))&(foreign==1)//显示价格小 于5000或者价格超过10000的国外车的转速 – 注意,在 STATA 中,和(&)优先于或(|)。问下面的命令代表什么含 义? – list turn if (price<5000)|(price>10000)&(foreign==1)
第五讲、命令语句结构与运算符
• 命令语句的格式
– 通过前面几讲的学习,相信大家对命令多少有了点自己的了解。本 讲将介绍STATA命令语句的一般性格式: – [by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options] – 一般性格式中包含有如下几个组成部分:命令(command)、变量 列表(varlist)、分类(by)、赋值(=exp)、条件(if exp)、 范围(in range)、权重(weight)、可选项(options)。其中, [ ]表示可有可无的项,否则为必选项,显然只有 command 是必不可 少的。下面我们将结合具体的例子来讲解各个组成部分的含义及功 能。
第五讲、命令语句结构与运算符
• 赋值操作(=exp)
– [by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options] 该语句主要用于 生成新变量(gen)或覆盖原有变量(replace)。 – 例:假定销售商相对所有的车进行降价处理,降价的方式是在原有价格基础之上打9折在扣除100 美元。我们可以用下面的命令实现: – cd d:/mystata – use myauto.dta, clear – gen adj_price=price*0.9-100 //新的变量adj_price由原始价格*0.9减去100来生成 – list price adj_price //显示price和adj_price的内容 – 如果要覆盖已存在的变量,要用replace命令,不可以用gen命令。
第五讲、命令语句结构与运算符
• 条件语句(if exp)
– [by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options] 当我们 只想对满足某些条件的数据进行某类操作时,则应当考虑使用条件语句。 – 例1:假定某客户只想查看进口车的价格 – cd d:/mystata – use myauto.dta, clear – list price if foreign==1 – 例2:假定某客户只想查看价格高过10000的进口汽车信息 – list if (price>10000)&(foreign==1) – 例3:假定某客户想分类查看价格高过10000或低于6000的进口汽车和国产汽车信息 – by foreign: list if (price>10000)|(price<6000)
第五讲、命令语句结构与运算符
• 分类变量(by varlist)
– [by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options] 该语句的含义是 根据变量列表,varlist来执行相应的命令。请比较下面的两个例子:例1:对所有汽车数据进行命 令操作 – cd d:/mystata //设定工作路径为d盘的mystata文件夹 – use myauto.dta, clear //打开d盘文件夹mystata中的文件myauto.dta,并清空原有内存 – sum price mpg length //对变量进行基本统计分析 – 例2:*对国产车和进口车进行分类命令操作 – by foreign: sum price mpg length //对国产车和进口车分别进行基本的数据统计分析 – 注意:用by语句时,一定要确保内存中的数据是按照by后面的变量排序的,否则将会报错。请看 下面的例子: – sort price //将内存中的数据按照价格进行排序 – by foreign: sum price mpg length – not sorted
第五讲、命令语句结构与运算符
• 命令(command)
– 命令的简化规则 – 在不引起歧义条件下,命令可以尽量只写前几个字母。如 summarize 只需要前两个字母 su;而describe只需要写第一个字 母d。在帮助文件中,命令下面的小划线表明了命令的可以省略到什 么程度。如 – describe [varlist] [if] [in] [, options] – summarize [varlist] [if] [in] [weight] [, options] – 练习:请用list命令进行仿照练习。
第五讲、命令语句结构与运算符
• 变量(varlist)
– [by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]varlist: 变量列表, 表示一个或者多个变量,多个变量之间用空格隔开。变量一般紧跟command命令之后,表示命令 执行对象。如 – cd d:/mystata //工作路径设定在d盘的mystata文件夹下 – use auto.dta, clear // 打开数据文件并清空原有内存 – su price //显示价格变量的基本统计特征 – su p //由于auto文件中只有变量price首字母为p,因此与su price相同 – su t //数据中有两个变量的开首字母为t(trunk和turn),所以STATA认为t为模糊的省略,并给出 如下的错误信息 – t ambiguous abbreviation – su trunk turn//显示trunk和turn的基本统计特征 – su t* //与上一条命令相同,显示首字母为t的所有变量的基本统计特征
STATA是当前最为流行 的统计计量分析之一
第五讲、命令语句结构与运算符
• 运算符与运算
– 对数据进行加工,不可避免 的会涉及到数据的运算。 STATA共有四种运算:代数 运算、字符运算、逻辑运算 和关系运算。各种运算的运 算符见右表。 代数运算 逻辑运算 关系运算
+
“加” 或“字 符相加” “减” 或“负 号” 乘 除
第五讲、命令语句结构与运算符
• 关系运算
– 关系运算包括大于、小于、等于;大于等于、小于等于、不等于等多种比 较关系。特别要注意的是,STATA中的等于符号为“==”,是两个等号连 写在一起,表示比较两边的关系式是否相等,它不同于“=”。“=”的 含义是将等号右边的值赋予左边的变量,这是一个赋值号。当关系式满足 是,显示结果为1(表示关系式正确),否则显示结果为0(表示关系式错 误) – dis 3>5 //dis是display的简写,显示结果为0 ,表示关系式不对 – dis 3<5 //显示结果为1,表示关系式正确 – dis 4==4 //显示结果为1,表示关系式正确 – 在进行关系运算中一定要注意缺失值,因为在STATA中,系统缺失值大于 任何一个数据。
&
“与” 或“和” 或 “非” 或“不”
>
大于
– 运算的优先级(从高到 低):!(或~),^,-(负 号),/,*,-(减), +,!=(或 ~=),>,<,<=,>=,==,&,| 当 忘记或者无法确定优先序的 时候,最好用括号将优先序 表达出来,在最里层括号中 的表示式将被优先执行
* /
| ~ !
第五讲、命令语句结构与运算符
• 命令(command) – [by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options] – 命令(command)是命令语句中的核心,他告诉计算机应该执行怎样的操作,是实现人 和机器沟通的语言。 – cd d:/mystata //cd:工作路径设定在d盘的mystata文件夹下 – use auto.dta, clear // use: 打开数据文件;clear:清空原有内存 – summarize _all //summarize:显示内存中所用变量的基本统计特征 – summarize //很多命令可以单独使用,这时一般指针对所用变量进行该命令操作。该结 果与上一条命令功能一样。 – sum // 与上一条命令等价,是summarize的缩略形式 – su // 与上一条命令等价,是summarize的最简形式 – s //简写前提是不引起混淆。执行这个命令将出现错误信息 – unrecognized command: s – r(199);
• 例
– 下面举例说明忽略缺失值的严重后果。假 定有如下的学生成绩数据,由于John缺考, 因此成绩缺失。 – 现在假定学校想了解数学成绩在80~90分 和90分以上的人数,有人写出如下命令进 行统计 – gen Math_9=(Math>=90)//成绩在90及 以上的 – gen Math_8=(Math<90)&(Math>=80)//成 绩在80~90之间 – list Math Math_9 Math_8//显示结果 – 显然这种统计方式是错误的,因为他将缺 考的John的数学成绩当成超过90分来处理。
< >= <=
小于 大于等 于
“非” 或“不”
小于等 于 等于
不等于
^
sqrt()
指数
开方wenku.baidu.com
==
~=或! =
第五讲、命令语句结构与运算符
• 代数运算
– 代数运算是最基本的数据处理,它包括包括加(+)、减(-)、乘(*)、 除(/),幂(^)和负数(-)。在进行代数运算时,如果遇到缺失值、 运算不可行时(比如除数为零)或运算不用执行时均会得到缺失值。 – 如只给女生成绩进行开方在乘以10进行调整,则可以用如下命令 – use Math_score.dta, clear //将数学成绩文件打开 – gen math_female=sqrt(math)*10 if gender==0//将女生数学成绩进 行调整,并将调整后的成绩记为math_female
对外经济贸易大学金融学院 谢海滨 International Business School, UIBE
计量经济软件及应用
STATA硕士研究生班
第五讲、命令语句结构与运算符
STATA的广泛应用:
-1.运算符及运算 -2.命令语句结构 ->1 命令(command)
->2 变量(varlist)
->3 分类变量(by varlist) ->4 赋值(=exp) ->5 条件(if exp) ->6 范围(in range) ->7 加权(weight) ->8 可选(option)
第五讲、命令语句结构与运算符
• 字符运算
– 当需要把两个字符进行连接时,同样可以用加号(+)来完成。比如,把 “我”和“爱你”合并在一起,命令为: – scalar a= “I”+ “Love U”//将字符I和Love U连接并赋予a。注意:引 号必须是在英文半角状态,否则出错。 – scalar list a// 显示a的内容 – 不可以将不同类型的数据进行相加,否则将出错。例如,把数值型数据2 和字符型数据3相加就会出错。 – scalar a= 5+ “3”//将数值2和字符3相加,结果出错 – type mismatch – r(109);