列统计内容模型和成对统计内容模型

列统计内容模型 提供对可以为每个字段 (单变量统计) 计算的统计的访问权。 成对统计信息内容模型 提供对可以在字段或字段中的值对之间计算的统计信息的访问权。

这些统计措施中的任何一项都是可能的:

  • Count
  • UniqueCount
  • ValidCount
  • Mean
  • Sum
  • Min
  • Max
  • Range
  • Variance
  • StandardDeviation
  • StandardErrorOfMean
  • Skewness
  • SkewnessStandardError
  • Kurtosis
  • KurtosisStandardError
  • Median
  • Mode
  • Pearson
  • Covariance
  • TTest
  • FTest

某些值仅适用于单列统计,而其他值仅适用于成对统计。

生成这些节点的节点包括:

  • “统计”节点生成列统计,在指定了相关性字段时,还可以生成成对统计。
  • “数据审核”节点生成列统计,在指定了覆盖字段时,还可以生成成对统计。
  • “均值”节点在比较一对字段或者将某个字段的值与其他字段摘要进行比较时生成成对统计。

哪些内容模型和统计信息可用取决于特定节点的功能和节点内的设置。

表 1. "列统计" 内容模型的方法
方法 返回类型 描述
getAvailableStatistics() List<StatisticType> 返回此模型中的可用统计。 并非所有字段都必须具有所有统计信息的值。
getAvailableColumns() List<String> 返回已计算其统计的列名。
getStatistic(String column, StatisticType statistic) Number 返回与该列相关联的统计值。
reset() void 将任何与此内容模型相关联的内部存储器清仓。
表 2. 成对统计信息内容模型的方法
方法 返回类型 描述
getAvailableStatistics() List<StatisticType> 返回此模型中的可用统计。 并非所有字段都必须具有所有统计信息的值。
getAvailablePrimaryColumns() List<String> 返回已计算其统计的主列名。
getAvailablePrimaryValues() List<Object> 返回已计算其统计的主列的值。
getAvailableSecondaryColumns() List<String> 返回已计算其统计的辅助列名。
getStatistic(String primaryColumn, String secondaryColumn, StatisticType statistic) Number 返回与各个列相关联的统计值。
getStatistic(String primaryColumn, Object primaryValue, String secondaryColumn, StatisticType statistic) Number 返回与主列值和辅助列相关联的统计值。
reset() void 将任何与此内容模型相关联的内部存储器清仓。

节点和输出

此表列出了构建包含此类型内容模型的输出的节点。

表 3. 节点和输出
节点名 输出名称 容器标识 注意
"means" (“均值”节点) "means" "columnStatistics"  
"means" (“均值”节点) "means" "pairwiseStatistics"  
"dataaudit" (“数据审核”节点) "means" "columnStatistics"  
"statistics" (“统计”节点) "statistics" "columnStatistics" 仅当检查特定字段时才会生成。
"statistics" (“统计”节点) "statistics" "pairwiseStatistics" 仅当关联字段时才会生成。

示例脚本

from modeler.api import StatisticType
stream = modeler.script.stream()

# Set up the input data
varfile = stream.createAt("variablefile", "File", 96, 96)
varfile.setPropertyValue("full_filename", "$CLEO/DEMOS/DRUG1n")

# Now create the statistics node. This can produce both
# column statistics and pairwise statistics
statisticsnode = stream.createAt("statistics", "Stats", 192, 96)
statisticsnode.setPropertyValue("examine", ["Age", "Na", "K"])
statisticsnode.setPropertyValue("correlate", ["Age", "Na", "K"])
stream.link(varfile, statisticsnode)

results = []
statisticsnode.run(results)
statsoutput = results[0]
statscm = statsoutput.getContentModel("columnStatistics")
if (statscm != None):
	cols = statscm.getAvailableColumns()
	stats = statscm.getAvailableStatistics()
	print "Column stats:", cols[0], str(stats[0]), " = ", statscm.getStatistic(cols[0], stats[0])

statscm = statsoutput.getContentModel("pairwiseStatistics")
if (statscm != None):
	pcols = statscm.getAvailablePrimaryColumns()
	scols = statscm.getAvailableSecondaryColumns()
	stats = statscm.getAvailableStatistics()
	corr = statscm.getStatistic(pcols[0], scols[0], StatisticType.Pearson)
	print "Pairwise stats:", pcols[0], scols[0], " Pearson = ", corr