首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SPSS中对IQR进行汇总?

如何在SPSS中对IQR进行汇总?
EN

Stack Overflow用户
提问于 2011-04-07 23:11:10
回答 2查看 4.2K关注 0票数 1

我必须聚合(当然是用一个分类中断变量)一个相当大的数据表,其中包含一些连续变量,得到所需变量的平均值、中值、标准差和四分位数范围(IQR)。

前三个是一个简单的使用SPSS聚合命令,但我不知道如何通过聚合数据表来计算IQR。

我知道我可以使用描述符(按四分位数)来计算IQR,但是由于我需要聚合中的计算--这不是一个选项。不幸的是,由于一些奇怪的情况,使用R失败了(不能在R中加载一个巨大的逗号分隔的文件,也不能使用base::read.table、平方大记忆ff包)。

任何想法都是欢迎的!当然,事先谢谢你。

P.S.:我想通过把标准差乘以1.5来估算IQR,但是这种方法不能工作,因为分布是倾斜的,所以假设正态不成立。

你认为在SPSS中使用R不会导致记忆问题,比如在纯R中打开数据集?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-09 01:30:16

OMS可以将任何枢轴表捕获为数据集,因此任何以这种方式显示的统计结果都可以用作数据集。然而,在这种情况下,另一种方法是使用秩命令。秩允许对变量进行分组,因此您可以在组中获得排名,并且它可以计算组内的四分位数和百分位数。例如,VARIABLES=salary (A)按职务少数群体/RANK /NTILES(4) /PERCENT排序。然后,以第一个变量和组变量作为中断进行聚合,将为您提供一个四分位数的数据集(按组分列),从中计算iqr。

剥猫皮的方法很多。

-Jon Peck

票数 2
EN

Stack Overflow用户

发布于 2011-04-08 12:37:20

这个语法应该能起作用。这一任务不需要在SPSS和R之间来回迁移。

代码语言:javascript
复制
*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的进一步限制,我可以看到有几种不同的方法可以继续下去。一种是使用拆分文件命令并再次运行上述频率命令。

代码语言:javascript
复制
split file by group.
freq var = X1 X2
/format = notable
/ntiles = 4.
split file end.

您还可以在ctable中获得特定的百分位数(并且可以进行任何您想要的分组/嵌套)。不过,在这一点上,可能更有用的解决方案是,使一个程序实际上保存单独的文件(或在仍然加载特定组时减少完整的数据集),对每个单独的文件进行计算并将其转储到数据集中。使用拥有400万条记录的数据集是一件痛苦的事,如果只是将文件拆分,则似乎没有必要。这可以通过宏命令来实现。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5588694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档