AIC를 새 데이터 테이블로 내보내는 스크립트<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Fit Parametric Survival 플랫폼에서 여러 모델에 대한 AIC 결과를 비교하고 있습니다. 이 시점에서 여러 창을 생성하는 모든 모델을 실행하는 스크립트가 있고 AIC 및 기타 출력을 Excel 파일에 하나씩 복사/붙여넣기합니다. 오늘은 말할 필요도 없이 이것은 시간 소모적이고 낭비적인 과정입니다. 저는 JSL의 초보자입니다. 여러 보고서 창에서 AIC 및 기타 정보를 추출하여 단일 데이터 창에 저장하는 자동화된 프로세스를 만드는 데 도움을 줄 수 있는 사람이 있습니까? 제가 평가하고 있는 추가 정보는 매개변수 수렴, 사용된 관찰, 중도절단 및 무중단 값의 수입니다.
도움을 주셔서 감사합니다!
VBA 매크로를 사용하여 데이터를 JMP로 가져오고 JMP 결과를 Weibull 분석의 Excel 시트로 다시 반환안녕 얘들아
먼저 스크립팅 결과를 공유해 주셔서 감사합니다. 덕분에 데이터 쿼리 프로세스를 자동화할 수 있었습니다. VBA-Macro Excel을 사용하여 테이블을 JMP로 복사하여 Weibull 분석을 수행하고 Scale & Shape 값을 얻고 내 VBA -Macro Excel 파일에 복사합니다. 아래는 제가 사용한 코드입니다. 다른 분들에게도 도움이 되기를 바랍니다.
VBA-매크로 엑셀.
하위 JMP()
앱을 JMP.Application으로 흐리게 표시
문서를 JMP.Document로 흐리게 표시
앱 설정 = CreateObject("JMP.Application")
app.Visible = 참
문서 설정 = app.OpenDocument("C:\Users\ABC\Desktop\WS.jsl")
엔드 서브
JSL 스크립트(WS.jsl 형식으로 저장됨)
//! <<<아래의 JSL 스크립트를 자동으로 실행하려는 경우 JSL 파일의 첫 번째 줄에 있어야 합니다>>>.
dt = Open( "C:\Users\ABC\Desktop\Book1.xlsm" ); <<< JSL은 Excel 파일을 JMP 데이터 테이블로 열어 아래의 Weibull 분석을 실행합니다.>>>
fm = 수명 분포(
Y( :이름( "TTF,시간" ) ),
검열( :Censor ),
검열 코드( 1 ),
주파수( :Freq ),
<<맞는 와이블,
신뢰구간법(우도),
<<척도 설정( 비모수적 ),
<<플롯 억제( 비모수적 ),
인터벌형(동시),
<<스크립트 설정(
{확률 보고서( 프로파일러( 1, 신뢰 구간( 1 ), 용어 값( 이름( "TTF,Hr" )(4846.6174375, 잠금( 0 ), 표시( 1 )) ) ) ),
Weibull 분포(프로파일러( 1, 신뢰 구간( 1 ), 용어 값( 이름( "TTF,Hr" )(4846.6, 잠금( 0 ), 표시( 1 )) ) ) ),
Weibull 분위수(프로파일러( 1, 신뢰 구간( 1 ), 용어 값( 확률( 0.5, 잠금( 0 ), 표시( 1 ) ) ) ) ),
Weibull 위험(프로파일러( 1, 신뢰 구간( 1 ), 용어 값( 이름( "TTF,Hr" )(4846.6, 잠금( 0 ), 표시( 1 )) ) ) ),
Weibull Density( Profiler( 1, Term Value( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) ), Custom Estimation( Weibull, 0 )}
),
SendToReport(
Dispatch( {"분포 비교"}, "수명 분포", FrameBox, {그리드 라인 순서( 2 ), 참조 라인 순서( 3 )} ),
Dispatch( {"통계", "모델 비교"}, "", TableBox, {열 기준 정렬( 2, 1 )} )
)
);
// Parametic Estimate 데이터를 새 데이터 테이블에 자동으로 복사하려면(예: untitled.jmp 형식)
fmrep = fm << 보고서;
fmrep[Outline Box("Parametric Estimate ?" )][Table Box( 1 )] << 결합된 데이터 테이블을 만듭니다.
dt1 = 현재 데이터 테이블();
dt1 << 다른 이름으로 저장( "c:\Users\ABC\Desktop\AAA.xlsx" ); // untitled.jmp 파일을 데스크탑 위치에 엑셀 파일(이 경우 AAA.xlsx로 이름 지정)으로 저장합니다.
닫기( dt, 저장하지 않음 );
닫기( dt1, 저장하지 않음 );
위의 스크립트는 저에게 완벽하게 작동합니다.
최근 발견 및 학습을 통해 이 커뮤니티에 다시 기여할 생각이었습니다.
감사해요!
짐
Re: AIC를 새 데이터 테이블로 내보내는 스크립트유레카!!! 제프, 마크, 이안에게 감사합니다! 여러분은 짧은 시간에 저에게 많은 것을 가르쳐 주셨고, 불필요한 클릭, 복사, 붙여넣기 시간을 절약할 수 있는 솔루션을 주셨습니다!
이제 모델이 수렴하지 않을 때 경고 텍스트 열을 추가하는 방법을 아는 사람이 있다면 금상첨화일 것입니다. 하지만 우리가 성취한 것에 만족합니다!
Re: AIC를 새 데이터 테이블로 내보내는 스크립트플랫폼 시작에서 By()를 사용하면 JMP가 결과 플랫폼 목록을 반환합니다. 이것이 없으면 JMP는 목록이 아닌 단일 플랫폼을 반환합니다.
여기의 예제는 By()를 사용했기 때문에 그룹별로 특정 플랫폼을 참조하기 위해 플랫폼 목록에 색인을 생성해야 했습니다. 그것은 다음의 [1]입니다.
fmrep1[1][Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;플랫폼 시작 시 By()를 사용하지 않으므로 [1]이 필요하지 않습니다.
모든 테이블을 단일 데이터 테이블로 가져오려면 단일 창에서 모든 보고서로 시작하는 것이 가장 쉽습니다.
New Window()를 사용하여 자신만의 보고서 창을 만들 수 있습니다.
dt = Open( "$SAMPLE_DATA\Reliability\Tobit2.jmp" );
myWin = New Window( "My Window",
fm1 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm2 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm3 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
);
combined = myWin[Outline Box( "Parametric ?" )][Table Box( 1 )] << make combined data table;
보고서 창에 대한 참조가 있으므로 보고서 개체를 가져올 필요가 없습니다. 마이윈 , 이미.
원본 게시물에 표시된 것과 유사한 테이블을 얻으려면 결합된 데이터 테이블 만들기에서 얻은 테이블을 Split()해야 합니다.
combined <<Split(
Split By( :Column 1 ),
Split( :Column 2 ),
Remaining Columns( Drop All )
);
행이 나타내는 모델을 나타내는 열도 필요하다는 것을 알고 있습니다. 실행할 모델을 결정하는 방법에 따라 해당 목록을 직접 유지하고 해당 정보가 포함된 데이터 테이블에 열을 직접 추가하는 것이 더 쉬울 수 있습니다.
어떤 모델을 지정했는지 모른다면 파라메트릭 생존 보고서에서 추출할 수 있지만 쉽지는 않습니다.
-제프
Re: AIC를 새 데이터 테이블로 내보내는 스크립트자, 점점 가까워지고 있습니다. 스크립트를 잘못 붙여넣었는데도 제프가 정답을 주셨어요. 다음 스크립트는 샘플 데이터에 대해 원하는 테이블을 제공합니다.
dt = 열려 있는 ( "$SAMPLE_DATA/신뢰성/Tobit2.jmp" ) ;
// 임의의 'by' 열 추가
byCol = dt << NewColumn ( "에 의해" , 숫자 , 명사 같은 , 공식 ( RandomInteger ( 1 , 2 ))) ;
// 보이지 않는 보고서 만들기
fm = dt << 적합 모델 (
와이 ( : 와이로우 , : 와이하이 ) ,
효과 ( : 나이 , : 유동성 ) ,
에 의해 ( : 에 의해 ) ,
성격 ( 파라메트릭 서바이벌 ) ,
분포 ( 로그정상 ) ,
달리다 ( 우도비 테스트 ( 1 ) ) ,
) ;
// 보고서 계층에 대한 참조 가져오기
fmrep = fm << 보고서 ;
fmrep [ 1 ][ 아웃라인박스 ( "파라메트릭?" )][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
닫다 ( dt , NoSave ) ;
// 이 스크립트는 예상대로 작동합니다!!
근데 왜 내가 빼면 byCol = dt << NewColumn ( ...) 그리고 에 의해 ( : 에 의해 ) , 스크립트가 더 이상 테이블을 생성하지 않습니까?
내 목표는 여러 보고서에서 결합된 단일 데이터 테이블을 만드는 것이므로 다음 샘플 스크립트가 작동하도록 하려면 어떻게 해야 합니까?
dt = 열려 있는 ( "$SAMPLE_DATA/신뢰성/Tobit2.jmp" ) ;
// 보이지 않는 보고서 만들기
fm1 = dt << 적합 모형 (
와이 ( : 와이로우 , : 와이하이 ) ,
효과 ( : 나이 , ) ,
성격 ( 파라메트릭 서바이벌 ) ,
분포 ( 로그정상 ) ,
달리다 ( 우도비 테스트 ( 1 ) ) ,
) ;
fm2 = dt << 적합 모형 (
와이 ( : 와이로우 , : 와이하이 ) ,
효과 ( : 유동성 ) ,
성격 ( 파라메트릭 서바이벌 ) ,
분포 ( 로그정상 ) ,
달리다 ( 우도비 테스트 ( 1 ) ) ,
) ;
fm3 = dt << 적합 모형 (
와이 ( : 와이로우 , : 와이하이 ) ,
효과 ( : 나이 , : 유동성 ) ,
성격 ( 파라메트릭 서바이벌 ) ,
분포 ( 로그정상 ) ,
달리다 ( 우도비 테스트 ( 1 ) ) ,
) ;
// 보고서 계층에 대한 참조 가져오기
fmrep1 = fm1 << 보고서 ;
fmrep1 [ 1 ][ 아웃라인박스 ( "파라메트릭?" )][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
감사합니다 여러분!!!
JP
Re: AIC를 새 데이터 테이블로 내보내는 스크립트이 줄에 아래 첨자 오류가 있습니다.
fmrep[1]["Parameter Estimates"][TableBox(1)] << Make Combined Data Table;
대신 다음과 같아야 합니다.
fmrep[Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;Outlinebox(1)를 사용하거나 전체 제목을 넣을 수 있지만 와일드카드 "?" 조금 더 일반적으로 만듭니다.
-제프
Re: AIC를 새 데이터 테이블로 내보내는 스크립트Mark & Ian, 시간 내주셔서 감사합니다! 아래 스크립트의 내 버전이 여전히 테이블을 생성하지 않기 때문에 여전히 제대로 이해하지 못하고 있습니다. 두 가지 예를 결합해 보았습니다.
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.JMP" ) ;
비브 = dt << 이변량 (
와이 ( : 키 ) ,
엑스 ( : 무게 ) ,
핏 라인 ,
에 의해 ( : 섹스 )
) ;
fmrep = fm << 보고서 ;
fmrep [ 1 ][ "매개변수 추정치" ][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
어떤 아이디어?
감사합니다,
JP
Re: AIC를 새 데이터 테이블로 내보내는 스크립트특정 개요 상자를 대상으로 하기 위해 아래 첨자에서 "매개 변수 추정"을 사용한 경우 대신 "모수 생존 적합 - 모델 633"을 사용합니다.
Re: AIC를 새 데이터 테이블로 내보내는 스크립트이런! 저널이 아닌 테이블을 원하셨군요. 이 경우 '결합된 데이터 테이블 만들기'가 더 직접적일 수 있습니다.
Re: AIC를 새 데이터 테이블로 내보내는 스크립트Mark가 설명한 내용을 바탕으로 한 가지 방법이 있습니다.
dt = 열려 있는 ( "$SAMPLE_DATA/신뢰성/Tobit2.jmp" ) ;
// 임의의 'by' 열 추가
byCol = dt << NewColumn ( "에 의해" , 숫자 , 명사 같은 , 공식 ( RandomInteger ( 1 , 2 ))) ;
// 보이지 않는 보고서 만들기
fm = dt << 적합 모델 (
와이 ( : 와이로우 , : 와이하이 ) ,
효과 ( : 나이 , : 유동성 ) ,
에 의해 ( : 에 의해 ) ,
성격 ( 파라메트릭 서바이벌 ) ,
분포 ( 로그정상 ) ,
달리다 ( 우도비 테스트 ( 1 ) ) ,
보이지 않는
) ;
// 보고서 계층에 대한 참조 가져오기
fmrep = fm << 보고서 ;
// 이것은 'by' 그룹당 하나의 항목인 목록이 됩니다.
개요제목 = fmRep << GetTitle ;
// 빈 표시 상자 만들기
럽 = 라인업박스 ( NCol ( 1 )) ;
// 필요한 내용 추가
을 위한 ( 영형 = 1 , 영형 <= N항목 ( 개요제목 ) , 영형 ++,
럽 << 추가 (
아웃라인박스 ( 개요제목 [ 영형 ] ,
( fmRep [ 영형 ])[ 테이블박스 ( 1 )] ;
) ;
) ;
) ;
닫다 ( dt , NoSave ) ;
// 저널 만들기
새창 ( "보고서" , << 신문 , 럽 ) ;
유일한 어려움은 포함할 테이블 상자를 아는 것입니다. 이를 확인하려면 아웃라인 노드의 삼각형을 마우스 오른쪽 버튼으로 클릭한 다음 편집 > 트리 구조 표시를 선택합니다.
Re: AIC를 새 데이터 테이블로 내보내는 스크립트빠른 답변 감사합니다, 마크!! 그것은 매우 유용하고 교육적이었습니다. 처음에는 마지막 부분을 다음과 같이 다시 작성할 때까지 데이터 테이블을 생성하지 않았지만
보고서 ( 비브 [ 1 ] )[ "매개변수 추정치" ][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
다음 예에 따라: 46983 - 기준 변수를 사용할 때 분포 보고서에서 요약 통계의 결합된 데이터 테이블을 만드는 방법 .
그러나 원하는 테이블에 제목이 없기 때문에(예: "Parameter Estimates") 여전히 작업 흐름으로 변환할 수 없습니다. 다음은 한 보고서의 예입니다. 원으로 표시된 부분은 데이터 테이블로 만들고 싶은 부분입니다. 하단에 제가 사용하고 있는 스크립트 샘플을 포함시켰습니다. 문제는 한 번에 생성된 ~100개 보고서의 원으로 표시된 데이터를 하나의 데이터 테이블에 추가하는 방법입니다. 찾고 있는 최종 테이블의 스크린샷을 추가했으며 현재 Excel에 수동으로 입력하고 있습니다(yuck). 또한 각 행에 모델 번호(예: 633)를 추가하는 방법이 필요합니다.
도움을 주셔서 다시 한 번 감사드립니다!
JP


다음은 내가 사용하는 스크립트의 예입니다.
적합 모델 (
검열 ( : 분산 ) ,
검열 코드 ( "0" ) ,
와이 ( : 분산까지 일 ) ,
효과 ( : 무게 ,: 년도 ,: 원천 ,: 전위 ,: 치료 ,: 지질학 ,: 대지 , ) ,
성격 ( 파라메트릭 서바이벌 ) ,
분포 ( 프레셰 ) ,
달리다 ( 우도비 테스트 ( 1 ) ) ,
SendToReport (
보내다 (
{} ,
파라메트릭 서바이벌 피팅 ,
아웃라인박스 ,
{ 제목 설정 ( "파라메트릭 서바이벌 핏 - 모델 632 " )}
)
)
) ;
적합 모형 (
검열 ( : 분산 ) ,
검열 코드 ( "0" ) ,
와이 ( : 분산까지 일 ) ,
효과 ( : 무게 ,: 년도 ,: 원천 ,: 전위 ,: 치료 ,: 지질학 , ) ,
성격 ( 파라메트릭 서바이벌 ) ,
분포 ( 프레셰 ) ,
달리다 ( 우도비 테스트 ( 1 ) ) ,
SendToReport (
보내다 (
{} ,
파라메트릭 서바이벌 피팅 ,
아웃라인박스 ,
{ 제목 설정 ( "파라메트릭 서바이벌 핏 - 모델 633" )}
)
)
) ;
Re: AIC를 새 데이터 테이블로 내보내는 스크립트보고서에서 AIC 값이 있는 테이블을 마우스 오른쪽 버튼으로 클릭하고 결합된 데이터 테이블 만들기를 선택하여 이 결과를 대화식으로 생성할 수 있습니다.
동등한 스크립팅을 사용하려면 메뉴 명령과 동일한 이름의 메시지를 보고서의 AIC 값 표시를 담당하는 표시 상자 개체에 보내야 합니다. 이 아이디어에 대해 다음 예를 사용하십시오.
- 오픈 빅클래스
- 키 대 몸무게 및 성별을 그룹화 변수로 사용하는 Bivariate 플랫폼 출시
- 두 그룹에 한 줄 맞추기
- 보고서 계층에 대한 참조 가져오기
- 보고서의 표시 트리를 첫 번째 테이블 수준까지 반복적으로 아래 첨자(예: 매개변수 추정치)
- 메시지를 보내
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.JMP" ) ;
비브 = dt << 이변량 (
와이( : 키 ) ,
엑스( : 무게 ) ,
핏 라인 ,
에 의해( : 섹스 )
);
비브4 = 비브 << 보고서 ;
비버[ 1 ][ "매개변수 추정치" ][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;