1

必要な変数の平均、中央値、標準偏差、および四分位範囲(IQR)を生成することにより、いくつかの連続変数を含む非常に大きなデータテーブルを(もちろんカテゴリ別のブレーク変数を使用して)集約する必要があります。

最初の3つは、SPSS Aggregateコマンドを使用した簡単なものですが、データテーブルを集計してIQRを計算する方法がわかりません。

記述統計(四分位数)を使用してIQRを計算できることは知っていますが、集計で計算する必要があるため、これはオプションではありません。残念ながら、Rの使用は、いくつかの奇妙な状況のおかげでも失敗します(Rで、base :: read.table、sqldf、bigmemory、ffパッケージのいずれでも巨大なコンマ区切りファイルをロードできませ

どんなアイデアでも大歓迎です!そしてもちろん:よろしくお願いします。


PS:標準偏差に1.5を掛けてIQRを推定することを考えましたが、分布が歪んでいるため、その方法は機能しないため、正規性が成り立たないと仮定します。

PS:SPSS内でRを使用しても、純粋なRでデータセットを開いているときのようなメモリの問題は発生しないと思いますか?

4

2 に答える 2

3

この構文でうまくいくはずです。このタスクのためだけに、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を計算するというさらなる制約を考えると、先に進むために私が見ることができるいくつかの異なる方法があります。1つは、split fileコマンドを使用して、上記の頻度コマンドを再度実行することです。

split file by group.
freq var = X1 X2
/format = notable
/ntiles = 4.
split file end.

また、ctables内で特定のパーセンタイルを取得することもできます(そのために必要なグループ化/ネストを実行できます)。ただし、この時点でより有用な解決策となる可能性があるのは、実際に個別のファイルを保存する(または、ロードされたままの特定のグループに完全なデータセットを減らす)プログラムを作成し、個別のファイルごとに計算を実行して、データセットにダンプすることです。400万レコードのデータセットを操作するのは面倒であり、ファイルを分割するだけの場合は必要ないようです。これは、マクロコマンドを介して実行できます。

于 2011-04-08T12:37:20.360 に答える
2

OMSは、任意のピボットテーブルをデータセットとしてキャプチャできるため、そのように表示された統計結果をデータセットとして使用できます。ただし、この場合の別のアプローチは、RANKコマンドを使用することです。RANKでは変数をグループ化できるため、グループ内でランクを取得でき、グループ内の四分位数とパーセンタイルを計算できます。たとえば、RANK VARIABLES = salary(A)BY jobcat minority / RANK / NTILES(4)/PERCENT。次に、FIRSTとグループ変数をブレークとして集計すると、グループごとの四分位数のデータセットが得られ、そこからiqrを計算できます。

猫の皮を剥ぐ方法はたくさんあります。

-ジョンペック

于 2011-04-09T01:30:16.473 に答える