如何在 SPSS 语法中引用现有变量的特定行?

How to reference a particular row for an existing variable in SPSS syntax?

我有 2 个变量,一个用于原始 p 值,另一个用于调整后的 p 值。我需要根据这两个变量的值计算一个新变量。我需要做的并不太复杂,但我在 SPSS 中很难做到,因为我无法弄清楚如何在 SPSS 语法中为现有变量引用特定行。

第一列按升序列出了原始 p 值。下一列列出了调整后的 p 值,但这些调整后的 p 值仍然不完整。我需要比较调整后的 p 值列中的两个相邻 p 值(例如,第 1 行和第 2 行、第 2 行和第 3 行、第 3 行和第 4 行,等等),并取每个中较小的 p 值这些比较并将这些 p 值输入到以下列作为新变量的值。

然而,这并不是故事的结局。还需要满足一个条件。也就是说,新的 p 值必须与原始 p 值的顺序相同。但是,如果我从第一行开始比较,我无法确保这一点。你可以看到在下面的例子中(i')大于(h')和(g'),并且(d')大于(c'),(b')和(a')(图片).

为了解决这个问题,我需要从底部开始比较调整后的p值。此外,我需要将调整后的 p 值与下面一行的新 p 值进行比较。一个例外是我可以简单地使用 (a) 的值作为 (a') 的值,因为 (a) 的值通常应该始终是所有 p 值中的最大值。然后,对于 (b') ,我需要比较 (b) 和 (a') 并将较小的输入为 (b')。对于 (c'),我需要比较 (c) 和 (b') 并将较小的输入为 (c'),依此类推。通过这种方式,(d') 将是 0.911,(i') 将是 0.017。

抱歉这么久 post,但如果我能在 SPSS 中获得一些帮助来完成这项任务,我将不胜感激。

预先感谢您的帮助。

Raw p-values | Adjusted p-values (Temporal)| New p-values (Final)
-------------|-----------------------------|---------------------
0.002        | 0.030 (i)                   | 0.025 (i')
0.003        | 0.025 (h)                   | 0.017 (h')
0.004        | 0.017 (g)                   | 0.017 (g')
0.005        | 0.028 (f)                   | 0.028 (f')
0.023        | 0.068 (e)                   | 0.068 (e')
0.450        | 1.061 (d)                   | 1.061 (d')
0.544        | 1.145 (c)                   | 0.911 (c')
0.850        | 0.911 (b)                   | 0.911 (b') 
0.974        | 0.974 (a)                   | 0.974 (a')

为了帮助您入门,这里有一些工具可以帮助您完成此任务:

滞后函数
您可以比较这一行和上一行的值,例如,下面将每一行的 Pval 与上一行的值进行比较,并将两者中较小的值放在 NewPval :

compute NewPVal=min(Pval, lag(Pval)).

如果您只想从底部开始执行相同的过程,您可以轻松地以相反的顺序对数据进行排序并执行相同的操作。

创建 + 领导
如果你想比较下一行而不是上一行,你应该首先创建一个 "lead" 变量然后与它进行比较。
例如,以下语法将为每一行创建一个新变量,该变量在下一行包含 Pval 的值,然后为 NewPval:

选择两者中较小的一个
create /LeadPval=LEAD(Pval 1).  
compute NewPVal=min(Pval, LeadPval).

使用案例数
您可以在计算和条件中使用案例编号(行号)。例如,以下语法将让您在第一行和以下几行中进行不同的计算:

if $casenum=1 NewPval=Pval.
if $casenum>1 NewPVal=min(Pval, lag(Pval)).

另一个可能方便的工具是 SHIFT VALUES 命令。它可以向前或向后移动一列或多列数据。

我想知道这样做的目的是否与为 Benjamin-Hochberg FDR 或其他类似方法调整多个测试校正的 p 值有关。如果是这种情况,您可能会发现 STATS PADJUST(分析 > 描述 > 计算调整后的 p 值)扩展命令很有用。它提供六种调整方法。您可以从“实用程序”(V24 之前)或“扩展”(V24+) 菜单安装它。