如何在SPSS中汇总IQR?

我必须通过得到所需变量的均值,中位数,标准差和四分位数间距(IQR)来汇总(当然还有一个分类中断变量)一个包含一些连续变量的相当大的数据表。 前三个是使用SPSS Aggregate命令的简单命令,但我不知道如何通过聚合数据表来计算IQR。 我知道我可以通过使用Descriptives(按四分位数)计算IQR,但由于我需要聚合计算 - 这不是一个选项。不幸的是,使用R也失败了,这要归功于一些奇怪的情况(无法在R中加载一个巨大的逗号分隔文件,也不能使用base :: read.table,既不使用sqldf,也不使用bigmemory,也不使用ff包)。 欢迎任何想法!当然:提前谢谢你。 P.S。:我想通过将标准偏差乘以1.5来估算IQR,但是这种方法不适用于分布偏差,因此假设正态性不成立。 P.S。:您认为在SPSS中使用R不会导致内存问题,例如在纯R中打开数据集时?     
已邀请:
OMS可以将任何数据透视表捕获为数据集,因此以这种方式显示的任何统计结果都可以用作数据集。但是,在这种情况下,另一种方法是使用RANK命令。 RANK允许对变量进行分组,因此您可以在组内获得排名,并且可以计算组内的四分位数和百分位数。例如, RANK VARIABLES =工资(A)由少数族裔人士担任 / RANK / NTILES(4)/ PERCENT。然后与FIRST聚合并将组变量聚合为中断将为您提供按组计算的四分位数据集,从中计算iqr。 许多方法给猫皮肤。 -Jon Peck     
这种语法应该可以解决问题。不需要在SPSS和R之间来回迁移,仅用于此任务。
*making fake data, 4 million records and 150 variables.
input program.
loop i = 1 to 4000000.
end case.
end loop.
end file.
end input program.
dataset name Temp.
execute.

vector X(150).
do repeat X = X1 to X150.
compute X = RV.NORMAL(0,1).
end repeat.

*This is the command you are interested in, puts the stats table into a new dataset.
Dataset declare IQR.
OMS
/SELECT TABLES
/IF SUBTYPES = 'Statistics'
/DESTINATION FORMAT = SAV outfile = 'IQR' VIEWER=NO.
freq var = X1
/format = notable
/ntiles = 4.
OMSEND.
这需要时间仍然是如此大的数据集,但这是预期的。只需在SPSS帮助文件中搜索“OMS”,即可找到OMS工作原理的示例语法。 鉴于您想要为许多组计算IQR的进一步约束,我可以通过几种不同的方式继续进行。一个是使用split file命令并再次运行上面的频率命令。
split file by group.
freq var = X1 X2
/format = notable
/ntiles = 4.
split file end.
您还可以在ctables中获得特定的百分位数(并且可以执行您想要的任何分组/嵌套)。此时可能更有用的解决方案是创建一个实际保存单独文件的程序(或在仍然加载的情况下减少特定组的完整数据集),对每个单独文件进行计算并将其转储到数据集中。使用具有400万条记录的数据集是一件痛苦的事情,如果您只是将文件拆分起来似乎没有必要。这可以通过宏命令完成。     

要回复问题请先登录注册