为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 第五章 stata语言初步

第五章 stata语言初步

2022-08-09 20页 doc 78KB 11阅读

用户头像

is_477730

暂无简介

举报
第五章 stata语言初步第五章stata语言初步本章导读:Stata系统最为突出的特点是短小精悍、功能强大,包含了全部的统计分析、数据管理和绘图等功能,尤其是他的统计分析功能极为全面,Stata的命令语句极为简洁明快,而且在统计分析命令的设置上又非常有条理,它将相同类型的统计模型均归在同一个命令族下,而不同命令族又可以使用相同功能的选项,这使得用户学习时极易上手。而且,Stata语句在简洁的同时又拥有着极高的灵活性,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。本章简单介绍stata语言的基本成分与规则,stata语言如何用来管...
第五章 stata语言初步
第五章stata语言初步本章导读:Stata系统最为突出的特点是短小精悍、功能强大,包含了全部的统计分析、数据管理和绘图等功能,尤其是他的统计分析功能极为全面,Stata的命令语句极为简洁明快,而且在统计分析命令的设置上又非常有条理,它将相同类型的统计模型均归在同一个命令族下,而不同命令族又可以使用相同功能的选项,这使得用户学习时极易上手。而且,Stata语句在简洁的同时又拥有着极高的灵活性,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。本章简单介绍stata语言的基本成分与规则,stata语言如何用来管理数据库,stata语言作为作为一个统计计算语言的用法,以及stata过程使用的初步知识。5.1Stata语句基本成分与规则构成stata语言的基本单位是stata语句。每个stata语句包括stata命令、变量,特殊字符、运算符。5.1.1Stata变量名除以下字符不能用作变量名外,任何字母、字母与数字(单独的数字也不允许)组合均可用做变量名:_all_bbyte_coef_consdoublefloatifinintlong_n_N_pi_pred_rc_se_skipusingwith基本要求如下:_第一个字元可以是英文字母或下划线,但不能是数字;_最多只能包括32个英文字母、数字或下划线;_由于STATA保留了很多以“_“开头的内部变量,所以最好不要用为第一个字元来定义变量。5.1.2Stata变量类型由于stata语言是一种统计计算语言,因此在程序中需要频繁应用数学表达式。表达式就是把常量、变量、函数调用用运算符、括号连接在一起得到的计算结果。在表达式中最重要的就是常量和变量。常量代表固定不变的数,变量则代表具有一定意义、变化的数值。Stata变量主要有是数值型,字符型和日期型三类。(1)数值型变量用0、1、2…9及、–(正负号)与小数点“(.)”来表示。在输入数据时,逗号不能被识别,如1,024应该直接写成1024.其他示例5,-5,5.2,5.2e3,5.2e-2后面两个数据为科学计数法的数据,分别表示5200和0.052,其中的e相当于10,因此5.2e3的意思是:5.2*103=5200数值型变量按其精度区分有五种类型,分别是:存贮类型最小最大0-领域字节byte-127100/-11int-32,76732,740/-12long-2,147,483,6472,147,483,620/-14float-1.70141173319*10381.70141173319*1036/-10-364double-8.9884656743*103078.9884656743*10307/-10-3238当运算精度要求很高的时候,需要将变量设置成浮点型或双精度型。另注意1和1.0000的精度是不同的,前者在(0.5,1.5)区间内近似,而后者在(0.99995,1.00005)区间内近似。若多次运算反复取四舍五入,精度较低时将使计算误差迅速变大,然而,精度高时占用的内存资源较多。下面的命令有助于理解变量存贮类型变换。(2)字符型变量字符型变量由字母或一些特殊的符号组成(如地名〈籍贯〉变量,迁出地,住址,职业等等)。字符变量通常是一些身份信息,如姓名,地名。另外,定类变量也可以用字符变量来表示,如性别分为“男”和“女”。字符串变量也可以由数字来组成,但数字在这里仅代表一些符号而不再是数字。字符串变量通常以引号“”注标,而且引号一般不被视同为字符的一部分,注意这里的引号必须是英文输入状态下的引号。字符串最多可以达244个字符。一般用str#来表示字符的多少,如str20表示将有20个字符。一般三个中文字的姓名需要6个字符。例“String”“string””string””string”””//特殊字符串,表示空字符,缺失值。””//注意与空字符串的区别,含有一个空格”125.27”//”125.27”由于有双引号,将被视同为字符而非数值。“$2,343.68”“Iloveyou”“旺材是条狗”注意前四个字符串均不相同,大小写是不一样的,有无空格及空格的位置不同,都表示不同的字符串。对于”125.27”这样的数值型的字符串,可以用real()函数或者destring命令转化成数值型变量。(3)日期型变量在STATA中,1960年1月1日被认为是第0天,因此1959年12月31日为第-1天,2001年1月25日为15000天。例:19991210Jan/10/200110Jan2001...-15,000---01Dec1918-31---01Dec1959...-1---31Dec19590---01Jan19601----02Jan1960...31----01Feb1960...15,000----25Jan2001(4)缺失值因为stata是一种数据处理语言,而实际中经常会遇到缺失值,比如没有观测到数值,或者观测值已经丢失等等。Stata总用一个单独的小数点”.”表示缺失值。5.1.3 Stata的运算Stata共有四种运算,分别是代数运算、字符运算、关系运算和逻辑运算。运算符一览表代数运算逻辑运算比较关系加!不>大于-减~不<小于*乘|或>=不小于/除&和<=不大于^指数==等于sqrt()开方!=不等于~=不等于~=不等于字符相加运算的优先序:!(或~),^,-(负号),/,*,-(减),,!=(或~=),>,<,<=,>=,==,&,|当不确定优先序的时候,最好用括号将优先序直接表达出来。●代数运算包括加()、减(-)、乘(*)、除(/),幂(^)和负数(-),当遇到缺失值或者运算不可行时(比如除数为零)均会得到缺失值。例:求正式的值,若x=4,y=2,显然经过心算,应该为:-1.di–(42^(4-2))/(2*4)  //di是display命令的略写,表示显示结果.di4-2   //输出2.di3*5   //输出15.di8/2    //8除以2,输出4.di2^3   //2的立方,输出8.di–(23^(2-3))/sqrt(2*3) //括号运算优先,想一想,结果应为多少?实际上,更多的情形是两个或多个变量的直接运算。比如,将进口车的价格都增加100元(可能是关税),而国产车不变。.sysuseauto,clear.gennprice=priceforeign*100.listnpricepriceforeign●字符运算加()号同样可用于字符运算,当加号出现在两个字符之间时,两个字符将被连成一个字符。比如把”我爱”“STATA”合并在一起,命令为:.scalara=”我爱”“STATA” //要特别注意,引号必须是半角和英文模式.scalarlista //scalar命令将两个字符运算后的结果赋于a,然后显示a.scalara=2“3” //注意到:字符与数值不能直接相加,显示类型不匹配typemismatchr(109);●关系运算关系运算包括大于、小于、等于;不等于、不小于、不大于等多种比较关系。特别要注意到STATA中的等于符号为“==”,是两个等号连写在一起,不同于赋值时用的单个等号“=”。.di3<5  //输出结果为1,意味着3小于5为真.di3>5  //输出的结果为0,意味着3大于5为假。当数据中含有缺失值的时候需要特别小心,因为系统缺失值大于任何一个数据,利用这一点,我们可以使用条件语句排除缺失值。任务:将年龄分组为65岁以下和65岁及以上两组,缺失值显然不能包括在任何一组中。age38.65421880.clear.edit将上述数据复制到STATA中,然后退出数据编辑器。.genagegrp1=(age>=65)生成的数据中,将缺失值视为65岁以上分在了高龄组,这是错误的.genagegrp2=(age>=65)ifage<.生成的数据中,将缺失值排除在外,正确!这一命令常被用于生成虚拟变量。.genagegrp3=(age==65)ifage<. //仅判断是否恰好为65岁.list //比较agegrp1、agegrp2和agegrp3的差异,体会ifage<.的作用。ageAgegrp1Agegrp2Agegrp338000.1..65111420001800080110●逻辑运算逻辑运算包括非(!),和(&)、或(|)三种,主要用于条件语句中。例:列示出价格大于10000元的任何车,或者小于4000元的国产车。.sysuseauto,clear.listpriceforeignifprice>10000|price<4000&forei==0在STATA中,和(&)优先于或(|),因此上述命令与下面的命令等价:.listpriceforeignifprice>10000|(price<4000&forei==0)试一试下面的命令,这里列示的是国产车中价格高于10000元或者低于4000元的车。.listpriceforeignif(price>10000|price<4000)&forei==05.2stata用作一般高级语言Stata是一种专用的数据处理、统计计算语言,但是它也包括一般的高级语言变成能力并扩充了许多数学、统计等方面的函数。本节介绍stata语言用来进行一般编程计算的功能,即介绍一些常用的数据处理的命令。stata语句命令有以下的格式:[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]注:[]表示可有可无的项,显然只有command是必不可少的,下面结合例子分项来讲解命令的各个组成部分。小技巧:变量的省略规则只要不引起歧义,命令可以尽量只写前几个字母。如summarize只需要前两个字母su;而list只需要写第一个字母l。在帮助文件中,命令下面有小划线,该线表明了命令可以省略到什么程度。如list[varlist][if][in][,options],summarize[varlist][if][in][weight][,options]5.2.1改变变量名renameold_varnamenew_varnameold_varname是原变量名,new_varname是新变量名。例1将表示年份的变量yr更名为year,则可以编写程序:renameyryear5.2.2生成新变量generatenewvar=exp[ifexp][inrange]newvar是生成的新变量,exp是由现有变量生成新变量的算术或逻辑表达式,[ifexp]和[inrange]指定对哪些观测计算新变量值。例2,generateage2=age*age(新变量age2等于age的平方),例3,generatereturn=0.2>ret>-1&ret~=./*若return大于-1小于0.2且不缺失,则新变量return为1,否则为0generatebh=_n             /* 将数据库的内部编号赋给变量bh。generategroup=int((_n-1)/5)1  /* 按当前数据库的顺序,依次产生5个1,5个2,5个3……。直到数据库结束。generateblock=mod(_n,6)   /* 按当前数据库的顺序,依次产生1,2,3,4,5,0。generatey=log(x)ifx>0       /* 产生新变量y,其值为所有x>0的对数值log(x),当x<=0时,用缺失值代替。5.2.3对现有变量重新赋值replaceoldvar=exp[ifexp][inrange]oldvar为现有的变量。对满足[ifexp]和[inrange]的样本,oldvar将根据表达式exp重新赋值。例4,replaceincome=.ifincome<=0/* 将所有小于0的z值用缺失值代替。例5 replaceprice=18in1000  /*令第1000个观测中price为18replace income=6ifincome==0   /* 将income=0的数全部替换为6。    forvarx*:replaceX=0ifX==. /* 将所有第一个字母为x的变量替换为0,如果该变量的值为缺失值5.2.4删除变量或观测dropvarlist(去掉varlist指定的变量)drop_all(去掉全部变量)dropifexp(去掉符合表达式exp的观测)dropinrange(去掉处在range指定范围内的观测)例6dropif1998<=year<=2006/*删掉1998到2006年的数据dropx1x2     /*删除变量x1和x2dropx1-x5     /*删除数据库中介于x1和x5间的所有变量(包括x1和x5)dropifx<0    /*删去x1<0的所有记录dropin10/12   /*删去第10~12个记录dropifx==.    /*删去x为缺失值的所有记录dropifx==.|y==. /*删去x或y之一为缺失值的所有记录dropifx==.&y==. /*删去x和y同时为缺失值的所有记录drop_all     /*删掉数据库中所有变量和数据5.2.5保留变量或观测keepvarlist(保留varlist指定的变量,其余变量去掉)keepifexp(保留符合表达式exp的观测,其余观测去掉)keepinrange(保留处在range指定范围内的观测)我们使用drop,keep命令的目的无非是修改样本或删除样本,最终有两个目的,一是对修改后的样本作统计或回归分析,二是保存一份新的数据。所以,如果由于drop或keep命令误删了一些数据,问题解决方法如下:如果你是使用命令窗口的话,就可以在每次执行一个尝试性的动作之前使用preserve命令,如果这个操作有误,再采用restore命令(相当于word里的ctrlZ)返回使用preserve之前的状态即可.如use acc2006,clear.....preserve /*状态1*/keepweightrestore  /*回复到状态1*/例7,如果你想尝试看将年份设定为1998到2002年的数据集的回归结果,但是不知道是否可行,但是你又不想因为尝试而改变现有的数据集格式,则你可以进行如下步骤:Useacc2006,clear.....Preserve/*此处你想尝试一下年份为1998到2002年的回归结果*/Regcarcashdum sgdumif 1998
/
本文档为【第五章 stata语言初步】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索