第一部分:基本统计方法
注:主要讲述过程:means(描述性统计);freq(算频数表);univariate(检验);anova(方差分析);ttest(检验);glm(广义线性回归);npar1way(非参,wilcox)
一:计量资料的统计分析方法
1.01均值+频数表+百分位数+正态检验、茎叶图、箱形图、正态概率图
data ex2_1; input x@@; low=2.3; dis=0.3;
z=x-mod(x-low,dis); cards;
3.96 4.23 4.42 4.61 4.26 3.77 4.20 4.36 4.55 4.25 4.63 3.91 4.41 4.57 4.26 4.56 3.79 3.89 4.56 4.26 4.66 4.28 3.83 3.96 3.27 4.61 4.26 3.96 4.27 3.61 4.98 4.24 3.83 4.26 4.36 5.28 4.21 4.42 3.96 4.49 5.11 4.20 4.36 4.56 4.25 4.92 4.23 4.47 4.61 4.26 3.89 4.21 4.36 4.57 4.26 4.03 5.46 4.16 ;
3.59 3.07 3.52 4.21 4.20 4.23 4.20 4.36 4.54 3.60 3.42 3.64
5.12 4.89 5.03 4.95 5.24 3.76 3.71 3.66 3.72 5.23 5.01 4.16
4.02 3.97 4.01 3.98 4.02 4.01 4.03 4.02 3.97 4.02 4.01 3.76
4.32 4.28 4.30 4.29 4.33 4.29 4.34 4.31 4.28 4.32 4.29
3.72 3.64 4.19 3.67 3.76 3.67 4.69 4.83 4.76 4.68 3.68
4.76 4.66 4.75 4.69 4.81 3.39 3.62 3.59 3.21 4.76 4.71
4.16 4.04 4.14 4.12 4.17 4.12 4.18 3.97 4.04 3.69 4.13
/*freq语句,算频数表*/ proc freq; tables z; run;
proc means data=ex2_1 n mean std stderr clm; var x; run;
data ex2_1; input x f@@; cards; 3.07 2 3.27 3 3.47 9 3.67 14 3.87 22 4.07 30 4.27 21 4.47 15 4.67 10 4.87 6 5.07 4 5.27 2 ; run;
proc means; freq f; var x; run;
/*把freq f改成weight f就是把f当权重或频数来算,f则在0,1之间*/
/*计算x的95%的置信区间*/
proc univariate data=ex2_1; var x;
output out=pct pctlpre=p
pctlpts=2.5 97.5; run;
proc print data=pct; run;
/*正态检验、茎叶图、箱形图、正态概率图*/
proc univariate data=ex2_1 normal plot; var x; run;
/*Extreme Observation显示的值是最小的5个极值和最大的5个极值*/
1.02几何均值
data ex2_5; input x f@@; y=log10(x); cards;
10 4 20 3 40 10 80 10 160 11 320 15 640 14 1280 2 ;
proc means noprint;/*调用means过程,不显示结果*/ var y; freq f;
output out=b/*结果输出到数据集b中*/
mean=logmean;/*把数据集b中均数的变量名mean改为logmean*/ run;
data c;/*新建数据集c*/ set b;/*调用数据集b*/
g=10**logmean;/*计算变量logmean的反对数,该值就是x的几何均数,将该值赋值给变量g*/ proc print data=c; var g; run;
/*这个是计算平通平均数的值*/
proc means data=ex2_5; var x; freq f; run;
1.03已知均值和方差求置信区间-单样本+单样本与总体
/*单样本*/
data ex3_2; n=10;
mean=166.95; std=3.64;
t=tinv(0.975,n-1); pts=t*std/sqrt(n); lclm=mean-pts; uclm=mean+pts; proc print;
var lclm uclm; run;
/*单样本与总体均值*/
data ex3_5;
n=36;/*样本量*/
s_m=130.83;/*样本均值*/ std=25.74;/*样本标准差*/ p_m=140;/*总体均值*/ df=n-1;/*自由度*/
t=(s_m-p_m)/(std/sqrt(n));
p=(1-probt(abs(t),df))*2;/*根据t值计算p值*/ run;
proc print; var t p; run;
1.06双样本均值相等检验+两组分开+两组一起算+两组样本量不同
/*双样本分开算*/
data ex3_4;
n1=29; n2=32; m1=20.10; m2=16.89; s1=7.02; s2=8.46;
ss1=s1**2*(n1-1); ss2=s2**2*(n2-1);
sc2=(ss1+ss2)/(n1+n2-2); se=sqrt(sc2*(1/n1+1/n2)); t=tinv(0.975,n1+n2-2); lclm=(m1-m2)-t*se; uclm=(m1-m2)+t*se; proc print;
var t se lclm uclm; run;
/*双样本相减后再算*/
/*用MEANS作配对资料两个样本均数比较的t检验*/
data ex3_6;
input x1 x2 @@; d=x1-x2; cards;
0.840 0.580 0.591 0.509 0.674 0.500 0.632 0.316 0.687 0.337 0.978 0.517 0.750 0.454 0.730 0.512 1.200 0.997 0.870 0.506 ;
proc means t prt; var d; run;
/*用UNIVARIATE过程作配对资料两样本均数比较的t检验*/
proc univariate data=ex3_6; var d; run;