탐색 요소 분석을 통해 R과 SPSS 간의 불일치 해석


14

저는 컴퓨터 공학 대학원생입니다. 나는 연구 프로젝트에 대한 탐색 적 요소 분석을 해왔다. 동료 (프로젝트를 이끌고있는)는 SPSS를 사용하지만 R을 사용하는 것을 선호합니다. 두 통계 패키지간에 큰 차이가있을 때까지는 문제가되지 않았습니다.

우리는 추출 방법으로 주축 인수 분해 를 사용하고 있습니다 (PCA와 요인 분석의 차이를 잘 알고 있으며 적어도 의도적으로는 PCA를 사용하지 않는다는 점에 유의하십시오 ). 내가 읽은 것에서 이것은 R 문서에 따르면 R의 "주축"방법과 SPSS의 "주축 팩토링"또는 "무가 중 최소 제곱"에 해당 합니다 . 우리는 비스듬한 회전 방법을 사용하고 있습니다 . 상관 요인을 기대하고 패턴 행렬을 해석하기 때문에 promax )을 사용하고 있습니다 .

R과 SPSS에서 두 절차를 실행하면 큰 차이가 있습니다. 패턴 매트릭스는 다른 로딩을 제공합니다. 이것은 가변 관계에 대해 거의 동일한 요인을 제공하지만, 대응하는 하중 사이에는 최대 0.15의 차이가 있으며, 이는 추출 방법의 다른 구현과 promax 회전에 의해 예상되는 것보다 더 많이 보입니다. 그러나 이것이 가장 놀라운 차이점은 아닙니다.

요인에 의해 설명 된 누적 분산은 SPSS 결과에서 약 40 %이고 R 결과에서 31 %입니다. 이것은 큰 차이이며, 동료가 R 대신 SPSS를 사용하기를 원했습니다. 이것에 아무런 문제가 없지만 큰 차이로 인해 우리가 무언가를 잘못 해석하고 있다고 생각하게 만드는 것은 문제입니다.

SPSS는 비가 중 최소 제곱 인수 분해를 실행할 때 다양한 유형의 설명 된 분산을보고합니다. 초기 고유 값에 의한 설명 분산의 비율은 40 % 인 반면, 추출 제곱 하중 (SSL)의 설명 분산의 비율은 33 %입니다. 이것은 초기 고유 값이 볼만한 숫자가 아니라고 생각하게합니다 (이것은 회전하기 전에 설명 된 차이라고 생각하지만 너무 크지는 않습니다). 더 혼란스러운 SPSS는 Rotation SSL도 보여 주지만 설명 된 분산의 백분율을 계산하지는 않습니다 (SPSS는 상관 요인이 있으면 총 분산을 찾기 위해 SSL을 추가 할 수 없다는 것을 의미합니다. 이는 내가 본 수학에 적합합니다). R의보고 된 SSL은이 중 어느 것과도 일치하지 않으며 R은 전체 분산의 31 %를 설명한다고 알려줍니다. R의 SSL은 회전 SSL과 가장 밀접하게 일치합니다. 원래 상관 행렬의 R 고유 값은 SPSS의 초기 고유 값과 일치합니다.

또한 다른 방법을 사용하여 놀았으며 SPSS의 ULS와 PAF가 R의 PA 방법과 가장 일치하는 것으로 보입니다.

내 구체적인 질문 :

  1. 요인 분석 구현과 함께 R과 SPSS 사이에 얼마나 큰 차이가 있습니까?
  2. SPSS의 제곱 하중 합계 중 초기 고유 값, 추출 또는 회전을 해석해야합니까?
  3. 내가 간과 한 다른 문제가 있습니까?

SPSS와 R에 대한 전화는 다음과 같습니다.

SPSS :

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT INITIAL KMO AIC EXTRACTION ROTATION
/FORMAT BLANK(.35)
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION PROMAX(4).

아르 자형:

