안녕하세요:
공통요인 분석(또는 주성분 분석)을 수행하기 위해 JMP에 상관행렬(또는 공분산행렬)을 입력하는 방법을 알고 싶습니다. 문서나 어느 곳에서도 예제를 찾을 수 없습니다.
누군가가 이전에 JMP에서 그런 일을 했을 것이라고 확신합니다.
솔루션을 게시할 수 있나요?
감사해요
나라야난
거의 20개월 전에 질문하신 내용에 대한 답변이 여기에 없습니다. 저도 같은 질문이 있어서 답변을 해주신 분 계신가요? 간단한 주성분 분석에 제가 직접 계산한 상관관계 및 공분산 행렬을 입력하고 싶은데 방법을 찾을 수가 없네요.
감사해요.
남자 이름
안녕하세요 @MaxiumumFactors 및 @AN1 ,
JMP 스크립팅 인덱스를 살펴보며 직접 행렬을 입력하는 방법이 있는지 확인해 봤는데, JMP에서는 지원하지 않고 생성된 행렬을 사용해야 하는 것 같습니다. 혹시 이 기능이 필요하시다면 위시리스트 에 글을 추가해 보세요.
감사해요,
벤
저는 JMP Japan의 수석 테스터인 유스케 오노입니다. 영어가 서툴러서 미리 양해 부탁드립니다.
JMP Pro가 있는 경우 구조 방정식 모델 플랫폼은 공분산 행렬(또는 상관 행렬)과 평균 벡터를 입력으로 지원하고 확인적 요인 분석(CFA) 및 기타 SEM을 적합할 수 있습니다.
JMP 스크립팅 언어(JSL)의 고유 함수는 대칭 행렬의 고유값 분해를 수행할 수 있습니다. 주성분 분석(PCA)은 고유값 분해를 통해 수행되므로, 고유 함수를 PCA에 사용할 수 있습니다.
최대우도추정법을 이용한 요인분석은 더 복잡합니다. 최대 유사식품 알고리즘을 프로그래밍하는 것도 어렵습니다. 따라서 여전히 복잡하지만 다음 방법을 추천합니다.
촐레스키 함수를 사용하면 공분산 행렬과 평균 벡터가 정확히 동일한 더미 데이터를 시뮬레이션할 수 있습니다(공분산 행렬이 양의 준정부호일 경우). 공분산 행렬이 저것들 이고 평균 벡터가 평균 일 경우, 아래와 같이 데이터를 생성할 수 있습니다.
z = J(n, NCol(cov), Random Normal());
For(i = 1, i <= NCol(z), i++,
z[0,i] = (z[0,i] - Mean(z[0,i]))
);
c = Covariance(z);
invrc = Inv(Cholesky(c))`;
rcov = Cholesky(cov);
z = J(n,1,1)*mean` + z * invrc * rcov`;
이 더미 데이터에 대한 일부 결과는 무의미합니다. 예를 들어, PCA의 점수 플롯은 난수 시드에 따라 달라집니다. 공분산 행렬과 평균 벡터와 관련된 결과만 의미가 있습니다. 예를 들어, 최대값, 최소값, 그리고 Spearman/Kendall 상관관계는 평균과 공분산 이외의 다른 정보에 의존하기 때문에 무의미합니다.
다음 코드는 예시입니다. JSL에 익숙하지 않다면 이 "더미 데이터 방식"을 이해하고 프로그래밍하는 것이 어려울 수 있습니다. 게다가 제 영어 설명은 이해하기 쉽지 않습니다. 또한 이 계산이 평균 벡터와 원하는 공분산 행렬을 갖는 더미 데이터를 생성하는 이유에 대한 수학적 설명은 생략하겠습니다. 궁금한 점이 있으면 언제든지 답변해 주세요.
Names Default To Here(1);
/////////// This is a sample data //////////////////////////////////////
New Table( "Test",
New Column( "Mean", Values( [100, 50, 30, 20] )),
New Column( "Stddev", Values( [3, 4, 2.5, 1.8] )),
New Column( "X1", Values( [1, 0.8, 0.6, 0.4])),
New Column( "X2", Values( [0.8, 1, 0.5, 0.2] )),
New Column( "X3", Values( [0.6, 0.5, 1, 0.2] )),
New Column( "X4", Values( [0.4, 0.2, 0.2, 1] ))
);
///////////////////////////// From Here ///////////////////////////////
mean colname = "Mean"; /* column name for means */
stddev colname = "Stddev"; /* column name for standard deviations */
corr colnames = {"X1", "X2", "X3", "X4"};
n = 100; /* Specify the sample size */
dt = Current Data Table();
mean = Column(dt, mean colname) << Get As Matrix; /* Read your mean vector */
sd = Column(dt, stddev colname) << Get As Matrix; /* Read your standard deviations */
r = dt <
<GET as="" matrix=""></GET>
<DIV>JMP의 독보적인 장점 중 하나는 상호작용성입니다. 예를 들어, PCA 플랫폼의 점수 플롯에서 이상치를 찾을 수 있습니다. 평균, 표준편차, 상관관계와 같은 요약된 데이터에서 시작하면 데이터에 대한 일부 정보를 잃게 됩니다. 저 역시 교과서에서 일부 분석을 시도할 때 불편함을 느낍니다. 하지만 최근 들어 더 많은 교과서가 요약된 데이터가 아닌 샘플 원시 데이터 세트를 제공하는 것 같습니다. 어쨌든, PCA 및 요인 분석 플랫폼에서도 JMP Pro의 SEM 플랫폼처럼 요약된 데이터 입력을 지원해 주셨으면 합니다. 위시리스트( <A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/51054" target="_blank">@Ben_BarrIngh 님</A> 의 말씀처럼)에 요청을 남겨주세요.</DIV>