tabulate库(tabulate库安装)
stata怎么让皮尔逊相关系数展示星号
stata怎么让皮尔逊相关系数展示星号?STATA 常用命令集
一、调整变量格式:
format x1 %10.3f ——将x1的列宽固定为10,小数点后取三位
format x1 %10.3g ——将x1的列宽固定为10,有效数字取三位
format x1 %10.3e ——将x1的列宽固定为10,采用科学计数法
format x1 %10.3fc ——将x1的列宽固定为10,小数点后取三位,加入千分位分隔符
format x1 %10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符
format x1 %-10.3gc ——将x1的列宽固定为10,有效数字取三位,加入千分位分隔符,加入“-”表示左对齐。
二、合并数据:
use "C:\Documents and Settings\xks\桌面\2006.dta", clear
merge using "C:\Documents and Settings\xks\桌面\1999.dta"
——将1999和2006的数据按照样本(observation)排列的自然顺序合并起来
use "C:\Documents and Settings\xks\桌面\2006.dta", clear
merge id using "C:\Documents and Settings\xks\桌面\1999.dta" ,unique sort
——将1999和2006的数据按照唯一的(unique)变量id来合并,在合并时对id进行排序(sort)
建议采用第一种方法。
三、对样本进行随机筛选:
sample 50
在观测案例中随机选取50%的样本,其余删除
sample 50,count
在观测案例中随机选取50个样本,其余删除
四、查看与编辑数据:
browse x1 x2 if x33 (按所列变量与条件打开数据查看器)
edit x1 x2 if x33 (按所列变量与条件打开数据编辑器)
五、数据合并(merge)与扩展(append)
merge表示样本量不变,但增加了一些新变量;append表示样本总量增加了,但变量数目不变。
one-to-one merge:
数据源自stata tutorial中的exampw1和exampw2
第一步:将exampw1按v001~v003这三个编码排序,并建立临时数据库tempw1
clear
use "t:\statatut\exampw1.dta"
su ——summarize的简写
sort v001 v002 v003
save tempw1
第二步:对exampw2做同样的处理
clear
use "t:\statatut\exampw2.dta"
su
sort v001 v002 v003
save tempw2
第三步:使用tempw1数据库,将其与tempw2合并:
clear
use tempw1
merge v001 v002 v003 using tempw2
第四步:查看合并后的数据状况:
ta _merge ——tabulate _merge的简写
su
第五步:清理临时数据库,并删除_merge,以免日后合并新变量时出错
erase tempw1.dta
erase tempw2.dta
drop _merge
数据扩展append:
数据源自stata tutorial中的fac19和newfac
clear
use "t:\statatut\fac19.dta"
ta region
append using "t:\statatut\newfac"
ta region
合并后样本量增加,但变量数不变
六、做图
茎叶图:
stem x1,line(2) (做x1的茎叶图,每一个十分位的树茎都被拆分成两段来显示,前半段为0~4,后半段为5~9)
stem x1,width(2) (做x1的茎叶图,每一个十分位的树茎都被拆分成五段来显示,每个小树茎的组距为2)
stem x1,round(100) (将x1除以100后再做x1的茎叶图)
直方图
采用auto数据库
histogram mpg, discrete frequency normal xlabel(1(1)5)
(discrete表示变量不连续,frequency表示显示频数,normal加入正太分布曲线,xlabel设定x轴,1和5为极端值,(1)为单位)
histogram price, fraction norm
(fraction表示y轴显示小数,除了frequency和fraction这两个选择之外,该命令可替换为“percent”百分比,和“density”密度;未加上discrete就表示将price当作连续变量来绘图)
histogram price, percent by(foreign)
(按照变量“foreign”的分类,将不同类样本的“price”绘制出来,两个图分左右排布)
histogram mpg, discrete by(foreign, col(1))
(按照变量“foreign”的分类,将不同类样本的“mpg”绘制出来,两个图分上下排布)

