Stata入门——生成虚拟变量

sysuse auto,clear
tabulate foreign
对变量的取值以频率表方式进行列示
summarize foreign
对变量进行描述性统计:最小值=0,最大值=1,满足了0 & 1变量的分类
变量展示的值并非0或1: 因为对于该变量执行了label标签命令
*method 1: if
gen dummy1 = 0 if !missing(foreign)
对于全部不缺失foreign这一变量数值的样本,新建一个虚拟变量dummy1,且取值为0
replace dummy1 = 1 if foreign == 1 & !missing(foreign)
对于其中foreign 取值为 1的样本,替代虚拟变量的值为1
*method 2:cond
gen dummy2 = cond(foreign == 1, 1,0)
replace dummy2 = . if foreign == .
若foreign == 1,dummy2=1,否则dummy2=0
若 foreign 为缺失值,则设置dummy2=缺失
局限性:若变量的取值有多个,手动添加若干个虚拟变量很麻烦
*method 3:tab (tabulate的简写)
tab make , gen(car_)
根据make这一变量取值的不同,生成若干个虚拟变量car_1, car_2, car_3 ….
有多少种不同的取值,就会生成多少个虚拟变量
reg price mpg trunk car_*
当进行回归分析时,也不需要将全部虚拟变量手动输入,直接利用*作为通配符
reg price mpg trunk i.mpg
不将虚拟变量生成为新变量,直接在回归分析中加入mpg取值对应的虚拟变量
但这种方法仅适用于数值型,对于字符串型(如make变量)会报错:string variables may not be used as factor variables
egen make_group = group(make)
reg price mpg trunk i.make_group
group函数根据字符串变量取值的不同生成一一对应的数值
这一方法使字符串变量在不生成新变量的情况下,在回归分析中加入该变量取值对应的虚拟变量