SAS Institute Japan 주식회사 JMP 재팬 사업부에서 시니어 테스터를 하고 있습니다 오노라고 합니다.
저쪽에서 착각하고 있어 빗나갈지도 모릅니다만, 이하에, 현 단계에서 나쪽으로 개인적으로 생각해낸 점을 말씀드립니다.
■ 특히 1번째의 질문에 대해서는, <결과가 매회, 다르다>라고 하는 것이므로, 뭔가 이상한 일이 일어나고 있는 것이 아닐까라고 나는 생각합니다. (덧붙여 연속 척도의 설명 변수가 1개만의 「로지스틱 플롯」에서는, Y 좌표를 결정하는데 난수가 사용되고 있습니다.그러나, 적어도 JMP15 이후에서는, 고정의 난수 시드치가 사용되고 있기 때문에, 실행할 때마다 플롯의 외형이 다르다고 하는 것은 없을 것입니다.또, 로지스틱 회귀의 그 외 하지 않고, 아래에서 설명하는 2개의 상황 이외이면, 한편, 같은 데이터로 한편 같은 설정이면, 수리적인 이유에 의해, 어느 통계 소프트웨어에서도, 적어도 최우 추정의 점 추정치는 같아야 합니다. 또, 스크립트를 이용해 분석을 재실행해 봐도, 역시 매회, 수치 결과가 다른 것이 되는지 확인해 주지 않겠습니까?
■매우 일반적으로는, JMP의 「모델의 적합」에서는, 이하의 점에 주의가 필요할까 생각합니다.
포인트1 : 만약 질문이 라는 것이라면 JMP에서는 효과 코딩(effect coding)이라는 방법이 사용되고 있다는 점에 주의한다.
포인트2 : JMP의 결과(의 일부)는, 열에 설정된 「척도」에 의해 바뀌는 점에 주의한다.
포인트3 : JMP의 결과(의 일부)는, 「값의 표시 순서」에 의해서도 바뀌는 점에 주의한다.
포인트4 : 스크립트를 활용하면 마우스 조작을 하지 않고 동일한 분석을 재실행할 수 있다.
〈자세한 내용〉
이진, 순서, 명의 응답 변수에 대한 로지스틱 회귀 분석은 다음 두 가지 경우를 제외하고 전역 솔루션이 하나만 존재합니다.
(1) 설명 변수 사이에 1 차 독립이 존재하는 경우
예를 들어, X1, X2, X3이라는 세 변수 사이에 X1 + X2 = X3과 같은 관계가 있거나 샘플 크기가 설명 변수 수보다 적은 경우입니다.
(2) 분리(separation)가 존재하는 경우
이 경우, 파라미터 추정치가 +∞ 혹은 -∞가 됩니다. 즉, 파라미터 추정치가 존재하지 않습니다.
반대로 이러한 2개 이외의 상황에서는, 2치·순서·명의의 응답 변수에 대한 로지스틱 회귀 분석은, 일의적인 해가 존재합니다. 따라서, 데이터 및 모델 설정이 같으면, 상기의 2개 이외의 상황이면, 비록 다른 통계 소프트웨어를 사용하고 있었다고 해도(*1), 수치 오차의 범위에서, 적어도 점 추정치 얻어지는 점 추정치)는 같아야 하고 같아야 합니다.또, 적어도 JMP의 로지스틱 회귀 분석은 최적화의 과정에서 난수를 이용하고 있지 않습니다(*2) 때문에, 그 점에서도, 데이터와 설정이 같으면, 한편, 같은 버젼의 JMP이면, 정확히 같아야 합니다(*3)
(*1) 다만, 다른 소프트웨어로 「로지스틱」을 실시하는 루틴에서도, 통상의 로지스틱 회귀 분석이 아니고, L1 노름이나 L2 노름의 벌칙 첨부 우도를 디폴트로 사용하는 것도 있습니다. 한 설명 변수에 대한 코딩의 차이로, 파라미터 추정치는 다른 경우가 있습니다.또한, 최대 우도 추정에 대한 검정에는, Wald 검정·우도비 검정·스코어 검정의 3 종류가 있어, 어느 검정을 채용하고 있는지에 따라서, 검정이나 신뢰 구간은 다릅니다.
(*2) 다만, 연속 척도의 설명 변수가 1개만의 경우에 그려지는 「로지스틱 플롯」에서는, Y 좌표를 결정하기 위해서 난수가 사용되고 있습니다.그러나, 적어도 JMP 버전 15 이후에서는, 고정의 난수 시드치가 사용되고 있기 (위해)때문에,
(*3) 그러나 데이터가 처리 시간에 따라 효과에 대해 기본적으로 실행되는 검정이 우도비 검정이 되거나 Wald 검정이 됩니다.
그러나, 3개 정도 주의해 주었으면 하는 점(함정)이 있습니다((a)~(c)) .
(a) JMP에서는, 데이터의 수치가 같더라도, 데이터 테이블에 설정된 척도(연속 척도·순서 척도·명의 척도)에 의해 그래프나 통계 분석의 결과는 바뀝니다.
(b) JMP에서 설명 변수에 대한 코딩은 (특히 명의 척도에 대한 코딩에서는) 제조업이나 공업 통계학에서 잘 채용되고 있는 방법이 채용되고 있습니다.
남성 1
남성 1
여성 -1
여성 -1
여성 -1
또는,
남성 -1
남성 -1
여성 1
여성 1
여성 1
또, 3치의 명의 척도의 경우에는 예를 들면 다음과 같이 코딩됩니다.
에히메 1 0
에히메 1 0
카가와 0 1
도쿠시마 -1 -1
도쿠시마 -1 -1
도쿠시마 -1 -1
(명의 척도에 대해 이러한 효과 코딩을 실시했을 경우, 파라미터 추정치는, 「중간적인 설정」으로부터의 어긋남을 나타냅니다.제조업이나 공업 통계학에 있어서는, 명의 척도의 변수라도 원래는 연속 척도의 것이 많아, 현재의 공정에서의 설정으로부터의 어긋남을 문제로 하는 것이 많기 때문에, 이러한 코딩이 자주 사용되고 있다)
순서 척도의 설명 변수에 대해서는 또 다른 코딩이 사용되고 있습니다.
(c) 데이터를 정렬했을 때 마지막으로 오는 수준이 (명의 척도의 코딩으로) "-1"이 됩니다.
(b)와 (c)에서의 차이에 의해, 파라미터 추정치는 바뀝니다. 그러나, (b)와 (c)에서의 설정이 달라도, 데이터 전체의 적합도(「모델 전체의 검정」・「맞춤의 상세」・「맞추기의 나쁜(LOF)」)는 변하지 않습니다.
JMP에서는 "스크립트"또는 "JMP 스크립팅 언어 (JMP Scripting Language; JSL) 이라고 불리는 것에 분석 처리를 저장할 수 있습니다. [스크립트 저장]에서 데이터 테이블에 저장하려면 [데이터 테이블로]를 선택합니다.
(특히 JMP18에서는 "워크플로 빌더"라는 기능이 추가되어 보다 광범위한 마우스 조작을 기록할 수 있게 되었습니다.)
■2
Somers의 D도, 소위 「부의 상관계수」가 있는 경우에는(Pearson이나 Kendall의 상관계수가 부가 되도록) 부가 됩니다.
dt1 = New Table("Test1",
New Column("X", Ordinal, Values([1,1,1,2,2,2,3,3,3])),
New Column("Y", Ordinal, Values([1,2,3,1,2,3,1,2,3])),
New Column("度数", Values([9,8,7, 6,5,2, 4,3,1]))
);
dt1 << Contingency(
Y( :Y ),X( :X ), Freq( :度数 ),
Measures of Association( 1 )
);
이 스크립트를 실행하려면 먼저 JMP 풀다운 메뉴에서 파일 > 새로 만들기 > JSL 스크립트(Windows 버전 JMP18의 경우)를 선택합니다. 그런 다음 호출된 스크립트 창에서 위 스크립트를 복사합니다.
위의 ■1에 있어서의 (c)와도 관계합니다만, 이 결과는 데이터의 순서에 따라 바뀝니다 아무것도 하지 않는 디폴트의 상태이면, 데이터를 재정렬한 순서(만약 알파벳이면 A, B, C순, 숫자이면 1, 2, 3순)로 「작은 것」과 「큰 것」이 정의됩니다.
이 순서는 열 속성의 값 표시 순서에서 변경할 수 있습니다. (꽤 오래된 버전에서는이 [값 표시 순서]는 다른 옵션 이름입니다.)
(1) 데이터 테이블에서 열의 열 머리글을 마우스 오른쪽 버튼으로 클릭하고 [열 정보]를 선택합니다.
(2) [열 속성] 콤보 상자를 클릭하고 [값 표시 순서]를 선택합니다.
(3) 값이 작은 순서에서 큰 순서로 나열되지 않은 경우 값을 선택한 후 위아래 화살표 (↑ 또는 ↓)로 순서를 변경합니다.
(4) 표시 순서를 변경 한 후 화면 오른쪽 상단의 [OK] 버튼을 클릭하여 열 정보 창을 닫습니다.
예를 들어, 다음은 데이터의 수치 자체는 위의 데이터와 정확히 동일하지만 값의 표시 순서가 다르기 때문에 (X 변수에서 '3'이 가장 작고 '1'이 가장 큰 것으로 정의하고 있습니다) 위의 결과와 달리 Somers의 D와 Kendall의 τb가 양수입니다. (아래 스크립트는 현재 JMP 18에서 작성한 것입니다. 이전 버전에서는 예상대로 작동하지 않을 수 있습니다.)
dt2 = New Table( "Test2",
New Column( "X", "Ordinal",
Set Property( "Value Order", {Custom Order( {3, 2, 1} )} ),
Values( [1, 1, 1, 2, 2, 2, 3, 3, 3] )
),
New Column( "Y","Ordinal",
Set Property( "Value Order", {Custom Order( {1, 2, 3} )} ),
Set Values( [1, 2, 3, 1, 2, 3, 1, 2, 3] )
),
New Column( "度数",
Set Values( [9, 8, 7, 6, 5, 2, 4, 3, 1] )
)
);
dt2 << Contingency(
Y( :Y ),X( :X ), Freq( :度数 ),
Measures of Association( 1 )
);
Somers의 D는 음수가 될 수 있습니다 (최소값은 -1입니다).
또한 잘못된 분석이 있는지 확인하려면 보고서의 분할 표를 살펴보고 값이 작고 큰 쪽으로 정렬되었는지 확인하십시오. 내가 생각했던 것처럼 나란히 보이지 않으면 데이터 테이블에서 열 속성의 값 표시 순서에서 표시 순서를 변경해야합니다.