2011-04-07 4 views
1

나는 필수 변수의 평균, 중앙값, 표준 편차 및 사 분위수 범위 (IQR)를 산출함으로써 몇 가지 연속 변수를 포함하는 아주 큰 데이터 테이블을 (물론 범주 형 브레이크 변수로) 집계해야합니다.SPSS에서 IQR을 집계하는 방법은 무엇입니까?

처음 세 개는 SPSS 집계 집계를 사용하는 쉬운 방법이지만 데이터 표를 집계하여 IQR을 계산하는 방법을 알지 못합니다.

설명문 (4 분위수 기준)을 사용하여 IQR을 계산할 수 있지만 계산시 집계가 필요하므로이 옵션이 아닙니다. 불행하게도 R을 사용하는 것은 이상한 환경 덕분에 실패합니다. R 파일의 거대한 쉼표로 구분 된 파일을 기본 :: read.table이나 sqldf, bigmemoryff 패키지로로드 할 수 없습니다.

어떤 아이디어라도 환영합니다! 그리고 물론 : 미리 감사드립니다.


P.S는 : 나는 1.5 표준 편차를 곱하여 IQR을 추정 생각하지만, 그 방법은 분포가 왜곡 될 때, 그래서 가정 정상이 스탠드를하지 않습니다 작동하지 않을 것입니다.

P.S .: SPSS에서 R을 사용하면 순수한 R로 데이터 집합을 여는 것과 같은 메모리 문제가 발생하지 않을 것이라고 생각하십니까?

+0

기존 데이터베이스에 대한 액세스 권한이 있습니까? 그렇다면 중앙값에서 데이터를 두 그룹으로 나눈 다음 75 %와 25 % 백분위 수에 대한 상위 그룹과 하위 그룹의 중간 값을 찾아 IQR을 얻을 수 있습니다. – Chase

+0

감사합니다! 나는 너의 제안을 조사 할 것이다. 비록 내가 '전통적인 데이터베이스'라는 말을 얻지는 못했지만 파일을 나누는 것이 사소한 것이 아닌가하는 두려움이 있습니다. 나는 2000 개의 카테고리를 가진 변수에 의해 파일을 집계하고 싶다. 그래서 결과 행렬은 모든 집계 된 변수를 가진 약 2000 가지의 경우를 가질 것이다. 파일을 두 개로 잘라서 두 그룹의 계산 중앙값은 모든 변수의 중단 변수에서 연속 변수의 중앙값을 계산하고 파일을 두 번 2000 파일로 분할하고 중앙값을 다시 계산해야합니다. 까다 롭긴하지만 요점을 모르겠다. :) – daroczig

+0

죄송합니다. 관계형 데이터베이스, 즉 Microsoft SQL 또는 MySQL 등을 말 했어야합니다. 대부분의 관계형 데이터베이스를 사용하면 플랫 파일을 직접 읽을 수 있습니다. 그러나 - 당신의 마지막 코멘트를 읽은 후에, 나는 그것이 결국 아마도 최선의 방법이라고 생각하지 않습니다. – Chase

답변

2

OMS는 모든 피벗 테이블을 데이터 집합으로 캡처 할 수 있으므로 이러한 방식으로 표시된 모든 통계 결과를 데이터 집합으로 사용할 수 있습니다. 그러나이 경우 다른 접근법은 RANK 명령을 사용하는 것입니다. RANK를 사용하면 변수를 그룹화 할 수 있으므로 그룹 내에서 순위를 얻을 수 있으며 그룹 내에서 사 분위수와 백분위 수를 계산할 수 있습니다. 예 : RANK VARIABLES = 급여 (A) by jobcat 소수 /RANK/NTILES (4)/PERCENT. 그런 다음 FIRST 및 그룹 변수를 나누기로 집계하면 그룹별로 iqr을 계산할 사 분위수의 데이터 집합이 제공됩니다.

많은 방법으로 고양이를 피하십시오.

-Jon Peck

+0

몇 가지 간단한 실험을 바탕으로 내 문제를 실제로 빠르게 해결하는 것처럼 보이는이 똑똑한 대답에 대해 대단히 감사드립니다. – daroczig

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. 

이렇게 큰 데이터 세트로 시간이 걸리지 만 예상 할 수 있습니다. "OMS"에 대한 SPSS 도움말 파일을 검색하여 OMS 작동 방식의 예제 구문을 찾으십시오.


많은 그룹에 대해 IQR을 계산하려는 추가 조건이 주어지면 계속 진행할 수있는 몇 가지 방법이 있습니다. 하나는 분할 파일 명령을 사용하고 위의 주파수 명령을 다시 실행하는 것입니다.

또한 ctables 내에서 특정 백분위 수를 얻을 수 있습니다 (또한 원하는 모든 그룹화/중첩을 수행 할 수 있습니다). 잠재적으로 더 유용한 해결책은 현재 개별 파일을 저장하거나 (여전히로드 된 상태에서 특정 그룹의 전체 데이터 집합을 줄이는) 프로그램을 만드는 것입니다. 각 개별 파일에서 계산을 수행하고 데이터 집합으로 덤프합니다. 4 백만 레코드가있는 데이터 세트로 작업하는 것은 고통이며, 어쨌든 파일을 분할하는 경우에는 필요하지 않은 것처럼 보입니다. 이것은 매크로 명령을 통해 수행 할 수 있습니다.

+0

참고로 150 개의 변수 모두를 한 번에 실행하려고하면 메모리가 초과되었지만 하나의 변수 만 지정할 때는 그렇지 않았습니다. –

+0

대단히 고맙습니다. 새로운 데이터베이스에서 Descriptives를 저장하는 것이 중요하다고 생각합니다. 정말 유용하게 보입니다! 나의 유일한 문제는 break 변수로 수행하는 방법을 알아낼 수 없다는 것이다. (나는 이것으로 집계하고 싶다.) 그래서이 값들을 가지고 있지만 break 변수의 모든 카테고리 (약 2000 개의 카테고리)를 가진 데이터베이스를 얻으려면, . 주어진 카테고리에 대한 사례를 필터링하여 루프를 반복 (1에서 2000까지 반복) 할 수 있지만 일련의 파일이 생성됩니다. 당신의 대답을 향상시키는 방법에 대해 알고 있습니까? 다시 한번 감사드립니다, 당신은 분명히 upvote를받을 자격이 있습니다. – daroczig

+0

늦게 답장을 보내서 유감스럽게 생각합니다.이 방법을 테스트하기 위해 OMS를 사용하여 (다른 많은 것들과 함께) "재생"했습니다. OMS가 정말 멋지지만, 큰 파일을 정기적으로 나누는 것은 ** 정말 배가 고프다. 구문은 단 하나의 변수만으로 2 일 동안 실행된다. :) 그래서 나는 정말 빠른 것으로 보이는 @ JKP의 제안으로 갈 것이다. OMS/splitting과 비교하여, 체크 표시가 그곳으로 간다. 어쨌든 : 정말로 친절한 도움과 OMS에 대한 나의 관심을 표명 해 주셔서 대단히 * 감사합니다! – daroczig

관련 문제