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 = 참
doc = 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,시간" ) ),
검열( :검열 ),
검열 코드( 1 ),
주파수( :주파수 ),
<<피트 와이블,
신뢰 구간 방법(우도),
<<척도 설정(비모수적),
<<그림 억제(비모수적),
간격 유형(동시),
<<스크립터블 설정(
{확률 논문( 프로파일러( 1, 신뢰 구간( 1 ), 용어 값( 이름( "TTF,Hr" )(4846.6174375, 잠금( 0 ), 표시( 1 )) ) ) ),
Weibull 분포( 프로파일러( 1, 신뢰 구간( 1 ), 항 값( 이름( "TTF,Hr" )(4846.6, 잠금( 0 ), 표시( 1 )) ) ) ),
Weibull Quantile( 프로파일러( 1, 신뢰 구간( 1 ), 항 값( 확률( 0.5, 잠금( 0 ), 표시( 1 ) ) ) ) ),
Weibull Hazard( 프로파일러( 1, 신뢰 구간( 1 ), 용어 값( 이름( "TTF,Hr" )(4846.6, 잠금( 0 ), 표시( 1 )) ) ) ),
Weibull 밀도( Profiler( 1, Term Value( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) ), 사용자 정의 추정( Weibull, 0 )}
),
SendTo보고(
Dispatch( {"분포 비교"}, "수명 분포", FrameBox, {Grid Line Order( 2 ), Reference Line Order( 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 파일을 데스크톱 위치에 Excel 파일(이 경우 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 << 새열 ( "에 의해" , 숫자 , 명사 같은 , 공식 ( 무작위정수 ( 1 , 2 ))) ;
// 보이지 않는 보고서 만들기
FM = dt << 모델 맞춤 (
와이 ( : Y낮음 , : Y높음 ) ,
효과 ( : 나이 , : 유동성 ) ,
에 의해 ( : 에 의해 ) ,
성격 ( 파라메트릭 생존 ) ,
분포 ( 로그노멀 ) ,
달리다 ( 우도비 검정 ( 1 ) ) ,
) ;
// 보고서 레이어에 대한 참조 가져오기
fmrep = FM << 보고서 ;
fmrep [ 1 ][ 아웃라인박스 ( "파라메트릭?" )][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
닫다 ( dt , 저장 안 함 ) ;
// 이 스크립트는 예상대로 작동합니다!!
그런데 떼어내면 왜 그럴까? byCol = dt << 새열 ( ...) 그리고 에 의해 ( : 에 의해 ) , 스크립트가 더 이상 테이블을 생성하지 않습니까?
그리고 내 목표는 여러 보고서에서 하나의 결합된 데이터 테이블을 만드는 것이므로 다음 샘플 스크립트를 작동시키려면 어떻게 해야 합니까?
dt = 열려 있는 ( "$SAMPLE_DATA/신뢰성/Tobit2.jmp" ) ;
// 보이지 않는 보고서 만들기
fm1 = dt << 모델 맞춤 (
와이 ( : Y낮음 , : Y높음 ) ,
효과 ( : 나이 , ) ,
성격 ( 파라메트릭 생존 ) ,
분포 ( 로그노멀 ) ,
달리다 ( 우도비 검정 ( 1 ) ) ,
) ;
fm2 = dt << 모델 맞춤 (
와이 ( : Y낮음 , : Y높음 ) ,
효과 ( : 유동성 ) ,
성격 ( 파라메트릭 생존 ) ,
분포 ( 로그노멀 ) ,
달리다 ( 우도비 검정 ( 1 ) ) ,
) ;
fm3 = dt << 모델 맞춤 (
와이 ( : Y낮음 , : Y높음 ) ,
효과 ( : 나이 , : 유동성 ) ,
성격 ( 파라메트릭 생존 ) ,
분포 ( 로그노멀 ) ,
달리다 ( 우도비 검정 ( 1 ) ) ,
) ;
// 보고서 레이어에 대한 참조 가져오기
fmrep1 = fm1 << 보고서 ;
fmrep1 [ 1 ][ 아웃라인박스 ( "파라메트릭?" )][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
감사합니다 여러분!!!
일본
Re: AIC를 새 데이터 테이블로 내보내는 스크립트이 줄에 첨자 오류가 있습니다.
fmrep[1]["Parameter Estimates"][TableBox(1)] << Make Combined Data Table;
대신 다음과 같아야 합니다.
fmrep[Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;아웃라인박스(1)을 사용하거나 거기에 전체 제목을 입력할 수 있지만 와일드카드 "?"는 포함되지 않습니다. 좀 더 일반적으로 만듭니다.
-제프
Re: AIC를 새 데이터 테이블로 내보내는 스크립트Mark & Ian님, 시간 내주셔서 감사합니다! 하지만 아래 스크립트의 내 버전이 여전히 테이블을 생성하지 않기 때문에 여전히 이 내용을 제대로 이해하지 못하고 있습니다. 나는 두 가지 예를 결합해 보았습니다.
dt = 열려 있는 ( "$SAMPLE_DATA/큰 클래스.JMP" ) ;
비브 = dt << 이변량 (
와이 ( : 키 ) ,
엑스 ( : 무게 ) ,
적합선 ,
에 의해 ( : 섹스 )
) ;
fmrep = FM << 보고서 ;
fmrep [ 1 ][ "매개변수 추정" ][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
어떤 아이디어가 있나요?
감사합니다,
일본
Re: AIC를 새 데이터 테이블로 내보내는 스크립트특정 개요 상자를 대상으로 하기 위해 아래 첨자에 "매개변수 추정"을 사용한 경우 대신 "파라메트릭 생존 맞춤 - 모델 633"을 사용합니다.
Re: AIC를 새 데이터 테이블로 내보내는 스크립트이런! 나는 당신이 일지가 아닌 테이블을 원했다는 것을 알았습니다. 어떤 경우에는 '결합된 데이터 테이블 만들기'가 더 직접적일 수 있습니다.
Re: AIC를 새 데이터 테이블로 내보내는 스크립트Mark가 설명한 내용을 바탕으로 한 가지 방법은 다음과 같습니다.
dt = 열려 있는 ( "$SAMPLE_DATA/신뢰성/Tobit2.jmp" ) ;
// 무작위 'by' 열 추가
byCol = dt << 새열 ( "에 의해" , 숫자 , 명사 같은 , 공식 ( 무작위정수 ( 1 , 2 ))) ;
// 보이지 않는 보고서 만들기
FM = dt << 모델 맞춤 (
와이 ( : Y낮음 , : Y높음 ) ,
효과 ( : 나이 , : 유동성 ) ,
에 의해 ( : 에 의해 ) ,
성격 ( 파라메트릭 생존 ) ,
분포 ( 로그노멀 ) ,
달리다 ( 우도비 검정 ( 1 ) ) ,
보이지 않는
) ;
// 보고서 레이어에 대한 참조 가져오기
fmrep = FM << 보고서 ;
// 이것은 'by' 그룹당 하나의 항목인 목록이 됩니다.
개요제목 = fmRep << 제목 가져오기 ;
// 빈 디스플레이 박스를 만든다
루브 = 라인업박스 ( NCol ( 1 )) ;
// 필요한 내용을 추가합니다.
을 위한 ( 영형 = 1 , 영형 <= N항목 ( 개요제목 ) , 영형 ++,
루브 << 추가 (
아웃라인박스 ( 개요제목 [ 영형 ] ,
( fmRep [ 영형 ])[ 테이블박스 ( 1 )] ;
) ;
) ;
) ;
닫다 ( dt , 저장 안 함 ) ;
// 일지 작성
새창 ( "보고서" , << 신문 , 루브 ) ;
유일한 어려움은 어떤 테이블 상자를 포함할지 아는 것입니다. 이를 파악하려면 개요 노드의 삼각형을 마우스 오른쪽 버튼으로 클릭한 다음 편집 > 트리 구조 표시를 선택합니다.
Re: AIC를 새 데이터 테이블로 내보내는 스크립트빠른 답장을 보내주셔서 감사합니다, 마크!! 그것은 매우 도움이 되고 교육적이었지만 처음에는 마지막 비트를 다음과 같이 다시 작성할 때까지 데이터 테이블을 생성하지 않았습니다.
보고서 ( 비브 [ 1 ] )[ "매개변수 추정" ][ 테이블박스 ( 1 )] << 결합된 데이터 테이블 만들기 ;
다음 예를 따르면 됩니다. 46983 - 기준 변수를 사용할 때 분포 보고서에서 요약 통계의 결합된 데이터 테이블을 만드는 방법 .
그러나 여전히 이를 내 작업 흐름으로 변환할 수 없습니다. 아마도 내가 원하는 테이블에 제목이 없기 때문일 것입니다(예: "매개변수 추정치"). 다음은 보고서 중 하나의 예입니다. 원으로 표시된 부분이 데이터 테이블로 만들고 싶은 부분입니다. 하단에 제가 사용하고 있는 스크립트 샘플을 포함시켰습니다. 문제는 한 번에 생성된 최대 100개의 보고서에서 원으로 표시된 데이터를 하나의 데이터 테이블에 추가하는 방법입니다. 제가 찾고 있는 최종 테이블의 스크린샷을 추가했습니다. 현재 Excel에 수동으로 입력하고 있습니다(으악). 각 행에 모델 번호(예: 633)를 추가하는 방법도 필요합니다.
도움을 주셔서 다시 한번 감사드립니다!
일본


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