设置SPSS输出的小数位数

SPSS中设置输出结果的小数位数并非直接操作。一个很好的选择是使用我们的设置输出表格小数位数工具。另一个方法是更改变量格式。最后,为了实现完全控制,需要使用Python脚本或SaxBasic。

1. 更改变量格式

SPSS输出结果中的小数位数主要取决于统计量、过程和变量格式的组合。通常,调整变量格式是控制输出格式的最简单方法。例如,尝试运行以下语法

***1. 指定新数值变量的格式。**
set format=f8.2.

***2. 创建迷你测试数据。**
data list free/v1.
begin data
1 2 3
end data.

***3. 基本描述统计。**
descriptives v1.

***4. 更改变量格式。**
format v1(f2.0).

***5. 基本描述统计。**
descriptives v1.

通过比较第一个和第二个描述统计表,可以得出关于小数位数的四个不同规则:

  • N(样本量)始终具有零个小数位(这很合理)
  • 最小值(Minimum)最大值(Maximum)直接从变量格式中获取其小数位数
  • 平均值(Mean)具有两个额外的小数位
  • 标准差(Standard deviation)具有三个额外的小数位

SPSS输出中的小数位数 SPSS输出 - 描述统计的小数位数

2. 使用Python脚本

如上所述,通过更改变量格式可以对小数位数进行 一定程度的 控制。然而,这种控制相当有限。例如,平均值(mean)将始终至少具有两位小数,而标准差(standard deviation)将始终比平均值多一位小数。这些限制可以通过SaxBasic(已弃用)或Python脚本来克服。以下是一个非常基本的Python脚本,用于将所有小数位数设置为零:

***将“描述统计”表中的所有小数位数设置为零。**
begin program.
import SpssClient
SpssClient.StartClient()
oDoc = SpssClient.GetDesignatedOutputDoc()
oItems = oDoc.GetOutputItems()
for index in range(oItems.Size()):
  oItem = oItems.GetItemAt(index)
  if oItem.GetDescription() == "Descriptive Statistics" and oItem.GetType() == SpssClient.OutputItemType.PIVOT:
    pTable = oItem.GetSpecificType()
    dCells=pTable.DataCellArray()
    for rows in range(dCells.GetNumRows()):
      for cols in range(dCells.GetNumColumns()):
        dCells.SetHDecDigitsAt(rows,cols,0)
SpssClient.StopClient()
end program.

尽管这个基本脚本有点长,但修改它(例如,为不同的统计量设置不同的小数位数)不需要太多额外的代码。另请注意,该脚本可以重写为函数(接受小数位数等参数),并放置在模块中以便于访问。

3. MODIFY TABLES 扩展

另一种微调输出表格中小数位数的方法是使用 MODIFY TABLES 扩展,可以从此处下载。此扩展可以做很多超出设置小数位数的事情,但有些人觉得它很难使用(可能比基本的Python脚本更难)。在底层,它基本上生成并运行一个Python脚本(就像我们刚才看到的那个),给定一些规范。以下是将平均值(Mean)和标准差(Standard deviation)的小数位数设置为1的方法:

***使用 MODIFY TABLES 扩展将描述统计的小数位数设置为1。**
SPSSINC MODIFY TABLES subtype="'Descriptive Statistics'"
SELECT="Mean" "Std. Deviation"
DIMENSION= COLUMNS
LEVEL = -1 PROCESS = ALL
/STYLES APPLYTO=DATACELLS
CUSTOMFUNCTION="customstylefunctions.SetDecimalPlaces(decimals=1)".