写入文件不可以采用readtable
1.文件的读取
Pandas的文件输入有赖于xlrd、xlwt、openpyxl这三个第三方的库,如果读取失败可尝试先安装这几个库;
在数据分析的过程中对于数据的读取和写入是必不可少的,这里我们主要学习csv、 txt、 excel的读取和写入。
1.1文件的读取
csv、txt、excel文件分别可以使用read_csv()、read_table()、read_exece来读取,其中传入的参数都是文件的相对或者绝对路径。
文章图片1
其中的一些公共参数,header设置为None时表示第一行不作为列名,index_col表示把某一列或某几列作为索引;usecols表示读取列的集合,默认是所有的列;parse_dates表示需要转化为时间的列,nrows表示读取的数据行数。
header:
文章图片2
index_col:
文章图片3
usecol:
文章图片4
parse_dates:
文章图片5
nrows:
文章图片6
在读取txt文件的时候可能会遇到分隔符不是空格的情况,read_table()中是有一个分割参数sep,可以实现对分隔符号的自定义,sep中使用的是正则表达式。
2.数据的写入
通常使用to_csv()、to_excel()写入数据,如果想要快速的转化为markdown和latex可以使用to_markdown()、和to_latex(),但需要额外安装tabulate包。
一般情况下,pandas会在数据写入时包含当前的数据索引,但我们在输出的时候其实并不需要整数索引,此时可以将index设置为False,可以在输出时去掉索引。
pandas中没有定义to_table()函数,但是to_csv()可以将数据保存为txt文件,并且可以自定义分隔符。
高分求助:常用生物统计学软件介绍及相互区别?需要详细一点
SAS
一、SAS系统简介
SAS是一个庞大的系统,它目前的版本可以在多种操作系统中运行。当前在国内被广泛使用的最新版本是8.2版,功能很强大,我深有体会。
据说9.0版已在国外面世,已经有一些有关它的抢先报道在网络上广为流传,说它如何如何美妙,令人不禁充满期待。
SAS8.2的完整版本包含以下数十个模块。
BASE,GRAPH,ETS,FSP,AF,OR,IML,SHARE,QC,STAT,INSIGHT,ANALYST,ASSIST, CONNECT,CPE,LAB,EIS,WAREHOUSE,PC File Formats,GIS,SPECTRAVIEW, SHARE*NET, R/3,OnlineTutor: SAS Programming,MDDB Server,IT Service Vision Client, IntrNet Compute Services,Enterprise Reporter,MDDB Server common products,Enterprise Miner,AppDev Studio,Integration Technologies等。
所谓模块,我的理解是将功能相近的程序、代码等集中起来组成相对独立的部分,就称之为模块,类似于办公软件系统office中包含的word、excel、access等。各模块具有相对独立的功能范围,我们常用的模块有base,graph,stat,insight,assist,analyst模块等,分别执行基本数据处理、绘图、统计分析、数据探索、可视化数据处理等功能。其余模块我用得很少,知道得也很少,所以也就不多说了。
SAS系统的长处,体现于它的编程操作功能的无比强大。SAS一直以来也是注重于其编程语言的发展,对于可视化方式的菜单操作投入较少,其较早的版本仅有很少的菜单操作功能,使用起来也是非常的别扭。这很可能就是在windows人机交互式操作系统占统治地位的今天,SAS较少被人问津的原因之一。
到了最新的几个版本,SAS也对可视化操作方法投入了一定的关注。从8.0版以后,出现了几个功能强大的可视化操作的模块,如insight模块和analyst模块等,其菜单操作的方便程度以及人机界面的亲和性绝不亚于SPSS等著名的可视化统计分析软件。
然而要想完全发挥SAS系统强大的功能,充分利用其提供的丰富资源,掌握SAS的编程操作是必要的,也只有这样才能体现出SAS在各个方面的杰出才能。
二、SAS系统基本操作及基本概念
哪位要是连软件的安装和打开都要我啰嗦的话,我劝您还是买一套洪恩的《开天辟地》好好热热身先。
SAS 8.2的界面中间是三个并排(或层叠)的窗口,那个叫做Program Editor的窗口(窗口标签为Editor)就是用来输入SAS语句的,编程操作的所有内容都是在该窗口内完成的,各位还是要跟它先多熟悉一下。
(一)数据集(dataset)和库
统计学的操作都是针对数据的,SAS中容纳数据的文件称为数据集,数据集又包含在不同的库(暂且理解为数据库吧)中。SAS中的库分为永久性和临时性两种。顾名思义,存在于永久库中的数据集是永久存在的(只要你不去删除它),临时库中的数据集则在你退出SAS后自动被删除。至于SAS中库的概念,最简单的理解就是一个目录,一个存放数据集的目录。
数据集的结构完全等同于我们一般所理解的数据表,由字段和记录所构成,在统计学中我们习惯将字段称为变量,在后面的内容中字段和变量我们就理解为同一种东西吧!建立数据集的方法很多,编程操作中有专门的数据读入方法来建立数据集,但需要将数据现场录入,费时费力。如果数据量大,我劝各位还是先以其它方法将数据集建好,否则程序语句的绝大部分会浪费在数据的输入上。
What are 其它方法?各位是不是去参考一下别的书籍或资料。要不您是不是可以等一等,我准备若干年后出一本SAS操作大全。
(二)SAS程序概述
和其它计算机语言一样,SAS语言(称为SCL语言,SAS Component Language)也有其专有的词汇(即关键字)和语法。关键字、名字、特殊字符和运算符等按照语法规则排列组成SAS语句,而执行完整功能的若干个SAS语句就构成了SAS程序。
SAS程序包括多个步骤和一些控制语句,一般情况下均包括数据步和过程步,一个或多个、数据步或过程步,它们之间任何形式的组合均可成为一段SAS程序,只要能完成一个完整的功能。通常情况下SAS程序还包括一些全程语句,用以控制贯穿整个SAS程序的某些选项、变量或程序运行的环境。
SAS程序的语句一般以关键字开始,以一个分号结束,一条语句可占多行(SAS每看到一个分号,就将其以前、上一个分号以后的所有东东当作一条语句来处理,而不管他们处在多少个不同的行中)。SAS语句对字母的大小写不敏感,你可以根据个人习惯决定字母的大写或小写。
1. 库名(库标记)的定义
为了保存宝贵的数据和方便操作起见,我习惯于指定自己的库名及其路径(目录),因为SAS系统中已有的永久库(SASUSER)无论库名还是其对应的路径都太过繁琐,使用太不方便。程序中用到的数据,都可以永久的保存于该路径下,保证以后可以重复使用。指定库名的语句为全程语句,其格式如下:
Libname 库名 ‘路径’;
例如我们指定的库名为“a”,路径为:“e:\data\”,SAS语句如下:
libname a ‘e:\data\’;
2. 数据步
SAS的数据步以data语句开始,用于创建和处理数据集。Data语句以关键字“data”开始,格式如下:
data 数据集名;
例如:data a.case; 将创建在库a中名为case的SAS数据集,语句执行后你可在与库a对应的目录下看到刚刚建立的数据集文件case。
Data语句所指定的数据集,一般都是以“库名.数据集名”的格式出现的,也可以单独的“数据集名”出现,此时的数据集系统默认为是临时库中的数据集,退出系统后将会被删除。
data语句有两个重要的功能,标志数据步的开始和命名将要创建的SAS数据集。
除data语句外,数据步一般情况下还包括infile语句、input语句以及datalines语句等。在不同的数据输入方式下对于它们的使用方式也不一样。
SAS程序有两种常见的数据输入方式,即从外部文件读入和直接输入两种方式。
(1)外部文件读入方式
数据若已经包含在某个外部文件(文本文件或数据文件)中,可用此方法输入数据到数据集文件中。
在以上介绍的data语句后,写入以下语句:
infile ‘外部文件的所在位置及名称’ 选项;
input 变量名1变量名2 …变量名n;
infile语句用于从外部文件读入数据,必须出现在input语句之前。它的功能是指定一个包含原始数据的外部文件。
input语句用于向系统表明如何读入每一条数据记录。它的主要功能有:读入由语句指定的数据列,为相应的数据域定义变量名,确定变量的读入模式。
例如:
libname a ‘e:\data\’;
data a.student;
infile ‘e:\data\student.txt’;
input name height weight;
以上程序将目录“e:\data\”下的文本文件“student.txt”中的数据输入数据集student中,该数据集存放于目录“e:\data\”下。
(2)直接输入方式
数据量较少或操作者意志力坚强的情况下采用此种输入方式,在data语句之后写入如下语句:
input变量名1变量名2 …变量名n;
datalines;(在以前的版本下为cards,新版本下两者可通用)
… … … …(数据行)
… … … …(数据行)
… … … …(数据行)
;
datalines语句用于直接输入数据,标志着数据块的开始。
注意:这里的数据行中数据之间以空格分隔,当然也可以其它东东如逗号等来分隔,这里大家先以空格来分隔好了。因为不同的分隔方式下input语句要采取相应的控制选项,这些我们以后再讨论,这里我们还是省省力气吧。另外数据行输完后不能像其它语句那样直接在后面加上分号,而要另起一行输入分号,这样SAS才认为这是在输入原始数据而不是在搞别的什么。
例如:
libname a ‘e:\data\’;
data a.student;
input name $ height weight;(name后面的$符号表示变量name为字符型变量)
datalines;
Linda 171 51
Mary 168 50
Selinna 169 49
;
以上程序将直接建立数据集文件student,该数据集文件存放于目录“e:\data\”下。
3. 过程步
SAS程序的过程步表示一个处理过程,如排序、T检验、方差分析等等。过程步以关键字proc开始,后面紧跟着过程名,用以区分不同的程序步,并以关键字run结束。
一般的格式如下:
proc 过程名 选项列表;
……(其它语句);
……(其它语句);
run;
SAS程序中涉及的过程多达数百种,实现统计功能时常用的过程也有数十种之多,现将最为常用的过程名称及其所能实现的功能列入下表(表1.1),以便各位提前热热身。
表1.1 常用的过程名称及其功能
过程名
功 能
Sort
将指定的数据集按指定变量排序
将数据集中的数据列表输出
tabulate
将数据按照指定的分类变量以表格的形式分类汇总
Means
对指定的数值变量进行简单的统计描述
Freq
对指定的分类变量进行简单的统计描述
Ttest
对指定的变量做t检验
Anova
对指定的变量做方差分析
npar1way
对指定的变量做非参数检验
Reg
对指定的变量做回归分析
Corr
对指定的变量做相关分析
Discrim
对指定的变量做判别分析
Cluster
对指定的变量做聚类分析
Chart
绘出低分辨率的统计图
4. 几个常用的重要过程
在进入一般统计学功能实现的内容之前,有关数据预处理和执行重要公共功能的过程大家有必要预先掌握,这里选出几个常用的和重要的过程进行讨论。
(1)对SAS文件进行操作的datasets过程
datasets过程是对数据文件进行管理操作的工具,利用它我们可以实现以下功能:
将SAS文件从一个库中拷入另一个库中;
对SAS文件进行重命名;
修复损坏的SAS文件;
删除SAS文件;
列出某一SAS库中所有的SAS文件;
列出一个SAS数据集的属性,如最后修改时间、数据是否压缩、数据是否索引等;
对SAS文件进行设置密码的操作;
向SAS数据集添加记录;
对SAS数据集的属性以及数据集内变量的属性进行修改;
创建或删除SAS数据集的索引;
创建并管理SAS数据集的核查文件;
创建或删除SAS数据集的完整性规则。
datasets过程的一般格式如下:
proc datasets 选项列表;
age 当前文件名 相关文件名列表/选项列表;
append base=数据集名 data=数据集名 其它选项;
audit 文件名(操作密码); initiate;其它代码;
change 旧文件名1=新文件名1 …旧文件名n=新文件名n 选项列表;
contents data=数据集名 其它选项;
copy out=库标记 其它选项;
exclude 文件名 其它选项;(该语句只能在copy语句后出现,不能和select语句同时出现)
select 文件名 其它选项;(该语句只能在copy语句后出现,不能和exclude语句同时出现)
delete 文件名 其它选项;
exchange文件名1=交换文件名1 …文件名n=交换文件名n 选项列表;
modify 文件名 选项列表;
modify语句之从属语句;
repair文件名 选项列表;
save文件名 选项列表;
run;
是不是太繁琐了,我都有些不耐烦了。不过我还是得写,已经写了嘛!不忍心浪费掉,最起码可以用来充充数,扩大一下篇幅。至于各位,嫌烦的可以略过此部分,想用的时候再来温习也不迟。下面我就不厌其烦地向各位介绍一下各选项及各条语句的含义和用法。
proc datasets语句后各选项的含义及用法见下表(表1.2)。
表1.2 proc datasets语句后各选项的含义及用法
选项
含义及用法
alter=转换保护密码
SAS文件设置有转换操作密码时用以验证操作的合法性,密码正确时代码才会被执行
details/nodetails
控制有关SAS文件的详细信息显示与否,前者为显示,后者不显示,默认值为后者
force
此选项具有两个功能:(1)在过程步的语句存在错误时仍然强制程序的执行;(2)在append语句中,两个数据集的变量不完全相同时仍然强制append语句的执行。
gennum=
控制对衍生数据集的处理方式,等号后可为all, hist, revert或某一整数
kill
此选项表示删除待处理的库中的所有文件,应慎用
library=库标记
用以指定所要处理的库
memtype=成员类型
指定处理所针对的库成员类型(文件类型),默认值为all(所有类型)
nolist
在日志文件中禁止对所处理文件目录的显示
nowarn
在语句中指定的文件不存在等情况下,禁止显示出错信息,强制程序继续执行
pw=操作密码
SAS文件设置操作密码时验证操作的合法性(包括读、写保护以及转换保护的文件)
read=读保护密码
SAS文件设置读保护密码时验证操作的合法性
age语句用于批量地重命名文件,按照当前文件和相关文件的排列顺序,依次将后一个文件名重命名给前一个文件,结果是最后一个文件被删除,当前文件名被废弃。
对此语句我所了解的就这么多,而且还是通过试验得出的结论,但总感觉还是理解的不对,哪位若有高见还请不吝赐教。
append语句执行向数据集添加记录的功能,选项“base=数据集名”用以指定要添加记录的数据集,“data=数据集名”则指定所要添加的记录所在的数据集,此选项若省略则默认为当前数据集(最近一次操作的数据集)。
audit语句用于对文件的核查,生成核查文件并对其进行管理;change语句以新文件名替换旧文件名;contents语句用于显示指定数据集或当前数据集的各种属性;copy语句用于将当前库中相应的文件拷贝到指定的库中,选项“out=库标记”用来指定文件要拷贝到的目标库;delete语句用于删除指定的文件;exchange语句的功能是将等号前后两个文件的文件名进行互换;modify语句用于修改文件各方面的属性;repair语句用于对指定的文件(受到过某种损坏)进行修复,使其恢复到可以使用的状态;save语句的功能是将其指定的文件保留,当前库中的其他所有文件则被删除。
(2)对数据文件中记录进行排序的sort过程
sort过程的功能是对指定数据集中的记录按照指定的变量进行排序。由于诸多过程有对数据集记录进行排序的需要,比如过程步中存在by语句(用以将数据文件分割为若干部分)的情况下,就需要按照by语句后的变量对数据先行排序,所以sort过程非常有用,而且非常常用。
sort过程的一般格式如下:
proc sort 选项列表;
by descending 变量名1 变量名2 … 变量名n;
run;
proc sort语句后各选项含义及其用法见下表(表1.3)。
表1.3 proc sort语句后各选项含义及其用法
选项
含义及用法
data=数据集名
用以指定sort过程所要处理的数据集,若省略则默认为最近建立或处理的数据集
datecopy
此选项指定在不改变文件创建日期和修改日期的条件下对文件进行排序操作
out=数据集名
将排序后文件以指定的文件名存储,原文件不进行任何修改,若无此选项则将原文件覆盖
sortseq=排序依据
指定对字符型变量排序时依据的标准
reverse/equals/noequals
指定输出数据中的排序方式,三者分别表示将字符变量的次序翻转显示,在排序变量的各水平内部次序保持不变,在排序变量的各水平内部允许次序的改变
nodupkey/noduprecs
指定重复变量的消除方式,前者表示除去排序变量值重复的记录,后者表示除去所有变量值重复的记录
sortsize=
用以指定可用最大内存的大小,等号后为表示内存大小的数值及单位,比如10m
force
用以强制执行重复排序(对已建立索引的文件排序)过程
tagsort
指定在临时文件中仅存储排序变量和记录编号,以减少对磁盘空间的使用
by语句即用以指定排序所要依据的变量,变量可为数值型也可为字符型,其后可指定多个变量,sort过程在按照靠前的变量进行排序的情况下再按照靠后的变量进行排序。by语句中每个变量前可用descending/ascending选项来指定按照其排序的方式(降序或升序),默认状态为升序。
(3)将数据文件输出显示的print过程
print过程的功能是将SAS数据集的记录以一定的方式显示到输出设备(显示屏),可以显示其全部的变量或部分变量。利用此过程,你可以创建从简单列表到可进行数据汇总的各种报告的各种不同的表单。
print过程的一般格式如下:
proc print 选项列表;
by descending 变量名1 变量名2 … 变量名n 其他选项;
pageby 变量名;
sumby 变量名;
id 变量名;
sum变量名;
var变量名;
run;
proc print语句后可跟的选项含义及其用法见下表(表1.4)
表1.4 proc print语句后选项含义及其用法
选项
含义及用法
contents=文本
用以指定html内容文件中指向输出的链接的标识文本,等号后可为任何文本
data=数据集名
指定所要处理的数据集,等号后为数据集文件名
double
指定在相邻的记录间插入一空行
n=字符串
在报告的末尾或by变量各水平分组的末尾显示显示记录的数目,并以等号后的字符串对其进行标识
noobs
禁止记录编号在报告中的显示
obs=列标题
用以指定记录编号所在列的列标题
round
对未进行格式化的数值变量进行四舍五入,统一格式化为带两位小数的十进制数值
rows=page
规定页面格式,目前’page’是此选项唯一可用的值,表示在每一页中只显示一条记录的一行变量值,即一行中显示尽可能多的记录数
width=列宽度
指定列的宽度,可取的值有’full’,’minimum’,’uniform’,’uniformby’等,
heading=方向
取值可为v(vertical)或h(horizontal),表示列标题显示的方向(横向或纵向)
label
指定以变量标识作为相应的列标题,否则以变量名作为列标题
split=字符
首先此选项指定以变量标识作为列标题,以指定的字符作为列标题换行的标志
style=类型元素
指定报告中特定位置所要应用的类型元素(涉及很多内容,详细内容略)
by语句在所有过程中的用法都相同,即将数据集分割为若干小数据集分别进行处理。pageby语句用来控制换页时变量的显示方式,对于其后所指定的变量,相同的值不会显示在不同的页中,该变量某一值的记录在一页的剩余部分显示不下时,则从该值的第一条记录开始换行显示。sumby语句的作用和pageby语句相似,只不过是将换页的动作换为求和,对指定变量的每一值计算var变量的总计值。id语句的作用是用指定的变量值代替记录编号对每一条记录进行标识。sum语句用于指定报告中要进行求和操作的变量,var语句用于指定要在报告中显示的变量。
以上过程作用较为普遍,使用频率较高,有必要预先了解,以便于后面所讨论内容的顺利进行。
为节省篇幅,这里不进行实例演示。内容过于枯燥,可能的错误也难免,还请各位多多包涵。
SAS程序操作的大概情况就草草的这样介绍一下吧,说得太多的话我怕各位没有耐心看下去。更多的内容我想还是留在实际的例子中来介绍,这样大家可以好好的切身体会一下,然后就会印象深刻,实际运用起来也就得心应手了。
回答者:stop心 - 魔法学徒 一级 11-26 13:04
--------------------------------------------------------------------------------
提问者对于答案的评价:
回答好多问题攒200分,不容易
你回答并不理想, 但我从小说话算话的,兑现
--------------------------------------------------------------------------------
评价已经被关闭 目前有 2 个人评价
好
0% (0) 不好
100% (2)
对最佳答案的评论
好像spss就可以解决楼主的问题了 spss还好学一点
评论者: arico - 试用期 一级
--------------------------------------------------------------------------------
评论者: 教育软件开发部 - 试用期 一级
--------------------------------------------------------------------------------
其他回答 共 11 条
QQ585858585999614
回答者:gaowang10 - 魔法学徒 一级 11-26 13:34
--------------------------------------------------------------------------------
我也想知道。
回答者:feng_peng - 助理 二级 11-26 14:42
--------------------------------------------------------------------------------
1楼说的很详细了
回答者:fangjian831030 - 见习魔法师 二级 11-26 14:53
--------------------------------------------------------------------------------
这东东贴上1000页也贴不完啊
回答者:seebysee - 试用期 一级 11-26 15:14
--------------------------------------------------------------------------------
你加我QQ25883586
我做你师父
回答者:gaizoudelu - 试用期 一级 11-26 16:11
--------------------------------------------------------------------------------
1、SAS系统简介
SAS是一个庞大的系统,它目前的版本可以在多种操作系统中运行。当前在国内被广泛使用的最新版本是8.2版,功能很强大,我深有体会。
据说9.0版已在国外面世,已经有一些有关它的抢先报道在网络上广为流传,说它如何如何美妙,令人不禁充满期待。
SAS8.2的完整版本包含以下数十个模块。
BASE,GRAPH,ETS,FSP,AF,OR,IML,SHARE,QC,STAT,INSIGHT,ANALYST,ASSIST, CONNECT,CPE,LAB,EIS,WAREHOUSE,PC File Formats,GIS,SPECTRAVIEW, SHARE*NET, R/3,OnlineTutor: SAS Programming,MDDB Server,IT Service Vision Client, IntrNet Compute Services,Enterprise Reporter,MDDB Server common products,Enterprise Miner,AppDev Studio,Integration Technologies等。
所谓模块,我的理解是将功能相近的程序、代码等集中起来组成相对独立的部分,就称之为模块,类似于办公软件系统office中包含的word、excel、access等。各模块具有相对独立的功能范围,我们常用的模块有base,graph,stat,insight,assist,analyst模块等,分别执行基本数据处理、绘图、统计分析、数据探索、可视化数据处理等功能。其余模块我用得很少,知道得也很少,所以也就不多说了。
SAS系统的长处,体现于它的编程操作功能的无比强大。SAS一直以来也是注重于其编程语言的发展,对于可视化方式的菜单操作投入较少,其较早的版本仅有很少的菜单操作功能,使用起来也是非常的别扭。这很可能就是在windows人机交互式操作系统占统治地位的今天,SAS较少被人问津的原因之一。
到了最新的几个版本,SAS也对可视化操作方法投入了一定的关注。从8.0版以后,出现了几个功能强大的可视化操作的模块,如insight模块和analyst模块等,其菜单操作的方便程度以及人机界面的亲和性绝不亚于SPSS等著名的可视化统计分析软件。
然而要想完全发挥SAS系统强大的功能,充分利用其提供的丰富资源,掌握SAS的编程操作是必要的,也只有这样才能体现出SAS在各个方面的杰出才能。
二、SAS系统基本操作及基本概念
哪位要是连软件的安装和打开都要我啰嗦的话,我劝您还是买一套洪恩的《开天辟地》好好热热身先。
SAS 8.2的界面中间是三个并排(或层叠)的窗口,那个叫做Program Editor的窗口(窗口标签为Editor)就是用来输入SAS语句的,编程操作的所有内容都是在该窗口内完成的,各位还是要跟它先多熟悉一下。
(一)数据集(dataset)和库
统计学的操作都是针对数据的,SAS中容纳数据的文件称为数据集,数据集又包含在不同的库(暂且理解为数据库吧)中。SAS中的库分为永久性和临时性两种。顾名思义,存在于永久库中的数据集是永久存在的(只要你不去删除它),临时库中的数据集则在你退出SAS后自动被删除。至于SAS中库的概念,最简单的理解就是一个目录,一个存放数据集的目录。
数据集的结构完全等同于我们一般所理解的数据表,由字段和记录所构成,在统计学中我们习惯将字段称为变量,在后面的内容中字段和变量我们就理解为同一种东西吧!建立数据集的方法很多,编程操作中有专门的数据读入方法来建立数据集,但需要将数据现场录入,费时费力。如果数据量大,我劝各位还是先以其它方法将数据集建好,否则程序语句的绝大部分会浪费在数据的输入上。
What are 其它方法?各位是不是去参考一下别的书籍或资料。要不您是不是可以等一等,我准备若干年后出一本SAS操作大全。
(二)SAS程序概述
和其它计算机语言一样,SAS语言(称为SCL语言,SAS Component Language)也有其专有的词汇(即关键字)和语法。关键字、名字、特殊字符和运算符等按照语法规则排列组成SAS语句,而执行完整功能的若干个SAS语句就构成了SAS程序。
SAS程序包括多个步骤和一些控制语句,一般情况下均包括数据步和过程步,一个或多个、数据步或过程步,它们之间任何形式的组合均可成为一段SAS程序,只要能完成一个完整的功能。通常情况下SAS程序
嫌Stata内置Do file editor不好用,怎么办
一、 排在一切的开始help/search
1. help 当你知道一个命令想了解它的具体用法和含义时help command-name
2. search 当你不知道该用什么命令可以输入你关心的词查找到需要的命令
这两个都使用菜单操作更加方便在最右边help 菜单下
3. log using 创建日志文件就是把你输入的命令得出的结果等在stata results
窗口里显示过的东西都存成一个.smc 文件可供以后察看
二、 数据库操作
从其他格式的数据库文件开始
1. 使用statatransfer 转化成stata 格式
2. 如果是Exce 格式可全选复制打开stata 粘贴到空白的数据编辑窗口里面去
3. stata 命令insheet(读用tab 或逗号分隔的文本)/odbc/infile1(读tab 或space 或逗号分开的文本)/infix/infile2 等
从stata 格式的文件开始
1. 打开保存open/ save,可以进行菜单操作当数据库非常大时可能会需要set
memory …* 已经打开数据库的情况下该命令可能不被允许使用
Save 命令的重要选项是replace.就是把同名文件替换掉这里有时候需要小心一些否则的话可能会带来不期望的结果
2. 描述describe/codebook/inspect/summarize/tab/table/display/list
describe 提供变量名变量类型变量标签(label)
codebook 变量名标签非缺生值个数其他统计量type, range, mean, sd, percentile等
inspect 变量名标签该变量数值的结构几个不同值几个正值负值0 值
tabulate 制表有丰富功能
table:制表仅显示离散变量各值的出现频率
summarize 报告均值标准差极值
list: 列举不加任何参数列举所有变量的所有观察值
display 显示后面加的表达式**想把stata 当计算器用的话可以在di 后面输入你要计算的式子回车这个式子里可以有数字定义过的scalar 某个变量的某个观察值如I[23]指的是变量I 的第23 个观察值
*label: 给变量或者变量的值贴标签
3. 变量/观察处理generate/replace/drop/keep/egen
generate: 生成一个变量你需要给它赋值可以用常数缺省. existing 变量的代数式函数注意用函数赋值如gen sumi=sum(i), sumi 的所有观察值都是一样的等于所有I 的加总
replace: 给已有变量赋值结构同gen
drop/keep: 删掉指定变量/除指定变量以外的所有变量
egen 比较智能的变量生成器用于分组加总计数平均等要求数据库sorted by the group.
*从离散变量生成dummies: tab var gen var(var).如果变量var 有3 个不同值就相应生成了3 个dummies 分别命名为var1 var2 var3.
4. 数据库处理keep /drop/merge/append/sort
keep/drop 跟if 条件满足/不满足条件的观察删掉
merge 横向合并数据库当两个数据库描述的大体是同一些个体的不同方面的特征合并起来一描述这些个体的所有特征时使用注意简单一对一合并(merge using “.dta”)区别于按索引合并merge 索引变量 using “.dta”, 这时主客数据库均应按索引变量排序,注意update/update replace 选项
append: 追加观察
sort 排序gsort 智能排序
5. scalar 和matrix 不编程的话用的不多即使用到也是很简单的help 一看就明白
6. function: help function 去找你想用的函数有
Mathematica functions Probability distributions density functions Random numbers
String functions Programming functions Date functions Time-series functions
Matrix functions 等
三、 估计针对pane data
pane data 的处理需要先制定组代码和时间代码iis …/tis …
1. OLS: reg depenvar covariates, 选项
Predict: 计算残差hat/yhat
变量的系数scalar 存储为_b[变量名]
可以加weight 相当于GLS 处理异方差
2. GLS: pane data 中xtgls 缺省仅假定var( ) var( ) it is u ≠ u ift≠s 即个时期之间存在异方差个体之间方差相同个体之间相互独立时间序列上没有自相关但是通过选项panel(),corr()使协方差矩阵更加复杂当然要求程序运行的时间加长运行gls 需要较大型的矩阵运算所以有时候需要set matsize ….后面的数字最大为800
3. random effect fixed effect: xtreg …., re/ferandom effect 作为一种GLS 和xtgls 的不同之处在于对残差的假定不同Randomeffect 里面没有任何形式的异方差但是同一个pane 内部有相关性而这个相关性与时间没有关系是individua effect 引起的所以不是时间序列意义上的马尔可夫过程
4. test:
Hausman specification test: “help hausman” 有详细步骤描述
5. 报告结果的两个trick
把结果做成表格选定表格注意是表格不能包括回归结果上面的RSS,F, R-square什么的表头右键copy table 贴到exce 里面就是完美的表格了
把几个回归的结果合并在一起报告一个数列的表
step1: 先做一个回归跟上est store 回归名1
step2: 做另一个回归跟上est store 回归名2
StepN+1. est table 回归名1 回归名2 回归名N, se
就会出来一个合并起来的表格加se 选项同时还报告每一个回归系数的标准差
如果把se 换成star 则自动在估计系数右上加上表示显著性水平的*号
四、 do file 的写作
我的经验不多主要是从MR HE 那里听来看来的
1. 注释两种以*开始一句话该句话被认为是注释
命令后面/* */中间的东西被认为是注释当然后面的也是不算命令的
可以在单命令里使用/* */只能在do files 里使用
2. 循环条件语句forvalues/if/…具体用法看帮助
**forvalues 里面引用循环指标(say, a)的时候需要这么写`a’, 注意前后两个引号是不一样的如果不是laborhood 教导我恐怕这辈子也想不出来
五、 画图
画图时非常重要的内容可是stata8 用菜单/对话框的方式实现了就没什么难为的了虽然程序里用的时候必须输命令这个命令要实现的任务可以先用对话框实现一遍stata8自己会把完整的命令写出来
不过stata8 有一点不好graph 命令必须制定画图的类型graph var graph var1 var2 这样的命令不被接受而stata7 里面这两个就分别默认为histogram var; twoway(var1,var2)了还有save graph combine graphs 的问题 就是把画好的几个图列在一个大图里显示Stata8和stata7 也不一样7 里面是graph…, saving(name1),…;graph using name1…; 8 里面是graph…,name(name1); graph combine name1…;