如何用Stata完成(shui)一篇经济学论文(四):数字相关


数据导入Stata后,我们的第一件事就是打开数据面板看一眼,在命令栏输入“bro”后按回车键或点击菜单栏下的这个图标查看数据。 在这里插入图片描述
可以看到我的数据列中有红的和黑的,其中红的是字符串类型,黑的就是数字类型。 在这里插入图片描述

数字类型可以进行函数运算、回归等与数学有关的进程,而字符串类型则不能。需要注意的是,两个类型都能用于加法和乘法运算,但产生结果有所不同。如,数字进行的加法运算 1 + 1结果就为2,结果仍然为字数字,但如果是字符串类型进行的加法运算"1" + “1"结果则为"11”,结果为字符串。字符串与数字不能相加!

可能有同学要问,如何区分数字类型的数字与字符串类型的数字,最直观的当然只直接看表,红的是字符串,黑的是数字。但我们在数据处理中敲命令也要说清楚字符类型。这时,如果我们使用的是

g x = 1

则为数字,若为字符,则要加上双引号(英文字符的引号哈)

g x = "1"

此时就是字符串,其实只要生成字符串类型,都要加上双引号。

g x = "北京"
g x = "abc"

数字的运算

以abs()为例,该函数的意思是取绝对值,对于取单个数字的绝对值,在stata命令行中,我们可以写

gen x1 = abs(-9)
* 此处等于 *
gen x1 = 9

若是取一个变量的绝对值

g x2 = abs(hour)

取x2的值为变量hour的绝对值。

这里我只列举了几个常用到的,如果大家有其他的需求请自行搜索或参考这个

exp():指数 exp(0)=1
int():取整  int(5.6) = 5, int(-5.2) = -5
ln(): 对数 ln(1)=0
log10(): 以10为底的对数 log10(1000)=3
sum(): 求和
ceil(): 返回大于或等于自变量的最小的整数。
floor(): 返回小于或等于自变量的最大的整数

生成随机数

随机数这一块我一般用的少,也就是在连续做几百次安慰剂检验的时候套在循环里用到过,不过还是讲一讲,以供参考。先放我加工过的官方文档:

扫描二维码关注公众号,回复: 11869057 查看本文章
set seed #   // # is any number between 0 and  2,147,483,647
gen x = runiform(a, b)

其中set seed 表示设置一个种子数,这个种子数方便下次找出同一组随机数(也就是让你的结果可验证),这个种子数可以是0到2147483647里的随意一个。设定好种子数之后,我们就生成一个变量x,x在(a,b)区间内均匀分布,也就是说(a,b)区间内每个数被选中的概率相等。举一个具体的例子:

set seed 1078
g x = runiform(1, 1028)

这里我在1到1028间取了一组随机数生成了变量x,x的个数与我数据集的长度一样。但这里生成的随机数可能是小数,如果需要整数可以再写:

replace x = ceil(x)

取比每个随机数的大的最小整数,当然这里你也可以换成floor(),int(),只要能得到整数就行。

References
https://www.jianshu.com/p/391575768e34
stata runiform, set seed官方文档

猜你喜欢

转载自blog.csdn.net/Hedy_mail/article/details/108257144