示例 2: 检验相关系数
虽然该程序提供了大量不同的统计过程,但某些专门操作需要使用 COMPUTE 语句。 例如,您可能希望对照总体相关系数检验样本相关系数。 当总体系数非零时,您可以计算 Z 统计量以检验样本和总体值相等的假设。
The formula for <inlinetag type="italic">Z</inlinetag> is:

假设您要检验从 30 个个案的样本中获得的 0.66 的 r 相对于总体系数 0.85。 下图显示了用于显示 Z 及其双尾概率的命令。
DATA LIST FREE / R N P.
BEGIN DATA
.66 30 .85
END DATA.
COMPUTE #ZR = .5* (LN ((1 + R) / (1 - R))).
COMPUTE #ZP = .5* (LN ((1 + P) / (1 - P))).
COMPUTE Z = (#ZR-#ZP)/(1/(SQRT(N-3))).
COMPUTE PROB = 2*(1-CDFNORM(ABS(Z))).
FORMAT PROB (F8.3).
LIST.
DATA LIST定义包含样本相关系数 ( R) ,样本大小 (N)和总体相关系数 (P)的变量。BEGIN DATA和END DATA指示数据是内联的。COMPUTE语句计算 Z 及其概率。 变量 #ZR 和 #ZP 是在计算的中间步骤中使用的临时变量。LIST命令输出如下所示。 由于 Z 的绝对值较大且概率较小,因此我们拒绝从相关系数为 0.85的总体中抽取样本的假设。
R N P Z PROB
.66 30.00 .85 -2.41 .016
如果频繁使用 Z 测试,那么可能要构造如下所示的宏。 !CORRTST 宏计算指定为关键字自变量值的样本相关系数,样本大小和总体系数的 Z 和概率值。
DEFINE !CORRTST ( R = !TOKENS(1)
/N = !TOKENS(1)
/P = !TOKENS(1)).
INPUT PROGRAM.
- END CASE.
- END FILE.
END INPUT PROGRAM.
COMPUTE #ZR = .5* (LN ((1 + !R) / (1 - !R))).
COMPUTE #ZP = .5* (LN ((1 + !P) / (1 - !P))).
COMPUTE Z = (#ZR-#ZP) / (1/(SQRT(!N-3))).
COMPUTE PROB = 2*(1-CDFNORM(ABS(Z))).
FORMAT PROB(F8.3).
TITLE SAMPLE R=!R, N=!N, POPULATION COEFFICIENT=!P.
LIST.
!ENDDEFINE.
!CORRTST R=.66 N=30 P=.85.
!CORRTST R=.50 N=50 P=.85.
DEFINE将宏命名为!CORRTST,并声明样本相关系数(R),样本大小(N)和总体相关系数 (P)) 的自变量。!TOKENS(1)指定自变量的值是一个字符串,该字符串跟在宏调用中自变量的名称之后。 因此,第一个宏调用为R,N,和P指定值 0.66, 30 和 0.85 。INPUT PROGRAM和END INPUT PROGRAM之间的命令创建具有一个个案的活动数据集。COMPUTE语句使用宏自变量R,N和P的值计算 Z 统计及其概率。 (如果COMPUTE语句对现有文件或内联数据中的值 (而不是宏自变量) 执行操作,那么不需要INPUT PROGRAM命令。)- 定制的
TITLE显示了在计算 Z中使用的宏自变量的值。 LIST命令显示 Z 及其概率。- 调用
!CORRTST宏两次。 第一次调用针对总体系数 0.85 (这将生成与先前所示相同的 Z 值和概率) ,从 30 个观测值的样本中检验 r 为 0.66 。 第二个宏调用根据相同的总体相关系数,从 50 个个案的样本中检验 0.50 的 r 。 下面显示了这些宏调用的输出。
SAMPLE R= .66 , N= 30 , POPULATION COEFFICIENT= .85
Z PROB
-2.41 .016
SAMPLE R= .50 , N= 50 , POPULATION COEFFICIENT= .85
Z PROB
-4.85 .000
下图显示了一个已修改的 !CORRTST 宏,可用于针对总体系数的 列表 中的每个系数检验样本 r 。
DEFINE !CORRTST (R = !TOKENS(1)
/N = !TOKENS(1)
/P = !CMDEND).
- INPUT PROGRAM.
- END CASE.
- END FILE.
- END INPUT PROGRAM.
!DO !I !IN (!P).
- COMPUTE #ZR = .5* (LN ((1 + !R) / (1 - !R))).
- COMPUTE #ZP = .5* (LN ((1 + !I) / (1 - !I))).
- COMPUTE Z = (#ZR-#ZP)/(1/(SQRT(!N-3))).
- COMPUTE PROB=2*(1-CDFNORM(ABS(Z))).
- FORMAT PROB(F8.3).
- TITLE SAMPLE R=!R, N=!N, POPULATION COEFFICIENT=!I.
- LIST.
!DOEND.
!ENDDEFINE.
!CORRTST R=.66 N=30 P=.20 .40 .60 .80 .85 .90.
DEFINE将宏命名为!CORRTST,并声明样本相关系数(R),样本大小 (N)) 和总体相关系数 (P)) 的自变量。!TOKENS(1)指定自变量的值是一个字符串,该字符串跟在宏调用中自变量的名称之后。 因此,宏调用将R的值指定为 0.66 ,将N指定为 0.30。!CMDEND指示P的值是宏调用中的剩余文本。 因此,P的值是包含元素 0.20, 0.40, 0.60, 0.80, 0.85和 0.90的列表。- 命令
!DO !IN和!DOEND定义 列表处理循环。 循环中的命令为总体系数列表中的每个元素计算一个 Z 统计。 例如,在第一次迭代中, Z 使用 0.20 作为总体系数进行计算。 在第二次迭代中,将使用 0.40 。 对于每个 Z 统计信息,将使用相同的样本大小 (30) 和 r 值 (0.66)。 - 下面显示了宏调用的输出。 针对每个总体系数显示一个 Z 统计。
SAMPLE R= .66 , N= 30 , POPULATION COEFFICIENT= .20
Z PROB
3.07 .002
SAMPLE R= .66 , N= 30 , POPULATION COEFFICIENT= .40
Z PROB
1.92 .055
SAMPLE R= .66 , N= 30 , POPULATION COEFFICIENT= .60
Z PROB
.52 .605
SAMPLE R= .66 , N= 30 , POPULATION COEFFICIENT= .80
Z PROB
-1.59 .112
SAMPLE R= .66 , N= 30 , POPULATION COEFFICIENT= .85
Z PROB
-2.41 .016
SAMPLE R= .66 , N= 30 , POPULATION COEFFICIENT= .90
Z PROB
-3.53 .000