좋은 아침이에요
내 JSL에 "Two-Factor"를 사용하여 FIT 모델을 구현하고 싶습니다. 응답 표면 모델",
하지만 특정 JSL 명령을 찾지 못했습니다.
누군가가 나를 도울 수 있습니다
여기에 내가 구현 한 코드 ..하지만 FIT MODEL 섹션에 대해서는 불완전합니다 ....
Clear Globals();
Clear Log();
Names Default To Here( 1 );
// code to choose among all opened tables which one will be selected for the analysis
OpenDT = List();
For( i = 1, i <= N Table(), i++,
Insert Into( OpenDT, Data Table( i ) )
);
dlgDT = Dialog(
"Please select Data Table for analysis",
VList( selectDT = List Box( OpenDT ) ),
HList( Button( "OK" ), Button( "Cancel" ) )
);
Show( dlgDT );
If( dlgDT["button"] == 1,
Remove From( dlgDT, N Items( dlgDT ) );
Eval List( dlgDT );
);
Current Data Table( selectDT[1] );
cd = Column Dialog(
Var = collist( " select Response >>", MinCol( 1 ), MaxCol( 1 ) ),
Hlist( "" ),
Ref = Collist( " Select Predictors >>", MinCol( 1 ) ),
Hlist( "" ),
Hlist( "" ),
mypareto = Check Box( " Show results's Pareto ", 1 ),
Hlist( "Number of recursive trees -> ", forest = EditNumber( 10 ) ),
Vlist(
mypareto = Check Box( " Show results's Pareto ", 1 ),
Hlist( "" ),
Hlist( "" ),
Hlist( "select top predictors ", myrank = EditNumber( 5 ) ),
),
);
//);
//declaration of global variables
Response = cd["Var"]; //(Response Variable) ok
Predictor = cd["Ref"]; //(Predictor Variable) ok
Fsize = cd["forest"]; // number of tree to run
pareto = cd["mypareto"];
rank = cd["myrank"];
risultato = New Table( "Tree Table",
Add Rows( 0 ),
New Column( "Y", Character, "Nominal" ),
New Column( "Term", Character, "Nominal", Set Property( "ID Column", 1 ) ),
New Column( "Number of Splits", Numeric, "Continuous" ),
New Column( "SS", Numeric, "Continuous" ),
New Column( "SS 2", Character, "Nominal" ),
New Column( "Portion", Numeric, "Continuous" ),
);
tree = Expr(
partitioning = Partition(
Y( Response( 1 ) ),
X( Eval( Predictor ) ),
Split History( 1 ),
Informative Missing( 1 ),
Validation Portion( 0.33 ),
Minimun Size Split( 5 ),
Column Contributions( 1 ),
Go
);
part = Report( partitioning )["Column Contributions"][Table Box( 1 )] <<
Make Combined Data Table;
part << select where( :Number of Splits == 0 );
part << delete rows;
partitioning << close window();
part << set name( "Parts" );
risultato = Data Table( risultato ) << Concatenate(
Data Table( part ),
Append to first table
);
Close( part, "no save" );
);
For( i = 1, i <= Fsize, i++,
Current Data Table( selectDT[1] );
tree;
);
If( Pareto == 1,
Current Data Table( risultato );
Pareto Plot(
Cause( :Term ),
);
);
//create Ranking Table
Summary_Rank = Data Table( risultato ) << Summary(
Group( :Term ),
output table name( "Bootstrap Ranking" ),
);
Data Table( Summary_Rank ) << Sort(
By( :N Rows ),
Order( Descending ),
replace Table,
);
x = N Rows( Summary_Rank );
Data Table( Summary_Rank ) << New Column( "Rank", numeric, , formula( Sequence( 1, x, 1 ) ) );
Data Table( Summary_Rank ) << select where( :Rank <= rank );
Column( 1 ) << set selected( 1 );
tempDt = Summary_Rank << Subset( columns( :Term ) );
Column( 1 ) << set selected( 1 );
predictor = Column( 1 ) << get values();
Close( tempDt, "no save" );
// declaration VarExpr variable
varExpr = {};
//------------------------------------------------FIT MODEL Two Factore Response Surface -------------------//
// parse word '& RS' into predictors variablee
For( i = 1, i <= N Items( predictor ), i++,
Insert Into( varExpr, Parse( ":Name(\!"" || predictor[i] || "\!")" || Char( "& RS" ) ) )
);
Current Data Table( selectDT[1] );
FIT_MODEL = Fit Model(
Y( Response( 1 ) ),
Effects(
(Eval( varExpr )),
),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ),
Run( Profiler( 1, Confidence Intervals( 1 ), Arrange in Rows( 6 ), ), Show VIF( 1 ) )
);
FIT_MODEL;
나는 당신이 요구하는 것이 아래의 예를 사용하여 해결되었다고 생각합니다.
predictor = {"X1","X2","X3","X4"};
varExpr = {};
// parse word '& RS' into predictors variablee
For( i = 1, i <= N Items( predictor ), i++,
Insert Into( varExpr, Parse( ":Name(\!"" || predictor[i] || "\!")" || Char( "& RS" ) ) )
);
For( i = 1, i <= N Items( predictor ), i++,
For( k = i, k <= N Items( predictor ), k++,
Insert Into( varExpr, Parse( ":Name(\!"" || predictor[i] || "\!")" || Char( " * " ) || ":Name(\!"" || predictor[k] || "\!")" ) )
))JMP를 위한 최고의 스크립터 작성기는 JMP 자체입니다. Jim이 말했듯이 대화형으로 모델을 빌드한 다음 빨간색 삼각형을 사용하여 스크립트를 저장합니다. JSL 스크립트에 어떻게 나타나야 하는지 보여줍니다.
적합 모델(
Y( :Y ),
효과(
:X1 & RS,
:X2 & RS,
:X3 & RS,
:X4 & RS,
:X1 * :X1,
:X1 * :X2,
:X2 * :X2,
:X1 * :X3,
:X2 * :X3,
:X3 * :X3,
:X1 * :X4,
:X2 * :X4,
:X3 * :X4,
:X4 * :X4
),
성격( "표준 최소 제곱")
);
답장을 보내 주셔서 감사합니다.
반응 표면 조건에 영향을 미치는 빠른 방법이 없는 것 같습니다: (아래 예와 같이)
X1 RS
X2 RS
X3 RS
X4 RS
X1*X1
X1*X2
X1*X3
X1*X4
X2*X2
X2*X3
X2*X4
X3*X3
X3*X4
X4*X4
내 스크립트로 X1 RS, X2 RS, X3 RS, X4 RS,
하지만 이제는 별도의 스크립트로 곱셈 인수를 만들어야 합니다......
"선형 모델 피팅" 책에서 2요인 반응 표면 모델의 좋은 예를 찾을 수 있습니다.
도움말==>도서==>선형 모델 피팅
모델을 대화식으로 생성한 후에는 출력 디스플레이의 빨간색 삼각형에서 "스크립트 저장"을 요청할 수 있습니다.분석을 실행하는 데 필요한 JSL을 제공합니다.