主要内容来自连玉君
大大的视频网课(连享会的相关文章都写的太好了,让我丧失了自己整理stata
学习笔记的欲望),选择自己认为常用、重要的整理。很多内容学了不用经常会搞忘,写一个文档备查,这篇是一些stata
基础知识,主要自用,大家可以酌情参考。
0. 变量导入
在正式的开始之前,需要导入相关数据,主要包括两步:
- 清除现有数据
- 导入新的数据
* - 数据清除 -
clear all // 清除所有
cls // 清除屏幕
* - 数据导入 -
sysuse auto.dta, clear //导入美国1967-2002GNP数据
sysuse
:命令可以导入一些stata
官方提供的数据,如果使用自己的数据可用use
导入,这里默认大家都会不再赘述
,clear
:可选项,在导入的同时,清除现有【数据】,但是只能清除数据,可能存在一些【其他】的东西没有清除掉,所以一般在最开始前会加上一个clear all
1. 变量标签的处理
为了数据文件具有一定的可读性,通常需要通过标签的方式,对数据进行备注。包括数据本身的标签,和数据的值所对应的标签。
- 数据标签的定义和替换:
label variable 变量名 "变量标签名"
- 数据值标签的定义和替换:
label values 变量名 变量值标签
* - 标签 -
* >> 变量的标签
label variable rep78 "修理记录" // 变量标签命名
* >> 变量的值标签
label define repair 1 "好" 2 "较好" 3 "中" 4 "较差" 5 "差" // 定义标签
label values rep78 repair // 将此标签赋给rep78
* >> 显示值标签
labelbook // 在查看别人的数据时经常使用
这里需要注意两点:
- 变量标签,最好使用引号引用,否则遇到空格会自动分段,容易引起不必要的误会
如label var rep78 修理记录1978
(无空格,可以)、label var rep78 修理记录 1978
(有空格,不行)- 值标签需要先定义:
label define 值标签名 数值 "数值标签"
- 同一个值标签可以赋给多个不同的变量,比如同样的
0-1
或定序
变量
2. 变量类型转换
无论什么软件进行数据处理,变量类型转换都是一个比较大的问题,特别是字符数字转换成数字,提供两种方式:
-
destring
,简单,但是只能用于纯数字的(如ID
,年份等) - 正则表达式对字符串进行提取,稍微比较复杂
* - 变量类型 -
* >> 浮点强制转为整数
describe headroom // 查看headroom类型
recast int headroom, force // 类型强制转换
describe headroom // 查看headroom类型
compress // 精简变量类型 --> 主要用于字符串截尾
* >> 字符串转换为数值
gen year = "1978" // 设置一个新的年份字符串变量[但是变量必须全为数值字符]
destring year, replace // 转换为数值型并对原有变量进行替换
* >> 含有字符串的数字提取
gen year = "1978年" // 创建一个既有数字又有文字的变量
gen Year = real(regexs(1)) if regexm(year ,"([0-9]+)") // 这里提供提取整数的,提取小数可以自行研究
3. 描述性统计
大多数文献要求,在最开始提供数据描述性统计的结果。并且对数据进行描述性统计,可以很快的了解到数据的特征,能够帮助发现数据异常情况。最常使用的命令包括:
-
sum 变量名
:统计变量的样本数、均值、标准差和极值 -
table 变量1 变量2, c(统计量 变量)
:按照变量1
和变量2
进行分类统计(通过bysort
和sum
实现) -
tabstat 变量名
:和sum
基本类似,默认只返回均值
* - 描述性统计 -
* >> 简单统计
summarize price mpg rep78 // 简单描述性统计
format price mpg rep78 %4.2f // 保留两位小数
summarize price mpg rep78, format // 按数据情况进行描述性统计
* >> 分类统计
table foreign rep78, c(mean length) f(%6.2f) center row col // 分类统计length的均值
note: "tab为tabulate的简写,而非table的简写"
* >> 统计方法
tabstat price mpg rep78, stats(mean med min max) /// // 统计均值 中位数 最值
col(s)format(%6.2f) // 转置 保留两位小数
* >> 结果输出
tabexport price mpg rep78 using "Output.txt", /// // 输出结果
statistics(mean sd min max count) replace // 均值 标准差 样本数
// shellout "Output.txt" // 打开txt文件
erase "Output.txt" // 删除txt文件
还需要注意的是,为减少后续处理,可以在进行统计时变对变量格式进行设置如%6.2f
,有过计算机基础的应该都比较好理解,这里附上更改变量格式的代码
* - 变量显示格式 -
list price gear in 1/5 // 列出前5个样本的price和gear
format price %6.2f // 占6位,保留2位小数
format gear %-6.3f // 左对齐
list price gear in 1/5
4. 直方图绘制
很多时候通过绘制图像,可以更好的了解样本和变量的情况
- 散点图:简单观察
x
和y
的关系,以及是否存在关系 - 直方图:了解样本的分布(是否存在极端值,是否基本符合正态)
- 变量相关矩阵:研究变量之间的关系
* >> 散点图绘制
scatter weight length // 绘制散点图Y-X图像
* >> 直方图绘制
histogram weight, normal // 绘制直方图加正态曲线
kdensity weight // 绘制密度函数曲线
* >> 相关系数矩阵
graph matrix price weight length // 绘制两两相关系数矩阵
5. 完整代码
提供完整代码,可直接运行(本人使用stata 15
版本)
/*
Theme:数据处理代码
Author:CZY-CQU
Date:2021年6月7日10:53:21
*/
* - 数据清除 -
clear
cls
* - 数据导入 -
sysuse auto.dta, clear //导入美国1967-2002GNP数据
* ----------------------------------------------------------- *
* - 标签 -
* >> 变量的标签
label variable rep78 "修理记录" // 变量标签命名
* >> 变量的值标签
label define repair 1 "好" 2 "较好" 3 "中" 4 "较差" 5 "差" // 定义标签
label values rep78 repair // 将此标签赋给rep78
* >> 显示值标签
labelbook
* ----------------------------------------------------------- *
* - 变量类型 -
* >> 浮点强制转为整数
describe headroom // 查看headroom类型
recast int headroom, force // 类型强制转换
describe headroom // 查看headroom类型
compress // 精简变量类型 --> 主要用于字符串截尾
* >> 字符串转换为数值
gen year = "1978" // 设置一个新的年份字符串变量
destring year, replace // 转换为数值型并对原有变量进行替换
* ----------------------------------------------------------- *
* - 变量显示格式 -
list price gear in 1/5
format price %6.2f // 占6位,保留2位小数
format gear %-6.3f // 左对齐
list price gear in 1/5
* ----------------------------------------------------------- *
* - 描述性统计 -
* >> 简单统计
summarize price mpg rep78 // 简单描述性统计
format price mpg rep78 %4.2f // 保留两位小数
summarize price mpg rep78, format // 按数据情况进行描述性统计
* >> 分类统计
table foreign rep78, c(mean length) f(%6.2f) center row col
note: "tab为tabulate的简写,而非table的简写"
* >> 统计方法
tabstat price mpg rep78, stats(mean med min max) /// // 统计均值 中位数 最值
col(s)format(%6.2f) // 转置 保留两位小数
* >> 结果输出
tabexport price mpg rep78 using "Output.txt", /// // 输出结果
statistics(mean sd min max count) replace // 均值 标准差 样本数
// shellout "Output.txt" // 打开txt文件
erase "Output.txt" // 删除txt文件
* ----------------------------------------------------------- *
* - 基本图像绘制 -
* >> 散点图绘制
scatter weight length // 绘制散点图Y-X图像
* >> 直方图绘制
histogram weight, normal // 绘制直方图加正态曲线
kdensity weight // 绘制密度函数曲线
* >> 相关系数矩阵
graph matrix price weight length // 绘制两两相关系数矩阵
notes // 显示所有的note