단방향 분석에서 데이터 추출단방향 분석에서 p-값을 가져와 분석에 사용되는 테이블의 새 열에 드롭하는 스크립트를 만들려고 합니다.
JMP 13 스크립팅 가이드를 살펴보니 690페이지에 "Extract Values from an Analysis into a Report"가 있는데 제가 원하는 것 같습니다. 그러나 이를 가이드로 따르면 oneway 및 anovas에서는 작동하지 않는 것 같습니다...
다음은 코드 문제를 해결하려고 시도하는 동안 bigclass 샘플 데이터 세트와 함께 작동하도록 수정한 나열된 스크립트입니다.
Deletesymbols();
dt=Open("$SAMPLE_DATA\Big Class.jmp");
//creates a oneway analysis of big class similar how my data will be interpreted
anova=Oneway(
Y(:height),
X(:age),
With Control(1, {12}),
Means(1), Mean Diamonds(1), Comparison Circles(1),
By(:sex)
);
anova<<show tree structure;
/*
Female LDS threshold results are in OultineBox(9), Levels (age) is StringColBox(5), pValues are NumberColBox(15)
Male LDS threshold results are in OultineBox(18), Levels (age) is StringColBox(10), pValues are NumberColBox(30)
*/
// Should create a report that I can use to extract data from the anova analysis based off the original script
report(anova) [Outline Box(9)] << Close( 0 ); <BR />report(anova) [Outline Box(18)] << Close( 0 );
reportanova = anova << Report;
// Should extract the level (age) and pvalues for females
agef = reportanova[Outline Box(9)][String Col Box(5)] << Getaslist;
pvalsf = reportanova[Outline Box(9)][NumberColBox(15)] << Getaslist;
// Should extract the level (age) pvalues for males
agem = reportanova[Outline Box(18)][String Col Box(10)] << Getaslist;
pvalsm = reportanova[Outline Box(18)][NumberColBox(30)] << Getaslist;
//column creation to recieve extracted data
dt<<new column("p-value",Numeric, "Continuous");
//should add the collected p-value to the data table in the new column, matched to the correct row based on sex and age <FONT color="#FF0000">(untested)</FONT>.
For Each Row( p-value =
match(sex,
"f",match(age,
show(agef[1]),show(pvalsf[1]),
show(agef[2]),show(pvalsf[2]),
show(agef[3]),show(pvalsf[3]),
show(agef[4]),show(pvalsf[4]),
show(agef[5]),show(pvalsf[5]),
show(agef[6]),show(pvalsf[6]),
),
"m",match(age,
show(agem[1]),show(pvalsm[1]),
show(agem[2]),show(pvalsm[2]),
show(agem[3]),show(pvalsm[3]),
show(agem[4]),show(pvalsm[4]),
show(agem[5]),show(pvalsm[5]),
show(agem[6]),show(pvalsm[6]),
),
);*/
그러나 포함된 로그에는 anova를 보고서에 넣을 때 오류가 있습니다.
Send는 'Send' 액세스 또는 평가에서 스크립터블 개체를 예상합니다. , Report( anova )[Outline Box( 9 )] << /*###*/Close( 0 ) /*###*/
디버거는 같은 위치에서 실패하고 다음을 변수로 제공합니다.
변하기 쉬운 값
anova {일방통행[], 일방 통행[]}
dt 데이터 테이블("큰 클래스")
reportanova {DisplayBox[개요 상자], DisplayBox[개요 상자]}
따라서 Bivariate에서 작동하는 것이 Oneway로 확장되지 않는다고 추측할 수 있습니다.변수/명령/무언가 불일치인 경우를 대비하여 anova를 anov로 줄여서 변수도 변경했지만 계속 실패합니다.있었다 이전 게시물 2011년부터 샘플 코드가 있었지만 단어로 정리되지 않는 글꼴 정보, jmp 스크립트 창 또는 실제로 읽을 수 있도록 html 파일로 저장하는 등 왜곡되어 있었습니다...
이것은 올바른 행에 p-값을 추가하는 코드가 작동하는지 확인하기 전에 해결해야 합니다...
감사해요.
Re: 단방향 분석에서 데이터 추출성별 및 연령 작업과 일치하는 테이블에 값을 다시 추가하는 방법을 알고 싶은 사람이 있습니까?
//creates a new column
dt<<NEW column=""></NEW>
이 작업을 수행하는 더 쉽고 깔끔한 방법이 있을 수 있지만 작동합니다. 중첩된 if 문과 for 루프는 원래 나이의 데이터 유형이 '숫자'로 불일치하고 "LSD 임계값 매트릭스"의 목록이 '문자'라는 것을 깨닫자마자 작동했습니다.
Re: 단방향 분석에서 데이터 추출그만한 가치가 있기 때문에 왜곡된 부분을 정리했습니다. 우편 2011년부터.
Re: 단방향 분석에서 데이터 추출우리가 '모범 사례'로 가르치는 것에 대한 한 가지 강력한 권장 사항은 다음과 같습니다. 절대 지수 디스플레이 트리 다이어그램에 표시됩니다. 이런 식으로 올바른 첨자를 쓸 수 있는데 왜 안 됩니까?이 방법은 작성, 읽기 및 유지 관리가 어렵고 깨지기 쉽기 때문입니다. 사용 상대 인덱싱 내 솔루션에 설명된 대로. 쓰기, 읽기(자체 문서화?) 및 유지 관리가 더 쉽습니다. 또한 훨씬 덜 부서지기 쉽습니다. 이기적이고 자신만 생각하세요!
JMP도 변경된다는 점을 기억하십시오. 버전이 보고서에 새 섹션을 도입하거나 섹션을 이동하고, 플랫폼 기본 설정을 변경하고, 다른 사람이 다른 기본 설정으로 스크립트를 사용하는 등의 작업을 수행합니다. 방어적인 스크립팅 그러한 변화를 예상합니다.상대 인덱스는 이에 대해 강력합니다.
어떤 사람들은 이 선택이 단지 스타일의 문제라고 생각합니다. 나는 그들이 결코 변화로 인해 고통받지 않기를 바랍니다.
(그리고 Send To Report 인터프리터 지시어 사용을 시작하게 하지 마십시오...)
Re: 단방향 분석에서 데이터 추출작동합니다. 감사합니다!
따라서 여기를 찾는 다른 사람을 위해... 코드를 복사하여 붙여넣는 것이 아니라 이해하고 있는지 확인하기 위해 다음을 수행합니다.
f ages <SPAN class="token operator">=</SPAN> anova rpt<SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token string">"LSD Threshold Matrix"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token function">StringColBox</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Get</SPAN><SPAN class="token punctuation">;</SPAN>
oneway의 'By()' 옵션은 보고서 내에 두 개의 개별 인스턴스를 생성합니다. 이것이 '<
anova rpt<SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN>
oneway 생성 시 'By(:sex)'에서 생성된 첫 번째 그룹인 'F'를 가리키며, 'anova rpt[2]'는 그룹 2 'M'을 가리킨다.티 스크립팅 가이드의 원래 스크립트는 간단한 이변량일 때 보고서에 처리할 섹션이 하나뿐이었기 때문에 필요하지 않았습니까?
그런 다음 세그먼트:
<SPAN class="token punctuation">[</SPAN><SPAN class="token string">"LSD Threshold Matrix"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token function">StringColBox</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">]</SPAN>
jmp는 보고서의 "LSD 임계값 매트릭스" 섹션으로 바로 건너뛰고 번호 매기기 체계를 재설정하므로 문자열 열이 이제 ...Box(1)에 의해 참조되지만 전체 트리 구조의 경우 ... 박스(5).이 세 가지 모두 트리 구조에서 참조된 여성 연령 목록을 가져오는 동등한 방법입니다.
f ages <SPAN class="token operator">=</SPAN> anova rpt<SPAN class="token punctuation">[</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token string">"LSD Threshold Matrix"</SPAN><SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">[</SPAN><SPAN class="token function">StringColBox</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Get</SPAN><SPAN class="token punctuation">;<BR />f ages = anova rpt[1][Outline Box(9)][StringColBox(1)] << Get;<BR />f ages = anova rpt[1][StringColBox(5)] << Get;<BR /></SPAN>
그런 다음 한 방향에서 By(:sex)를 주석 처리하면 트리 구조가 단순화되고 다음과 같이 됩니다.
ages <SPAN class="token operator">=</SPAN> anova rpt[1]<SPAN class="token punctuation">[</SPAN><SPAN class="token function">StringColBox</SPAN><SPAN class="token punctuation">(5</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">]</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Get</SPAN><SPAN class="token punctuation">;<BR />ages = anova rpt[StringColBox(5)] << Get;<BR /></SPAN>
[1]이 이해되고 [2]가 더 이상 옵션이 아니므로 지정할 필요가 없기 때문에 둘 다 이제 작동합니다.
Re: 단방향 분석에서 데이터 추출모든 JMP 플랫폼(보고서)에 적용되는 일반적인 규칙과 구문이 있지만 구성(즉, 특정 중첩 표시 상자)은 물론 다양합니다. 다음 방법을 시도해 보십시오.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
//creates a oneway analysis of big class similar how my data will be interpreted
anova = dt << Oneway(
Y( :height ),
X( :age ),
With Control( 1, {12} ),
Means( 1 ),
Mean Diamonds( 1 ),
Comparison Circles( 1 ),
By( :sex )
);
anova rpt = anova << Report;
f ages = anova rpt[1]["LSD Threshold Matrix"][StringColBox(1)] << Get;
f pVal = anova rpt[1]["LSD Threshold Matrix"][NumberColBox(2)] << Get;
m ages = anova rpt[2]["LSD Threshold Matrix"][StringColBox(1)] << Get;
m pVal = anova rpt[2]["LSD Threshold Matrix"][NumberColBox(2)] << Get;