为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

呼吸内科1分解

2018-05-30 12页 doc 76KB 0阅读

用户头像 个人认证

拍拍£宝贝

有多年的行政人事工作经验,现负责公司员工招聘,筛选,面试,培训等管理

举报
呼吸内科1分解SAS统计分析编程笔记 ? DATA步: 进行数据管理和操作的基本步骤,主要功能包括:建立SAS数据集,导入外部程序数据文件,分割、合并、修改、更新现有的的SAS数据集,分析、呈现和管理数据,利用数据集中已有数据计算或生成新变量等。编程语言包括: infile “D:\student.txt”; 获取外部数据; input height weight; 指定读入数据的格式以及变量名 cards; 用于在SAS系统中直接输入数据,表明所列示数据的开始。 ? PROC 步: 可引用现有的程序或过程进行相应的数据处理和分析活动。主...
呼吸内科1分解
SAS统计分析编程笔记 ? DATA步: 进行数据管理和操作的基本步骤,主要功能包括:建立SAS数据集,导入外部程序数据文件,分割、合并、修改、更新现有的的SAS数据集,分析、呈现和管理数据,利用数据集中已有数据计算或生成新变量等。编程语言包括: infile “D:\student.txt”; 获取外部数据; input height weight; 指定读入数据的格式以及变量名 cards; 用于在SAS系统中直接输入数据,表明所列示数据的开始。 ? PROC 步: 可引用现有的程序或过程进行相应的数据处理和分析活动。主要语法包括: proc 过程名 <选项>; < var < 变量名1 变量名2… 变量名n>>; < where < 条件或表达式>>; < by < 变量名1 变量名2… 变量名n>>; run; 过程包括: PRINT:显示数据集的变量名及变量值 SORT:升降序排列 MEANS:均值、差、极值等统计量 UNIVERIATE:常见统计量、t检验、分位数、极端值等 FREQ:频数、频率、累计频数、累计频率 CHART:饼图、横向/纵向直方图、星形图 ? SAS编程语言表达式: +(加)、-(减)、*(乘)、/(除)、**(乘方)、=(等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、><(不等于)、and(和)、or(或)、xor(异或) ? 条件语句: if 条件或表达式 then …;    /*当条件或表达式满足时执行的程序*/ else …;    /*当条件或表达式不满足时执行的程序*/ 例如:比较两个变量的大小,如果x>y,则输出“x>y”;如果xy then put “x>y”;    /*在“log”窗口中显示引号内的字符*/ else if x100); y=y+x; x=x+2; end; put “y=” y; run;  /*显示结果应也为“y=2500”*/ ? 也可在不修改循环条件的前提下进行计算: 例如: data; x=1; y=0; do until (x>100); y=y+x; x=x+2; if x>50 then leave; end; put “y=” y; run;  /*此为50以内的奇数自然数之和*/ ? SAS 数据集的调用: Sample.ABC Sample 指第一级库标记,“.”后的ABC指第二级数据集名。 ? 利用SAS编程建立数据集:用DATA步指定数据集名称,INPUT函数指定变量及变量属性,并为对应的变量输入指定输入方式: INPUT <变量1 变量2 …变量n> <@@> 例如: data SASUSER.score; input id name$ literature math @@; label id=”学号” name=”姓名” literature=”语文” math=”数学”; cards; 1 张三 89 87 2 李四 78 90 3 王五 79 89 4 赵二 90 76 5 孙玉 96 87 6 张一 87 89 7 李刚 89 69 8 黄源 69 88 9 陈强 75 78 10 钱刚 70 92 ; 其中label 为变量名设置标签。cards 后紧跟数据列表,并以“;”结束。input 中“@@”表示按照input 定义的变量顺序依次连续读入数据,无论数据分为多少行,遇到“;”时则停止读入。此例中系统会按照idname$ literaturemath 的顺序读入cards的数据,首先1、张三、89、87, 其次2、李四、78、90,直到“;”。如果没有“@@”,则系统按照行读入数据,此例中先读入1、张三、89、87,然后跳到第二行的4、赵二、90、76 ? SAS系统通常用“.”表示缺失值;“$”符号表示字符型变量。 data SASUSER.Car; input ID Q1 B1 B2; Cards; 1 7 3 3 2 8 2 3 3 10 3 5 4 9 4 4 5 10 4 3 6 6 3 3 7 . 2 4 8 7 4 4 9 5 3 4 10 11 2 4 run; /*对变量排序*/ proc sort data=SASUSER.Car;  /*使用sort 过程对SASUSER.Car数据集进行排序*/ by descending Q1; /*按照B1变量进行降序排列*/ proc print; /*在“output”窗口中显示SASUSER.Car数据集*/ run; /*设定变量值的标签*/ proc format; value B1_Fmt 1='3000元以下' /*指定一个变量值标签对应关系,并命名为“B1_Fmt”*/ 2='3000~5000元' /*等号左边为变量值,等号右边为变量值的标签*/ 3='5000~8000元' 4='8000元以上'; run; data format_demo; input B1@@; cards; 1 2 3 4 4 4 3 2 3 1 1 3 4 2 ; run; proc print data=format_demo; run; proc print data=format_demo; format B1 B1_Fmt.; /*引用B1_Fmt变量值标签对应关系,注意变量值标签名称后要加上“.”*/ run; /*增加或删除变量或观测值*/ Data Car; /*指定名为Car的临时数据集*/ set SASUSER.Car; /*从SASUSER.Car数据集中读入数据*/ drop ID; /*在Car临时数据集中删除ID变量*/ run; Data Car; set SASUSER.Car; keep Q1 B1 B2; /*用KEEP语言也能达到只删除ID变量的目的*/ run; /*数据的拆分与合并*/ data SASUSER.Car_Low SASUSER.Car_High; set SASUSER.Car; select; when (B1<=2) output SASUSER.Car_Low; /*把低收入的观测值放在指定数据集中*/ otherwise output SASUSER.Car_High; /*把其他收入的观测值放在指定数据集中*/ end; run; data SASUSER.Car_Total; set SASUSER.Car_Low SASUSER.Car_High; /*SET 语句后列示参加纵向合并的数据集*/ run; proc sort=SASUSER.Student_Profile; /*按ID变量排序*/ by ID; run; proc sort=SASUSER.Student_Score; /*按ID变量排序*/ by ID; run; data SASUSER.Student_Total; merge SASUSER.Student_Profile SASUSER.Student_Score; by ID;                /*把ID变量作为合并关键字*/ run; proc print; run; /*数据清洗*/ proc sql; /*调用结构化查询语句SQL语言*/ select id, q1 /*从SASUSER.Car数据集中选中ID、Q1变量*/ from SASUSER.Car where q1>10; /*指定查找条件*/ run;  /*该输出结果表示ID为10的样本对应变量Q1的观测值为11,即找出的出错样本*/ proc sql; select id, b2 from SASUSER.Car where b2>4; run; /*同理,该输出结果表示ID为3的样本对应变量B2的观测值为5,即找出的出错样本*/ proc sql; select id, b1, b2 from SASUSER.Car where b1>b2; run; /*该输出结果表示ID为5的样本对应变量B1和B2的观测值分别为4和3,即找出的逻辑关系出错样本*/ /*数据修正*/ data SASUSER.Car_Upd;  /*建立存储更新信息的数据文件,无需更新的数据用缺失值表示*/ input id q1 b1 b2; cards; 3 . . 2 5 . 2 . 10 1 . . ; proc sort SASUSER.Car_Upd; by id; run; proc sort SASUSER.Car; by id; run; data SASUSER.Car_Renew;  /*使更新后的数据存储在SASUSER.Car_Renew数据库中*/ update SASUSER.Car SASUSER.Car_Upd;  /*使用SASUSER.Car_Update来更新SASUSER.Car*/ by id; run; proc print data=SASUSER.Car_Renew; run; /*数据尺度变换*/ data SASUSER.Car; set SASUSER.Car; Log_10Q1=log(Q1*10);  /*将10倍Q1求对数得到的数值命名为Log_10Q1*/ Interval_Q1=100*(Q1-1)/9;  /*将Q1区间转换为[0,100]并命名为Interval_Q1*/ Stnd_Q1=Q1;        /*增加一个变量,用以存储Q1的标准化数值*/ run; proc standard data=SASUSER.Car out=SASUSER.Car    /*标准化变换的standard过程*/ mean=0 std=1;    /*指定标准化过程中的均值为0、标准差为1*/ var Stnd_Q1;    /*指定要进行标准化的变量*/ run; proc print data=SASUSER.Car; run; ? 统计图 1. 直方图 proc capability data=SASUSER.Gas;  /*调用capability模块和Gas数据集*/ histogram CO2/ normal              /*用CO2变量绘制直方图,并加入normal正态曲线*/ midpoint=150 450 750 1050 1350      /*指定直方图每个矩形的中点刻度*/ ctext=blue;                        /*指定直方图的颜色*/ run; 注意直方图适用于定量的连续数据,不太适用于定型数据或离散型的定量数据。 2. 条形图 proc gchart <选项>: vbar/hbar/vbar3d/hbar3d 变量表选项 /*垂直、水平、立体条形图*/ ? discrete: 把数值型变量处理为离散变量 ? midpoint=:设定主轴(即垂直条形图的横轴或水平条形图的纵轴)上的组中值或分组标记 ? sumvar=:设定被求和与求平均数的变量 ? type=:设定条形长度或高度表示的统计量,在不使用sumvar选项时,为FREQ和PERCENT,即频数和频率;在使用sumvar时,为SUM和MEAN,即合计和均值 ? ref=:根据指定数值绘制条形图中的参考线 ? width=:设定条形图的宽度 ? group=:根据指定的变量分组显示图形 ? subgroup=:根据指定的变量绘制堆积条形图 例如: proc gchart data=Sasuser.CCI;          /*利用gchart绘制高分辨率图形*/ vbar CCI                  /*绘制变量CCI的垂直条形图。如要水平条形图,则用hbar参数*/ /description=”Vertical Bar Chart of CCI”  /*命名图形*/ type=FREQ;    /*表明此图是表示频数的条形图*/ run; proc gchart data=Sasuser.CCI; vbar3d CCI /subgroup=gender    /*每个条形都分为男性和女性,每个条形的高度之和等于男女性高度之和*/ ; run; 3. 线图 symbol i=join;                              /*设定两点之间是连续的,否则不能连成线*/ axis1 label=(‘年份’) order=(1978 to 2006 by 1);    axis2 label=(‘各产业GDP构成’); axis3 label=(‘第一产业GDP构成’);            /*分别设定三个坐标轴属性*/ proc gplot data=Sasuser.GDP123;                /*使用gplot语句绘制线图*/ plot GDP_1* Year/haxis=asix1 vaxis=axis3;        /*绘制一个只含第一产业在不同年份变动的线图,横轴的属性使用上面定义的axis1属性,纵轴使用axis3属性*/ run; proc gplot data=Sasuser.GDP123; plot GDP_1* Year GDP_2* Year GDP_2* Year GDP_3* Year/overlay haxis=vaxis=axis2; run; /*把三个产业在不同年份变动的线图进行叠加(使用overlay参数),并使用axis1 和axis2分别作为横纵轴属性*/ 4. 散点图 symbol v=square;      /*square 为矩形,dot为点,trangle为三角,缺省该语句系统默认为“+”号*/ proc gplot data=Sasuser.Survey; plot survey_percapita* GDP_percapita; run; 5. 饼图 title ‘平面2D饼图’;          title ‘平面3D饼图’; proc gchart data=Sasuser.CCI;   proc gchart data=Sasuser.CCI; pie cci;                      pie3d cci/percent=arrow;  /*为3D饼图的扇形加上其表示的百分比*/ run;                        run; title ‘圆环图’; proc gchart data=Sasuser.CCI; donut cci/ subgroup=gender;      /*用性别变量将饼图分为两个圆环*/ run; ? 统计量 1. 均值 data; x=mean(89,90,78,98,87,76,69,90,92,88); /*其中mean可替换为median中位数、range级差、var方差、std标准差、stderr标准误差、cv变异系数、skewness偏度、kurtosis峰度等参数*/ put ‘均值=’ x; run; ? 其中,均值还可分为截尾均值(Trimmed Mean):去掉数据中最大N个和最小N个(或百分之N)值后的平均数。如N=1,则去掉98 和69,剩下8个样本。 ? 缩尾均值(Winsorized Mean):把原始数据中的最小和最大的N个值用第N+1小的和大的那个数值替换,然后计算均值。如N=2,则把最小的2个数(69、76)用第三小的数(78)替换,且用90替换最大的两个数(98、92);然后计算均值。 data null; input score@@; cards; 89 90 78 98 87 76 69 90 92 88 ; proc univariate data=null trimmed=1 winsorized=2; var score; run; 2. 分位数 中位数把所有数据分成两部分,四分位数用三个点将数据分成4部分,其中处于25%位置对应的数值叫做下四分位数,记为“Q1”;处于75%位置对应的数值称为上四分位数,记作“Q3”data null; input score@@; cards; 89 90 78 98 87 76 69 90 92 88 ; proc means data=null q3 q1; var score; run; 3. 众数 数据中出现次数最多的数值,是重要的集中趋势测度指标。 命令将上面的q3 q1 替换成modes即可。 4. 四分位差 第三个四分位数减去第一个四分位数,反映了中间1/2数据的分散程度,其值越小中间的数据越集中。 命令将上表的q3 q1 替换成qrange即可。 ? 详细的描述统计分析 1. FREQ过程: proc freq <选项>; by 变量;  /*指定输出结果的分组变量,所有结果均按照指定变量的不同之分别进行计算*/ exact 统计选项<计算选项>;  /*对特定统计量进行精确检验*/ output <输出数据集所包含的统计量> 选项;  /*产生含有特定统计量的新数据集,即把输出结果存放至数据集中*/ tables 变量名列表;  /*生成多个变量的交叉分析表格,并对相关性进行测度和检验*/ test选项;  /*对交叉表格一致性和相关性进行近似检验*/ weight 变量;  /*指定作为权数的变量*/ 例如: proc freq data=Sasuser.CCI; table gender CCI;  /*分别列出变量Gender和CCI的频数分布表*/ table gender * CCI;  /*分别列出变量Gender和CCI的交叉频数分布表*/ run; 2. MEANS过程: proc means <选项> <统计量>; by  变量1 <…变量n> ;  /*指定分组变量分别计算统计量*/ class变量;  /*定义观测组并计算其统计量*/ freq 变量;  /*指定作为频数处理的变量*/ id 变量;  /*在输出的数据集中增加标识变量*/ output <输出统计量> <数据集所包含的变量名列表> ;  /*指定输出结果存放至一个新的数据集中*/ types 组合形式需求;  /*指定class变量的组合形式*/ var 变量 ;  /*指定需要进行描述统计分析的变量*/ ways组合方式;  /*指定单一class变量组合方式数*/ weight 变量;  /*指定作为权数的变量*/ MEANS 过程的统计量关键词 clm 置信区间 nmiss 缺失样本量 var 方差 css 离差平方和 range 级差 median|p50 中位数 cv 变异系数 skewness|skew 偏度 p1|p5| p10 1%|5%|10%分位数 kurtosis|kurt 峰度 stddev|std 标准差 p90|p95|p99 90%95%99%分位数 lclm 置信区间下界 stderr 标准误差 q1|p25 下四分位数 max 最大值 sum 和 q3|q75 上四分位数 mean 均值 sumwgt 加权和 qrange 四分位差 min 最小值 uclm 置信区间上界 probt T统计量的p值 n 样本量 uss 平方和 t T统计量的值             例如: proc means data=Sasuser.Gwy qrange sum mean n uss std range cv; var score;  output out= Sasuser.Gwy_Output;  run; 3. UNIVARIATE 过程: proc univerate <选项>; by  变量;  /*指定分组变量分别计算统计量*/ class变量 ;  /*定义观测组并计算其统计量*/ freq 变量;  /*指定作为频数处理的变量*/ histogram变量;  /*生成高精度直方图*/ id 变量;  /*指定识别极端值的变量*/ inset 关键词列表; /*在图形中插入统计表*/ output <关键字1=新变量名…关健字K=新变量名> <百分位数选项>;  /*把结果存放至一个新的数据集中*/ probplot <变量>;  /*生成高精度概率图*/ qqplot <变量>;  /*生成高精度Q-Q图*/ var 变量 ;  /*指定需要进行描述统计分析的变量*/ weight 变量;  /*指定作为权数的变量*/ ? 统计表 proc tabulate <选项>; by  变量1 <…变量n> ;  /*指定分组变量分别计算统计量*/ class变量;  /*指定分类变量*/ classlv 变量/style=<格式名称|parent> <[格式属性]>; /*指定分类变量标题的格式*/ freq 变量;  /*指定作为频数的变量*/ keylabel 关键字1=‘关键字描述1’<…关键字n=‘关键字描述n’>  /*指定关键词的标签*/ keyword 关键字/style=<格式名称|parent> <[格式属性]>; /*指定关键字的格式*/ table <<页维度,>行维度,> 列维度;  /*指定表格的布局及形式*/ var 变量;  /*指定表格中的分析变量*/ weight 变量;  /*指定作为权数的变量*/ ? 其中 TABLE选项最重要,表格的三个维度(页维、行维、列维)之间用“,”隔开,如果table之后只有一个变量表达式,则表示列维度: 例如: table 地区,品牌,销售方式 表格以地区的形式分开,每个地区对应一张表格,每张表格的行表示品牌,列表示销售方式。 table 地区*品牌 该表格只有列维度,且列维度表示地区和品牌两个变量的交叉情况。变量间可以嵌套:table (A B)*C,该语句相当于A*C和B*C两种变量交叉情况。 ? 其次,table语句中可设置表格中出现的统计量,统计量的关键字可在P12表格中找到。 例如,按照地区计算各品牌的销售均值:table 地区*MEAN*品牌 如果输入 “table 地区 all,品牌”,则表示指定表格按照行或列进行汇总 ? 在使用table语句时,table语句中的变量必须通过class语句声明为分类变量,例如: proc tabulate data=Sasuser.Laptop; class district brand; var price; table district all, brand*(n price price*mean); keylabel N=‘销售量’all=‘合计’sum=‘销售额’mean=‘平均价格’; run;
/
本文档为【呼吸内科1分解】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索