查看原文
其他

marktouse标记使用变量

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:王碧琪

文字编辑:朱巧利

技术总编:张计宝



Stata暑期线上课程火热招生中~

爬虫俱乐部将于2020年7月11日至14日线上举行为期四天的Stata编程技术定制培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata的基本命令、编程、数据处理以及结果输出等技术,并针对最新版Stata中的实用新功能做出详细介绍,包括框架功能(frame:读入多个数据集)等等。同时,此次云端课程提供录播,提供线上答疑。详细培训大纲及报名方式请查看《Stata云端课程来啦》,或点击文末阅读原文直接提交报名信息呦~

有时,我们需要对命令中使用的观测值进行标记。例如,程序要对不包含缺失值的观测值计算统计量(例如线性回归);或程序设定了条件语句、范围语句等,需要确认其所使用的观测值。这时候一个标记变量就派上用场了。Stata有专门的命令marksample来生成标记变量,对使用的观测值进行标记。小编去看了介绍文档,发现语法复杂,使用起来有些吃力。于是,上网冲浪的小编又捡着宝了,另一个命令大显身手,它就是marktouse


一、简介


marktouse是外部命令,需要手动安装。

ssc install marktouse

它的基础语法是:

marktouse markvar [varlist] [if] [in] [weight] [, label(label) zeroweight ]

其中,markvar是新生成的标记变量,varlist是一组用于判断的已有变量,ifin加上判断条件语句,weight用于加权,另外,可以用label选项添加标签,用zeroweight声明不排除权重为零的观测值。

它的主要用途是生成一个0/1标记变量用来标识是否使用了该观测值。在没有任何指定变量包含缺失,满足ifin限定符,且具有严格的正、无缺失权重的观察值中,将标记变量设置为1,在所有其他观察值中将其设置为0


二、案例实操


使用auto数据作为处理对象,生成标记变量。

clear allsysuse auto,clearkeep make price weight rep78marktouse touse price weight rep78

生成的touse变量在priceweightrep78中任意一个为缺失值时取值为0,其余取值为1(因为这里没有设置权重,所以不用考虑无缺失权重问题)。

return list

返回值说明markvar名称为touse,共有69个标记为1的变量值。

count if price==. |weight==. |rep78==. dis _N-r(N)

使用count来验证,发现priceweightrep78中任意一个为缺失值的有5个,排除掉之后余下69个观测值,与上面采用marktouse得到的取值为1的观测值数目相等。

接下来,就可以通过标记变量,对即将使用的变量值进行回归操作了。生成标记变量的目的就在于为下面的操作做好铺垫。

regress price weight if touse //线性回归estimates store model1xi: regress price weight i.rep78 if touse //虚拟变量回归estimates store model2estimates table model1 model2, stats(N)

结果报告了回归的系数,另外可以注意到此时的N69,与上述marktouse取值为1的数值相同。说明marktouse成功发挥了作用。在需要使用标识变量时,只需在语句中加入iftouse即可,方便快捷,简单明了。

另外,还可以加入label选项。

marktouse touse1 price weight rep78,label("标记price-weight-rep78的使用值") //给touse加标签

在变量属性窗口中可以看到已经成功加上标签,这对于需要使用多个标记变量时很有必要。


三、结语


相较于Stata官方的mark系列命令,marktouse是用来简化marksample的。它不需要在program内使用;生成的是标识变量,而非宏;可以同时标记多个变量,即markvar可以包含多个变量;语法更简单。如果要确保所有命令使用相同的观察值,mark系列未免有点繁琐,那么不妨试试今天介绍的marktouse~~~







对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
换种视角看问题——支持向量机(SVM)
提取PDF文本信息:入门
毕业季|b站《入海》评论爬取
Stata云端课程来啦
利用广义线性模型实现的分类——Logistic回归
Requests get爬虫之设置headers
数据分析薪资待遇如何?——跟我来,带你看
Vardistinct一键去重计数
从statsmodels到线性回归
Pandas的GroupBy机制
首行数据如何快速转变量名?
文件太多乱乱的?合并一下吧!
线性回归的正则化 ——岭回归与LASSO回归
Pandas中节约空间的小tip—categorical类型
Ftools命令组之flevelsof命令介绍
疫情下的家庭关系|《请回答1988》影评爬取
教你把Python当美图秀秀用(二)

关于我们



微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存