library(psych)
fa.results <- fa(data, nfactors=6, rotate="promax",
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)

R을 사용하지 않아 확인할 수는 없지만 설명서에 오류가있는 것 같습니다. fm = "pa"는 / EXTRACTION PAF와 일치해야합니다. 또한 회전 알고리즘의 경미한 차이가 추출 방법의 차이와 섞일 수 있으므로 회전하기 전에 솔루션을 비교하십시오.
ttnphns

1
한번 봐 주셔서 감사합니다! 회전하기 전에 솔루션을 비교해 보겠습니다. 필자는 / EXTRACTION ULS와 / EXTRACTION PAF를 모두 시도했지만로드 차이가 거의 없지만 R "pa"방법과 거의 비슷하지 않다는 것을 언급해야합니다. 위에 / EXTRACTION ULS를 표시하는 이유는 다양한 SSL을 제공하는 명령이기 때문입니다.
Oliver

1
주축 방법과 비가 중 최소 제곱 방법은 유사한 결과를 제공 할 수 있지만 알고리즘 적으로 근본적으로 다릅니다. R과 SPSS의 동등성은 다음과 같다고 생각합니다 : "pa"= PAF, "minres"= ULS, "gls"= GLS, "ml"= ML
ttnphns

1
또한 결 측값 처리를 확인하십시오. SPSS 코드에서 이들을 쌍으로 삭제합니다. 당신은 R 코드-...?
ttnphns 2012 년

R의 사전 회전 SSL을 비교 한 결과 SPSS의 ULS 솔루션에있는 추출 SSL과 일치합니다 (불행히도 SPSS의 PAF 솔루션은 이러한 값을 제공하지 않았습니다). 저는 프로 맥스 로테이션이 범인이라고 생각합니다. SPSS가 Rotation SSL을 인쇄하는 방식입니다. R은 최종 SSL에 의해 설명 된 총 분산을 추정 할 수 있지만 SPSS는 그러한 추정이 적절하지 않다고 알려줍니다.
Oliver

답변:


21

우선, 회전하기 전에 솔루션을 보는 것이 좋습니다. SPSS에 구현 된 요인 분석은 여러 단계로 구성된 복잡한 절차이므로 이러한 각 단계의 결과를 비교하면 문제를 정확히 찾아 낼 수 있습니다.

구체적으로 당신은 실행할 수 있습니다

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT CORRELATION
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION NOROTATE.

SPSS가 요인 분석을 수행하는 데 사용하는 상관 매트릭스를 확인합니다. 그런 다음 R에서 다음을 실행하여 상관 관계 매트릭스를 직접 준비하십시오.

r <- cor(data)

결 측값 처리 방식의 불일치는이 단계에서 분명해야합니다. 상관 행렬이 동일한 지 확인한 후에는이를 fa 함수에 공급하고 분석을 다시 실행할 수 있습니다.

fa.results <- fa(r, nfactors=6, rotate="promax",
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)

SPSS 및 R에서 여전히 다른 결과를 얻는 경우 문제는 값 관련이 누락되지 않은 것입니다.

다음으로, 요인 분석 / 추출 방법 자체의 결과를 비교할 수 있습니다.

FACTOR
/VARIABLES <variables>
/MISSING PAIRWISE
/ANALYSIS <variables>
/PRINT EXTRACTION
/FORMAT BLANK(.35)
/CRITERIA FACTORS(6) ITERATE(25)
/EXTRACTION ULS
/CRITERIA ITERATE(25)
/ROTATION NOROTATE.

fa.results <- fa(r, nfactors=6, rotate="none", 
scores=TRUE, fm="pa", oblique.scores=FALSE, max.iter=25)

다시, 인자 행렬 / 커뮤니티 / 제곱 하중의 합계를 비교하십시오. 여기에는 약간의 차이가 있지만 설명하는 크기와는 다릅니다. 이 모든 것이 당신에게 무슨 일이 일어나고 있는지 더 명확하게 알려줄 것입니다.

