当前位置:   article > 正文

stata u3笔记_stata值标签和标签的区别

stata值标签和标签的区别

3.1什么是do文件

主要参考百度网盘《120分钟搞定论文数据......》

 

在do-file中操作:

 

在command window输入(→[enter]):

tab employst gender,col

gen isol=0

replace isol=1 if datnum<=2 & numfrien<=2

gen isol1=0

replace isol1=1 if datnum<=1 & numfrien<=1

/*更改条件if语句:将第二、三行复制黏贴,由于已经存在isol,因此需引入新的变量isol1*/

*注释

/*

(一)注释(二)不想运行某段的好方法

*/

*enter键表“换行”,不表“运行”

注释和需要忽略的命令:绿色

3.2数据管理

记得用do

使用标签

①该步骤一共要做A(处理变量标签)和B1、B2(处理值标签)

变量标签:附加到变量上,通常用于提供关于变量本身的更多细节。

值标签:是和变量的某个值相对应的。

值标签:Stata中,值标签A1(male)是指与变量B(gender)每个值C(如0、1)相关联的完整的标签集A(male、female)。

Eg. 变量gender取值为0代表受访者为male,在这种情况下“male”是与0值相对应的值标签。

④命令语序:先值,标签在后面。

⑤标签要用引号“”括起来(特别是有空格的时候)。

创建变量标签:

创建并将标签附加到变量的命令应该为:label variable(lab var)

在command window输入(→[enter]):

lab var isol isolated

tab isol

 

变量标签:

①如果变量标签包含空格,则在输入命令时必须将其括在引号中。

②可以在不删除旧变量标签的情况下附加新的变量标签,这时只需要调用lab var自动覆盖已存在的标签即可。

③变量标签不能用来说明变量取值的含义,值标签则可以用来说明变量的取值。

值标签B1、B2:

①B1先创建值标签,B2再将该值标签附加到哪个变量上。

②值标签:指的是给定的一组值得标签集合。如0代表male,1代表female的组合将形成变量性别的值标签。

③B1:创建值标签,即定义值标签。即告诉Stata改标签应该附加在所有可能取值集合的哪个数字上。

④B1:label define(lab def)+值+标签

⑤B2:label value(lab val)+值+标签

⑥注意英文双引号的运用,最好直接复制"(值标签正确双引号)

⑦在值标签isollab中,你已经定义了0是与标签“not isolated”相关联的。不管将标签isollab附加到哪个变量上,都将使用“not isolated”标签标识取值为0的情况。

但是你也可以创建一个新的值标签,其中0的值具有不同的标签。如,可以创建一个值标签yesno,定义为0表示“no”,1表示“yes”,然后可以在任何0表示“no”,1表示“yes”的变量中使用。

⑧可以频繁地改变值标签却不会改变变量的取值。

⑨一旦为这些数据集定义了一个通用的值标签,我们就可以把它附加到很多同样类型的变量上。

创建值标签B1:

①命名值标签集为isollab。

②代码0代表不孤独的,代码1代表孤独的。

在command window输入(→[enter]):

lab def isollab 0 "Not Isolated" 1 "Isolated"

将该值标签附加到哪个变量上B2:

在command window输入(→[enter]):

lab val isol isollab

tab isol

 

添加标签:

此后,可以使用同样的值标签标记之前定义的变量isol1:

在command window输入(→[enter]):

lab val isol1 isollab

tab isol1

 

改变值标签(值标签完整):

Eg. 当要把“Isolated”改为“Estranged”这个标签,可以创建一个新的变量标签(lab def estrange 0 “Not Estranged” 1 “Estranged”),然后把它附加到isol变量上(lab val isol estrange)。如果你生成这个变量的分布,就会发现仍然是27个样本属于同一组,取值为1,但是现在它们的标签是“Estranged”而不是“Isolated”。

在command window输入(→[enter]):

lab def estrange 0 "Not Estranged" 1 "Estranged"

lab val isol estrange

tab isol

 

需要知道变量的取值而不是标签:

在command window输入(→[enter]):

tab employst if isol==#

