Stata统计分析从入门到精通
上QQ阅读APP看书,第一时间看更新
 Stata统计分析从入门到精通

1.4 Stata 16.0运算符与函数

下载资源:\video\第1章\…

下载资源:\sample\第1章\数据1

1.4.1 Stata 16.0运算符

在Stata 16.0中,我们可以使用的算术运算符、关系运算符和逻辑运算符分别如表1.1~表1.3所示。

表1.1 算术运算符

表1.2 关系运算符

表1.3 逻辑运算符

注意

各类运算符的优先顺序是:!(或~),^,-(负号),/,*,-(减号),+,!=(或~=),>,<,<=,>=,==,&,|。如果用户难以记住运算符的优先顺序,可以采用嵌套括号的形式获取运算优先级,最里层括号内的表达式将会最先被计算。

下面使用“数据1”数据文件作为进行相应运算的示例。

1.算术运算

在命令窗口中依次输入:

gen newX7=X7+1 (本命令的含义是生成newX7变量,其值为X7加1)

list X7 newX7 in 1/5 (本命令的含义是列出第1~5个样本观测值X7和newX7的值,可以发现newX7的值都是对应X7的值加1)

上述命令的执行结果如图1.33所示。

图1.33 第1~5个样本观测值X7和newX7的值

然后输入:

drop newX7(本命令的含义是删除已生成的newX7变量)

drop命令是用来删除某些变量和观测值的,基本命令如下:

· 删除变量: drop varlist。

· 删除样本观测值:drop if exp。

· 删除一定范围内的样本观测值:drop in range [if exp]。

与drop命令相对应的是keep命令,用来保留某些变量和观测值,基本命令如下:

· 保留变量: keep varlist。

· 保留样本观测值:keep if exp。

· 保留一定范围内的样本观测值:keep in range [if exp]。

特别提示

使用drop命令删除变量和观测值、keep命令保留变量和观测值都是不可逆的。一旦用户排除了变量和观测值,就不能再把它们读取回来。用户需要返回原始数据集并重新读取。所以,用户应该尽量考虑使用if或in临时选择子集,而不是应用drop或keep进行子集分析。这通常是最好的策略。

2.数值运算

数值计算的命令为“di”,在命令窗口中依次输入:

di 5+3

di 5-3

di 7^2

di 7/2

di(6+7^(5-3))/sqrt(5*5)

即可出现如图1.34所示的结果。

3.字符运算

图1.34 数值计算结果

字符运算的命令为“scalar”,在命令窗口中依次输入:

scalar X="中华"+"人民共和国"(本命令的含义是生成字符X,将“中华”和“人民共和国”连在一起,注意引号必须是半角和英文模式)

scalar list X(本命令的含义是列出生成的字符X,注意列出字符的命令是scalar list)

上述命令的执行结果为:X=中华人民共和国。

然后我们输入:

scalar Y=X+"万岁"(本命令的含义是生成字符Y,将前面生成的X和"万岁"连在一起,需要注意的是X不再加引号)

scalar list Y(本命令的含义是列出生成的字符Y)

上述命令的执行结果为:Y = 中华人民共和国万岁。

4.关系运算

示例关系运算。在命令窗口中依次输入如下的关系运算命令:

di 9==8

di 4>=2

即可出现如图1.35所示的结果。

我们可以灵活运用关系运算针对分类变量创建虚拟变量。接续上例,如果在命令窗口中依次输入:

gen xingbienew1=(xingbie==1)

gen xingbienew2=(xingbie==2)

gen xingbienew3=(xingbie!=2)

gen xingbienew4=(xingbie~=2)

list xingbie xingbienew1 xingbienew2 xingbienew3 xingbienew4 in 1/5

即可出现如图1.36所示的执行结果。

图1.35 关系运算示例的执行结果

图1.36 针对分类变量创建虚拟变量

可以发现,xingbienew1、xingbienew3为xingbie==1时的虚拟变量,xingbienew2、xingbienew4为xingbie==2时的虚拟变量。

5.逻辑运算

示例逻辑运算。在命令窗口中输入:

list Y1 Y2 X1 X2 if Y1>=4&X1<4|Y2>=3&X2<=5(本命令的含义是列出符合条件的样本Y1、Y2、X1、X2的值,条件一是Y1大于等于4且X1小于等于4,条件二是Y2大于等于3且X2小于等于5,两个条件符合其一即可)。

即可出现如图1.37所示的执行结果。

1.4.2 Stata 16.0函数

图1.37 逻辑运算示例的执行结果

函数用于表达式中,表达式在Stata命令中缩写为exp,可以在任何表达式中调用函数。函数的参数可以是包括其他函数在内的任何表达式。函数的参数用圆括号括起来,如果有多个参数,则参数之间用逗号分隔开。Stata 16.0共有9大类函数,分别是日期和时间函数、数学函数、矩阵函数、编程函数、随机数函数、时间序列函数、统计函数、字符串函数、三角函数。具体的函数类型以及相关的介绍,用户可以通过在命令窗口中输入“help function”进行查询,常见的函数如表1.4所示。

表1.4 常见的函数

下面继续使用“数据1”数据文件作为计算示例,在命令窗口中依次输入:

di sqrt(49) (求49的平方根,结果为10)

di abs(-10) (求-10的绝对值,结果为10)

di ln(exp(9)) (先求e的9次方,再取对数,结果为9)

di int(9.22) (对9.22取整数,结果为9)

di int(-9.22) (对-9.22取整数,结果为-9)

di round(-9.22) (对-9.22四舍五入,结果为-9)

di round(-9.22,.1) (对-9.22四舍五入至小数点后一位,结果为-9.2)

下面结合函数来看两个重要命令 gen和egen的区别,打开“数据1”文件,在命令窗口中依次输入:

gen Y2new1=sum(Y2) (生成变量Y2new1,将变量Y2样本观测值汇总求和)

egen Y2new2=sum(Y2) (生成变量Y2new2,将变量Y2所有样本观测值汇总求和)

list Y2 Y2new1 Y2new2 in 1/10 (列出Y2、Y2new1、Y2new2前10个样本观测值)

得到如图1.38所示的执行结果。

图1.38 Y2、Y2new1、Y2new2前10个样本观测值

从上面的执行结果可知,gen命令生成的变量值是一个变动的值,egen命令生成的新变量值往往是一个常数。