이제 세 가지 질문에 직접 답하십시오.

  1. 내 경험상 때로는 다른 용어를 알아 내고 매개 변수를 다루는 데 시간을 보낸 후 매우 비슷한 결과를 얻을 수 있습니다. SPSS와 R 모두에서 요인 분석을 수행하는 경우가 많았으며 (일반적으로 R에서 작업 한 다음 SPSS에서 분석을 재현하여 동료와 공유) 항상 동일한 결과를 얻었습니다. 그러므로 나는 일반적으로 하지 않을 것이다 큰 차이를 기대 문제가 데이터 세트에 특정한 것일 수 있습니다. 그러나 내가 누워있는 데이터 세트 (Likert 척도)에서 제공 한 명령을 신속하게 시도했지만 차이점은 실제로 익숙한 것보다 크지 만 설명 한 것보다 크지 않았습니다. (이 게임에 더 많은 시간을 할애하면 답변을 업데이트 할 수 있습니다.)
  2. 대부분의 경우 사람들은 회전 후 제곱 하중의 합을 각 요인에 의해 "분산 비율"로 해석하지만 경사 회전 후에는 의미가 없습니다 ( 정신 및 SPSS 보고서에서만 전혀보고되지 않는 이유) 이 경우 고유 값 – 출력에 약간의 주석이 있습니다). 초기 고유 값은 요인 추출 전에 계산됩니다. 분명히, 그들은 당신의 요인에 의해 설명 된 분산의 비율에 대해 아무 것도 말하지 않으며 실제로“제곱 하중의 합”도 아닙니다 (보존 할 요인의 수를 결정하는 데 종종 사용됩니다). 그러나 SPSS“제곱 하중의 추출 합계”는 psych가 제공 한“SS 하중”과 일치해야합니다 .
  3. 이것은이 단계에서 거친 추측이지만 요인 추출 절차가 25 반복으로 수렴되는지 확인 했습니까? 회전이 수렴하지 않으면 SPSS는 패턴 / 구조 행렬을 출력하지 않으며이를 놓칠 수는 없지만 추출이 수렴하지 않으면 마지막 요소 행렬이 표시되고 SPSS는 행복하게 회전을 계속합니다. 그러나“a. 6 가지 요소를 추출하려고했습니다. 25 회 이상의 반복이 필요합니다. (수렴 = XXX). 추출이 종료되었습니다.” 수렴 값이 작은 경우 (.005와 같은 것, 기본 중지 조건은 ".0001 미만"), 여전히보고하는 불일치를 설명하지는 않지만 실제로 큰 경우 데이터에 대한 병리가 있습니다.

2
아주 좋은 대답입니다. 필자는 가능한 경우 저자가 문제가있는 위치를 확인하기 위해 샘플 상관 관계 매트릭스를 제공 할 것을 제안하려고했습니다. 퍼지하기가 너무 어렵거나 데이터를 공유하기에 충분하지 않아야합니다. 또한 문제를 부분적으로 식별하는 동일한 상관 행렬로 직접 시작할 때 문제를 재현 할 수없는 경우.
Andy W

감사합니다. 환상적인 답변입니다. SPSS 시스템으로 돌아 오면이 단계를 거칩니다. # 3에 대한 응답으로 솔루션은 9 회 반복으로 수렴하지만 향후 수행 할 분석에 대해서는 염두에 두어야합니다. 차이점이 일반적으로 내가 설명한 것만 큼 크지 않다는 것을 아는 것이 매우 도움이되었습니다.
Oliver

다른 누군가가 궁금해하는 경우 faR 의 기능은 psych패키지 에서 온 것 입니다. factanal기본 패키지 의 기능은 비슷하게 수행되지만 psych어쨌든 다른 목적으로 사용하는 것이 좋습니다. 실제로 이것은 Likert 데이터이므로 psych패키지를 fa.poly대신 사용하는 것이 좋습니다 . 도움말 문서를 참조하십시오 .
Nick Stauner