(“#”代表一个思考过程,直接复制粘贴时,系统会提示invalid syntax,没有影响)

识别正确数值:

①最简单方法是生成isol变量的两个分布:一是显示值标签②,二是显示与每个标签相关联的数值④

在command window输入(→[enter]):

tab isol

②调用nolable(nol)选项:产生一个值标签分布

在command window输入(→[enter]):

tab isol,nol

③可以看到分布是完全相同的,只是用数值替换了标签

④现在可以清楚地看到,“非孤独的”表示为0。

要显示“非孤独的”受访者就业状态的分布表:

在command window输入(→[enter]):

tab employst if isol==0

缺失数据

在开始考察这些边梁之间的关系前,看一下受访者朋友数量的分布。

在command window输入(→[enter]):

tab numfrien

 

两类缺失数据:refused和legitimate skip。

处理缺失数据的第一步通常是简单地将其从分析中删除。

①将numfrien变量中的12个样本用缺失代码来替换。

②对于识别缺失值,recode是最有效的。

③每个缺失代码都代表了一个由于某种原因缺失的值,允许用户在需要时识别甚至恢复原始值。

④使用带有nol选项的tab命令是非常有用的。

在command window输入(→[enter]):

tab numfrien,nol

 

使用缺失值代码的好处:

①如果运行统计分析的命令,比如求均值,对于变量numfrien,Stata会将3个样本视为有888个朋友,9个样本视为有999个朋友,这显然会产生错误的结果。

②Stata有27个不同的缺失值代码,可以用来定义应特定原因而缺失的值,最基本的代码是“.”,有时候称其为系统缺失值。系统缺失值意味着样本只是缺失,没有已知或确定的原因。

③其它26个缺失值代码很相似,都是“.”后边加一个字符,如.d,.s,.r等,这些字母通常都是缺失原因的缩写。

重新设置缺失值代码:

①如果数据缺失的原因是知道的,最好使用包含更多信息的特定代码。

②可以设置拒绝回答这个问题的样本为“.r”,而合理调过这个问题的样本记为“.s”。

③想要重新设置代码,需要在command window输入(→[enter]):

recode numfrien (888=.s)(999=.r)

tab numfrien

 

④默认地,在分析中Stata不包含已设定为缺失值的样本,所以在变量numfrien的分布中没有包含已经编码的12个缺失值。

⑤分布的百分比发生了变化,由于排除了12个缺失值样本,用于计算这些百分比的样本总数从2532个变为2520个。

⑥为了使Stata在变量的分布中包含缺失值样本(分布的百分比做相应的调整),可以调用missing(mis)选项。

在command window输入(→[enter]):

tab numfrien,mis

 

如果使用if语句,缺失值样本仍会被评估。此时,Stata将所有缺失值的取值视为比该变量的最大值还大。因此在包含大于号“>”的表达式中引用具有缺失值的变量时,记住这一点很重要。

①构造一个取两个值的变量,分别表示有很多的年轻人和有较少朋友的年轻人,为了进行分类,将由4个或更多朋友的人视为有很多朋友,使用带有gen(newvar)选项的replace命令来构造这个变量。(用replace不用recode)

在command window输入(→[enter]):

gen hifrien=.

②在新变量中每个样本首先被设置为空值,这是一种创建新变量的有效方法,可防止在新生成的变量中包含不需要的情况(例如缺失值)。

在command window输入(→[enter]):

replace hifrien=0 if numfrien <=3

tab hifrien

③将有3个或更少朋友的样本取值为0,而有4个或更多朋友的样本应该取值为1。

不能有此步骤:

此处仅作说明,具体代码请见下一步④:

在command window输入(→[enter]):

replace hifrien = 1 if numfrien>=4

tab hifrien

 

④修正缺失值错误:

在command window输入(→[enter]):

replace hifrien = 1 if (numfrien>=4 & numfrien<=5)

tab hifrien

 

【注意】

①如果应该设定为缺失值的样本没有使用缺失值代码进行编码,那么它们将被包含在所有的分析中;如果使用缺失值编码,那么在分析中将被自动排除

②手工输入数据,在输入数据时要把缺失值标记出来,而不是在以后的分析进行标注。

 

③处理涉及多个变量且存在数据缺失情况的读者,应该参考第八章“高级便捷的命令”一节的“Mark和Markout”部分。

使用字符型变量

①命令gen在默认的情况下会产生数值型变量。如果要产生字符型变量需要特别指明。

②不管什么时候在字符型变量中引用一个值时,都必须用引号括起来。

③Stata不区分大小写,但是在设置字符型变量时,不管使用大写还是小写,必须前后一致。

Eg.在新生成的字符型变量中纪委“Christian”,其他的样本设置为缺失值:

产生一个字符型变量christoth(christ other)→将新的字符型变量赋值为“Christian”→当变量religoth的取值属于所列举的任意一种时,变量christoth的值等于“Christian”。

在command window输入(→[enter]):

gen str christoth="Christian" if religoth == "CHRISTIAN" | religoth == "JUST CHRISTIAN" | religoth == "NONDENOMINATIONAL CHRISTIAN"

tab christoth

 

字符型变量的缺失值代码:

①对于字符型变量stata将把这些代码(.d或 .s等)解读为正常的有效取值,唯一有效的缺失值代码是空格,即“ ”

②如上所述,有27个缺失的代码可用于识别数值型变量数据缺失的情况。

③replace是最有效的命令,因为recode对于字符型变量是无效的。

④就像使用gen命令(↑)一样,replace对于数值型变量和字符型变量是类似的,其主要差别就是对字符型变量赋值的时候必须使用引号

⑤引号包围了字符型变量的值而不是变量本身

⑥先前的缺失值已经被设定为恰当的字符型取值。系统默认,tab命令按照字母顺序展示字符型变量的取值,但是可以调用sort选项使得按照频数顺序显示取值。

改变缺失值:

①将变量christoth当前的缺失值替换为"Specific Other Denomination.",而不是替换religoth中的缺失值。

②如果不包含if语句中的第二部分,与变量religoth中的缺失值相对应的样本也将被赋值为"Specific Other Denomination.",这是不合适的,因为这些样本没有报告他们有其他的宗教,他们对应的值是缺失的。

在command window输入(→[enter]):

replace christoth="Specific Other Denomination"  if christoth ==" "  & religoth !=" "(错误)

tab christoth

【解析】在这段代码中,首先判断religoth的值是否为"CHRISTIAN"、"JUST CHRISTIAN"或"NONDENOMINATIONAL CHRISTIAN",如果是,就把christoth赋值为"Christian"。然后再判断christoth是否为空,如果是,且religoth不为空,就把christoth赋值为"Specific Other Denomination"。最后使用tab命令对christoth进行分类汇总。

在你的代码中,gen命令是正确的,但replace命令有一些问题。首先,如果你想判断一个字符串是否为空,应该使用==""而不是= " "。其次,如果christoth的值已经被赋值为"Christian",那么它就不会再为空了,所以replace命令的条件也不会成立。

因此,如果你想要得到你期望的结果,应该使用下面的代码:

gen str christoth="Christian" if religoth == "CHRISTIAN" | religoth == "JUST CHRISTIAN" | religoth == "NONDENOMINATIONAL CHRISTIAN"
replace christoth="Specific Other Denomination" if christoth == "" & religoth !=""
tab christoth

【正解】

replace christoth="Specific Other Denomination" if christoth == "" & religoth !=""

tab christoth

 

字符型变量的原因:

①优点在于可以输入受访者对问题的实际应答,因此如果变量是基于一个开放式的问题,那么字符型变量是一个好的选择。

②只有在绝对必要的情况下才使用字符型变量,即使变量的值是文本形式的(例如male),这些值通常可以用来数值来代替。

Eg. 在前面的例子中,将christoth定义为数值型变量来区分不同的类别可能更为有效。

③因为尽管很多命令对于数值型变量和字符型变量的操作类似,但是大多数统计分析都要求变量是数值型的。

将字符型变量转换为数值型变量:

①encode,gen(newvar)

②字符型变量取值作为对应数值的值标签。

③,gen(newvar)作为选项告诉Stata新的数值型变量的名字。其中输入的新变量名不能与原来的变量同名。

③命令encode根据字符型变量取值的字母顺序分配数值(从1开始)。

Eg.将字符型变量christoth转换为数值型变量:

新的数值型变量名多了一个n,表示新变量是原来字符型变量所对应的数值型变量。

在command window输入(→[enter]):

encode christoth,gen(nchristoth)

在command window输入(→[enter]):

tab nchristoth,nol

 

保存结果

①log文件保存了它启动后,结果窗口中出现所有内容的运行日志。

②默认地,Stata不运行log文件。相反地,你必须自行启动log文件,然后自行关闭。

③点击第四个图标:log按钮

④log文件可以保存为Log(smcl)的形式,也可以保存为Log(.log)的形式。如果你熟悉 .smcl格式,它可能是有优势的,如果不熟悉,Log(.log)可能更高效,因为它很容易被大多数文字处理程序打开和阅读。

⑤Log(.log)格式存储运行日志,在“Save as Type.”下拉菜单中选择“Log(.log)”,如果已经命名了log文件,直接点击Save,在结果窗口中就会出现一个记事本,表明log文件已经开始工作。在此之后和关闭日志之前出现在结果窗口中的所有内容都由log文件保存。但是在开始log文件运行之前的所有结果不会保存在log文件中。

⑥关闭log文件:再次点击log按钮③。会出现有三个选项的对话框:

 

⑦log文件的一个很好的特性是他们可以被重新打开和追加,这样多个Stata会话可以保持连续的记录。要再次打开一个log文件,点击log按钮,找到已有的log文件的路径即可。

⑧有时可能需要在“Save as Type.”下拉菜单中更改文件类型以便准确找到想要的文件,如选择“Log(.log)”。

⑨一旦找到了文件的位置,选择文件双击或点击Save按钮,就会出现如下对话框:

 

因此,log+do:

一旦确定了所需的分析,就可以打开log文件,并使用do文件有选择低运行这些命令。

u3notes@用Stata进行量化分析

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/534644
推荐阅读
  

闽ICP备14008679号