/*----------------- 一.单样本t检验 -----------------*/
/*有原始数据的t检验*/
DATA TEMP;
INPUT X@@;
Y=X-20.7;
CARDS;
20.99 20.41 20.10 20.00 20.91 22.60
20.99 20.42 20.90 22.99 23.12 20.89
;
TITLE 'T检验 - PROC MEANS过程';
PROC MEANS
mean /*求平均数*/
stderr /*求平均数的标准误*/
t /*t检验,检验样本的平均数等于0的假设是否成立,H0:均值为0*/
probt; /*或prt,t检验的显著性*/
var y; /*参与分析的变量名称*/
RUN;
TITLE 'T检验 - PROC Univariate过程';
PROC UNIVARIATE DATA=TEMP
normal; /*要求univariate程序检定输入资料是否呈现常态分配,并且输出检验结果*/
var y;
RUN;
/*无原始数据的t检验*/
DATA TEMP1;
INPUT u0 u1 s n; /*依次输入总体均值、样本均值、样本标准差、样本数*/
t=(u1-u0)/(s/sqrt(n)); /*样本t检验的计算公式*/
v=n-1;
p=probt(t,v); /*调用标准正态分布函数查看t值对应的p值*/
cards;
72 74.2 6.5 25
;
proc print; /*输出t检验的结果*/
run;
/*----------------- 二.配对样本t检验 -----------------*/
/*有原始数据的配对t检验*/
/*ttest过程*/
data temp;
input id a b;
cards;
1 2.41 2.80
2 2.90 3.04
3 2.75 1.88
4 2.23 3.43
5 3.67 3.81
6 4.49 4.00
7 5.16 4.44
8 5.45 5.41
9 2.06 1.24
10 1.64 1.83
11 1.06 1.45
12 0.77 0.92
;
proc ttest;
paired a*b;
run;
/*means过程*/
data temp;
set temp;
y=a-b;
keep id a b y;
run;
proc means mean stderr t probt;
var y;
run;
/*univariate过程*/
proc univariate normal;
var y;
run;
/*无原始数据的配对t检验*/
data temp1;
input d s n; /*依次输入配对样本的差值、标准差、配对数*/
t=d/(s/sqrt(n));
v=n-1;
p=probt(t,v);
cards;
0.625 0.78 8
;
proc print;
run;
/*----------------- 三.独立样本t检验 -----------------*/
/*有原始数据的两独立t检验*/
data temp;
input group x@@;
cards;
1 134 1 146 1 104 1 119 1 124 1 161 1 107 1 83 1 113 1 129 1 97 1 123
2 70 2 118 2 101 2 85 2 107 2 132 2 94
proc ttest;
class group;
var x;
run;
/*无原始数据的两独立t检验*/
data temp;
input x1 x2 n1 n2 s1 s2;
sc=sqrt((1/n1+1/n2)*((n1-1)*s1**2+(n2-1)*s2**2)/(n1+n2-2)); /*计算两独立样本共同的标准差*/
t=(x2-x1)/sc;
v=n1+n2-2;
p=probt(t,v);
cards;
20.95 21.79 20 20 5.89 3.43
;
proc print;
run;
SAS t检验
最新推荐文章于 2023-04-21 00:33:25 发布