6

최근에 SPSS와 R (Psython 패키지 포함) 간의 대부분의 요인 분석 불일치가 각 프로그램에서 데이터가 누락 목록으로 처리되고 상관 행렬이 각각 동일하게 표시되며 경사 회전이 사용되지 않을 때 정리됩니다.

남은 불일치 중 하나는 추출 후 고유 값을 나타내는 scree plot에 나타나는 일련의 값에 있습니다. R의 "scree (cor (mydata))"에서 이러한 "인자"는 SPSS의 변형 설명 표의 "제곱 하중의 추출 합계"에 나열된 것과 일치하지 않습니다. R scree plot의 "components"는 SPSS의 scree plot과 일치하며 Variant Explained 테이블의 "Initial Eigenvalues"와도 일치합니다.

또한 각 요인에 의해 설명 된 "비례 변수"는 R에서 때때로 (주어진 요인에 대한 비율) / (모든 요인에 의해 설명 된 양)으로보고되는 반면, 다른 경우에는 (비율) 주어진 요인에 대해) (분석의 항목 수). 따라서 전자를 얻는 경우 일치하지는 않지만 "SSD의 추출 합계 ... 변형의 %"에서 SPSS가보고 한 내용에 비례하고 도출 할 수 있습니다.

그러나 각 프로그램에서 oblimin 회전을 도입하면 항목로드 또는 요소 차이에 따라 상당한 불일치가 발생하여 해결할 수 없었습니다.


1

R의 기본 회전 방법은 오 블리 민이므로 차이가 발생할 수 있습니다. 테스트로 SPSS와 R에서 PAF / oblimin을 실행하면 거의 동일한 결과를 얻을 수 있습니다.


0

패턴 로딩의 차이를 일으키는 원인을 모르지만 설명 된 분산의 % 차이는 다음과 같은 것으로 가정합니다. 주요 성분 분석 결과. 두 번째 부분은 비 회전 계수 분석 결과에 대한 결과와 회전 후 세 번째 결과 (사용 된 경우)를 보여줍니다. -fa 기능 (또는보다 정확하게는 인쇄 방법)이 경사 요인에 대해 SSL을 잘못 계산한다는 사실. 요인으로 설명 된 총 분산의 %를 얻으려면 요인으로 제곱 된 구조 하중의 합을 계산하고이를 변수의 수로 나누어야합니다. 그러나 모든 요인에 의해 설명 된 분산의 %를 얻기 위해 이들을 합산 할 수는 없습니다 (경사 회전의 경우). 이것을 얻으려면


@AlesZiberna 사이트에 오신 것을 환영합니다. 우리는 질문 및 답변의 형태로 통계 정보의 영구 저장소를 구축하려고합니다. 우리가 걱정하는 것은 링크 로트입니다. 링크가 죽었을 때 링크에서 정보의 개요를 제공 할 수 있습니까? 따라서 독자가 정보를 추구 할 것인지 결정할 수 있습니까?
gung-모니 티 복원

0

이 답변은 위의 답변에 추가됩니다. Gala가 자신의 답변에서 제안한 것처럼 먼저 R이 제공하는 솔루션 (예 : 정신의 fa)과 SPSS가 회전 전에 다른지 여부를 결정해야합니다. 동일한 경우 각 프로그램의 회전 설정을 확인하십시오. SPSS의 경우 FACTOR의 참조 설명서 항목에서 모든 설정을 찾을 수 있습니다.

찾아야 할 중요한 설정 중 하나는 Kaiser 정규화 입니다. 기본적으로 SPSS는 회전 중에 Kaiser 정규화를 수행하지만 'fa'와 같은 일부 R 기능은 그렇지 않습니다. / CRITERIA = NOKAISER / KAISER를 지정하여 SPSS에서 해당 설정을 제어하여 각 프로그램의 결과간에 불일치가 없는지 확인할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.