Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?다음을 수행하는 스크립트를 작성 중입니다.
- 모형 적합 창을 엽니다.
- 사용자가 모델 적합 창의 매크로 및 기타 기능을 사용하여 이를 채울 수 있습니다.
- 사용자가 실행을 클릭하면 시간이 많이 걸릴 수 있는 계산이 수행되고 보고서가 생성됩니다.
Run을 클릭할 때 수행되는 계산은 Run 버튼에 저장된 스크립트에 의해 생성됩니다.이 스크립트는 사용자가 보고하는 보고서를 생성합니다. ~해야 한다 보다.그러나 스크립트가 실행 버튼에 추가되었기 때문에 원하는 보고서가 표시되지만 그 뒤에는 실행이 자체적으로 생성하는 최소 제곱 맞춤 보고서가 표시됩니다.Fit Least Squares 보고서는 사용자에게 의미가 없습니다.
아래 스크립트는 문제를 보여줍니다. 해당 스크립트에서 실행 버튼의 표현식 "runExpr"은 단순히 복제 데이터 테이블을 생성합니다. 이는 그림을 단순화하기 위한 것입니다.실제 스크립트에서는 해당 표현식(runExpr)이 Fit Model 창에 입력된 효과를 기반으로 많은 분석을 수행합니다. 또한 실제 스크립트에서 사용자는 대화형으로 Fit Model 창을 채웁니다. 편의를 위해 아래 스크립트에 Fit Model 창을 채웠습니다.
Names Default To Here( 1 );
runExpr = Expr(
// Creates a clone data table for illustration;
dt << Subset( Output Table( "Clone Table" ), All rows );
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fmSLS = Fit Model(
Y( :weight ),
Effects( :age, :height, :age * :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
);
r = fmSLS << Report;
r[Button Box( 9 )] << Set Script( runExpr);
사용자가 하듯이 실행을 클릭하면 복제 테이블이 나타나지만 맨 위에 있는 창은 실행 명령으로 생성된 최소 제곱 맞춤 보고서입니다.해당 보고서가 표시되지 않도록 하고 싶습니다.
마지막까지:
- runExpr에서 Throw() 및 Stop()을 사용해 보았지만 아무 소용이 없습니다.
- 모달 창 사용을 고려했지만 Fit Model 창에 매크로 기능이 필요하고 모달 창 도움말을 만드는 방법을 볼 수 없습니다.
- Fit Least Squares 보고서를 처리하기 위해 제가 생각할 수 있는 유일한 방법은 아래 그림과 같이 스크립트에 타이밍 루프를 추가하는 것입니다. 그러나 여기에는 위험이 따릅니다.runExpr이 완료되는 데 시간이 얼마나 걸릴지 알 수 있는 방법이 없으며 사용자가 실행을 클릭하지 않기로 결정한 경우 스크립트는 시간이 초과될 때까지 계속 실행됩니다.
어떤 생각이나 도움이라도 대단히 감사하겠습니다!
Names Default To Here( 1 );
runExpr = Expr(
// Creates a clone data table for illustration;
dt << Subset( Output Table( "Clone Table" ), All rows );
fm_Flag = 1
);
fm_Flag = 0; // Sets flag for timing
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fmSLS = Fit Model(
Y( :weight ),
Effects( :age, :height, :age * :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
);
r = fmSLS << Report;
r[Button Box( 9 )] << Set Script( runExpr; fm_Flag = 1 );
For( i = 1, i <= 100, i++,
If(fm_Flag < 1, Wait(0.5), windowsopen = Get Window List(); windowsopen[nItems(windowsopen)] << Close Window; Stop() )
);
대량 맞춤화Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?맙소사, 정말 훌륭해요!!!정말 완벽한 "즉시 사용 가능한" 솔루션입니다!!!
오늘 나중에 사용자 정의 버튼 배치를 시도해 볼 계획이었지만 배치하려고 시도한 적이 있었는지 모르겠습니다. ~ 위에 실행 버튼.이것은 훌륭한 솔루션이며, 이 개념을 다른 곳에서도 사용할 수 있을 것이라고 생각합니다.많은 사용자들이 유용하다고 생각할 것 같아요!
매우 감사합니다!!!
Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?아하!실행 버튼을 제거하거나 수정하는 것은 어려워 보이지만 바로 위에 새 버튼을 배치할 수 있습니다(적어도 Windows의 JMP 15.2.1에서는...).
Names Default to Here( 1 );
run expr = Expr(
// desired report
personality = Report( fm )[ComboBox(1)] << Get Selected;
Show( personality );
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fm = dt << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
// New button the user should click on
(((fm << XPath("//ButtonBox[@title='Run']"))[1] << parent) ) << prepend(
bb = Button Box("Launch custom script", run expr; fm << Close Window;) );
//make sure it is right on top of the old one
bb << set property("Margin", {Left(0), Right(0), Bottom(0), Top(0)});
// Rename old button in case it isn't hidden, and show error if user clicks it
(fm << XPath("//ButtonBox[@title='Run']"))[1] << Set Script( New Window( "Use other button",
Text Box("Woops...\!n\!nPlease use the button at the bottom of the fit model dialog to launch this script.")));
(fm << XPath("//ButtonBox[@title='Run']"))[1] << Set Button Name( "Do Not Use");Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?마크, 당신은 아주 좋은 질문을 제기했고 좋은 지적을 하셨습니다.어쩌면 내 목표를 달성하는 더 좋은 방법이 있을 수도 있습니다.위의 "ih"에 대한 내 답변을 참조하세요.사용자가 효과를 구성할 수 있는 유연성 때문에 Fit Model 창이 필요합니다. 제가 작성 중인 스크립트는 이러한 효과를 사용하여 분수 부트스트랩 가중치를 사용하여 모델을 구성합니다.(아무튼, 위의 "ih"에 대한 답글에 자세한 내용이 있습니다.)
모델 효과를 구성하는 데 도움이 되는 스크립팅 기능이 있다는 것을 알고 있지만 Fit Model 창에 있는 많은 기능을 실제로 복제해야 합니다.모델을 맞추지 않고도 효과 구성을 위해 그 창을 사용할 수 있었으면 좋겠습니다!
Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?이 제안에 대해 정말 감사드립니다. 이는 제가 고려한 것이 아니며 할 수 있는 최선일 수도 있습니다.그러나 사용자가 "실행"을 클릭하면 반드시 발생하게 되며 Fit Model이 실행되고 사용자는 스크립트를 다시 실행해야 합니다.최적이 아닙니다.하지만 아마도 이 아이디어를 활용할 수 있을 것입니다.
귀하와 Mark 모두 좋은 질문을 제기했습니다. 즉, 왜 Fit Model 창을 사용해야 합니까?사용자에게 매크로 및 크로스 기능에 대한 접근을 허용해야 하기 때문입니다.사용자는 중요하다고 생각하는 효과를 추가하게 되며, 많은 경우 여기에는 추가적인 3자 상호 작용 항과 함께 전체 요인 모델이 포함됩니다.나는 사용자가 모델의 "유형"을 입력할 수 있는 모달 대화 상자를 만드는 아이디어를 고민했지만 이 기능은 사용자를 제한합니다.그래서 저는 Fit Model의 대부분의 기능을 갖춘 창이 필요하다는 점을 계속해서 생각하게 되었습니다.또한 사용자는 Fit Model을 사용하여 효과를 입력하는 데 익숙하므로 해당 대화 상자를 사용하는 것이 해당 관점에서 의미가 있습니다.(제공해주신 링크에 감사드립니다. 하지만 효과 구성에 대해서는 다루지 않습니다.모형 적합에 존재하는 교차, 전체 요인, 요인-차수 및 다항식-차수 기능을 복제하려면 많은 스크립팅이 필요합니다.사실 저는 능력이 없다고 생각해요!)
이제 나는 왜 그러고 싶지 않은가? 달리다 모델 맞나요?나에게 필요한 것은 반응과 효과뿐이기 때문입니다. 효과를 구성하려면 Fit Model의 기능이 필요합니다.사용자 정의 스크립트는 이를 분수 무작위 가중치 부트스트랩과 함께 사용하여 모델 평균화를 사용하여 모델을 생성합니다.이러한 모델과 요약 보고서를 생성하는 스크립트는 현재 실행 버튼에 배치된 표현식입니다.따라서 실행을 클릭하면 해당 사용자 정의 보고서가 생성됩니다.사용자가 실행을 클릭하면 관련 없는 Fit Model에서 생성된 보고서가 사용자 정의 보고서 위에 표시된다는 점을 제외하면 모든 것이 좋습니다.
다시 한 번 도움을 주셔서 감사합니다.나는 확실히 맞춤 버튼 아이디어를 가지고 놀 것입니다.
Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?Fit Least Squares 플랫폼을 원하지 않는 경우 Fit Model 대화 상자를 사용하는 이유는 무엇입니까? 원하는 것을 달성하는 다른 방법이 있을 수 있습니다.
Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?모델 사양 대화 상자가 얼마나 필요합니까? 나는 도울 수 없지만 해당 단계를 귀하의 정확한 요구에 맞는 새 창으로 바꾸는 것이 더 나을 것이라고 생각합니다.이 게시물의 예가 도움이 될 수 있습니다.
열에 대한 프롬프트(완전히 모달 방식)
모델 사양 창을 사용하려는 경우 사용자에게 클릭할 수 있는 새 버튼을 제공할 수 있습니다.
Names Default to Here( 1 );
run expr = Expr(
// desired report
personality = Report( fm )[ComboBox(1)] << Get Selected;
Show( personality );
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fm = dt << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
// Show error if user clicks the wrong button
(fm << XPath("//ButtonBox[@title='Run']"))[1] << Set Script( New Window( "Use other bottom",
Text Box("Woops...\!n\!nPlease use the button at the bottom of the fit model dialog to launch this script.")));
// Button the user should click on
(fm << XPath("//OutlineBox"))[1] << Append(Button Box("Launch custom script", run expr; fm << Close Window;));<BR />
Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?맞습니다. 실행 버튼의 내장 동작이 실행되기 전에 버튼 상자의 스크립트가 실행되는 것 같습니다.
이 작은 문제는 짜증나네요! 실행 버튼을 누르는 것과 같은 작업이 발생할 때까지 스크립트 실행을 보류할 수 있는 방법이 있어야 합니다. 또는 내장된 동작의 실행을 방지하기 위해(그러나 앞서 말했듯이 runExpr에 Throw 및 Stop을 배치하는 것은 작동하지 않았습니다).
도와줘서 고마워요, 마크.Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?당신이 올바른지. 일러스트레이션을 수정하려고 했지만 버튼 상자에 첨부된 스크립트는 최소 제곱 맞춤 보고서가 생성되기 전에 평가되므로 효과가 없습니다.
Names Default to Here( 1 );
run expr = Expr(
// desired report
personality = Report( fm )[ComboBox(1)] << Get Selected;
Show( personality );
// undesired report
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
If( Contains( window[w] << Get Window Title, "Fit Least Squares" ),
window[w] << Close Window;
Break();
);
);
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fm = dt << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
Report( fm )[ButtonBox(9)] << Set Script( run expr );
// nothing after this point
Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?마크, 고마워요. 하지만 제 상황에는 이게 효과가 없을 것 같아요.사용자는 Fit Model 창을 채워야 합니다.스크립트에 창 구성 요소를 추가하면 사용자가 Fit Model 창을 채우기 전에 실행됩니다.따라서 사용자가 실행을 클릭하면 스크립트의 해당 부분이 "사라집니다".당신이 제안한 내용에 따른 나의 매우 촌스러운 해결 방법을 보려면 내 게시물의 두 번째 스크립트를 참조하십시오.사용자가 Fit Model을 채우는 데 걸리는 시간과 Run 버튼에서 스크립트를 실행하는 데 걸리는 시간을 고려해야 합니다.
Re: Run in Fit 모델이 보고서를 생성하지 못하도록 방지하는 방법은 무엇입니까?실행 버튼 상자에 첨부한 스크립트를 수정하는 방법을 알 수 없지만 나중에 창을 찾아 닫을 수 있습니다. 다음 그림을 참조하세요.
fm = Current data Table() << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" )
);
fls = fm << Run;
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
If( Contains( window[w] << Get Window Title, "Fit Least Squares" ),
window[w] << Close Window;
Break();
);
);