Adattamento Curva non lineare per i dati selezionati.Invece di utilizzare le colonne di dati direttamente dalla tabella dati, volevo che utilizzassi le colonne selezionate dall'utente. Ma i valori non vengono trasferiti nella formula.
Y_axis = colListY << Get Items;
X_axis = colListX << Get Items;
Group_by = colListBy << Get Items;
New Column( "Model",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Parameter(
{p = 0.29, x0 = 15, m0 = 1.2, x1 = 30, m1 = 5},
p * (1 - Exp( -(:X_axis / x0) ^ m0 )) + (1 - p) * (1
-Exp( -(:X_axis / x1) ^ m1 ))
)
),
);
nlin = dt << Nonlinear(
SendToByGroup( Bygroup Default ),
Y( :Y_axis ),
X( :Model ),
Iteration Limit( 1000 ),
Unthreaded( 1 ),
QuasiNewton BFGS,
Finish,
By(:Group_By )<BR /> );
Analisi e modellazione dei dati di basefinestreRi: Adattamento della curva non lineare per i dati selezionati.Dovrai avere i dati nella tabella dati per utilizzare piattaforme diverse. È possibile creare la selezione dell'utente utilizzando Nuova finestra() .
Ri: Adattamento della curva non lineare per i dati selezionati.Ho creato una nuova finestra e ho consentito agli utenti di selezionare i campi richiesti, utilizzando queste caselle di riepilogo delle colonne. Ma come passare tali valori a funzioni non lineari poiché prende colonne solo dalla tabella dati.
Button box("X Column", colListX<<APPEND></APPEND>

Ri: Adattamento della curva non lineare per i dati selezionati.Vinusha,
Poiché non disponi dello script completo per la finestra di dialogo utente personalizzata, immagino il problema. Penso che sia come ottenere e utilizzare l'input da un ColListBox. Di seguito è riportato un frammento di uno script scritto per un libro sulle applicazioni JSL. il risultato di un colListBox è un elenco di nomi di colonna, testo, non riferimenti di colonna.
_init = {_yusr={}, _xusr={}, _gusr={}};
EvalList(_init);
//define expressions, actions
_src_get = Expr( _src << Get Selected );
//dialog
ccol_dlg = New Window("Custom Column Dialog", <<MODAL></MODAL>
Specificare il sesso della colonna per la variabile X. Esegui questo script e guarda l'output nella finestra LOG
show(_yusr, _xusr, _gusr);
/*:
_yusr = {"weight", "height"};
_xusr = {"sex"};
_gusr = {"age"};
La nuova formula di colonna dello script e NLN necessitano di riferimenti di colonna. Credo che Jarmo ti stesse dicendo questo.
//:*/
show(Column(_gusr[1]))
/*:
Column(_gusr[1]) = Column("age");
_gusr[1] è il nome della colonna "age" e per fare riferimento alla colonna utilizzare Column(_gusr[1]) che è Column("age) ed equivalente a :età.
Ri: Adattamento della curva non lineare per i dati selezionati.@Vinusha , @jthi ,
Non ho usato molto JMP nelle versioni 16 e 17. Lo script precedente è stato scritto per JMP 13. Da allora JMP/JSL mantiene le variabili della finestra utente in formato colonna. Quindi lo script può essere più semplice. Vedi l'output di col_dlg.
bc_dt = Open( "$SAMPLE_DATA/Big Class.JMP" );
//Below is JSL to build the basic dialog using the Column Dialog function.
col_dlg = Column Dialog(
_yVar = ColList( "Y, Response",, Data Type(Numeric), MinCol (1) ),
_xVar = ColList( "X, Treatment", Data Type(Character), MinCol(1), MaxCol(1) ),
_grpVar = ColList( "Group Factors", Data Type(Any) ),
);
Show( col_dlg, col_dlg["_yVar"], col_dlg["_xVar"],
col_dlg["_grpVar"], col_dlg["Button"] );
If (col_dlg["Button"] == -1, Throw( "User Cancel") );
Remove From( col_dlg , N Items(col_dlg) ); //Remove the last item
Eval List ( col_dlg );
Show( col_dlg, _yVar, _xVar, _grpVar );
Ecco il risultato
Show( col_dlg, _yVar, _xVar, _grpVar );
/*:
col_dlg = {_yVar = {:height, :weight}, _xVar = {:sex}, _grpVar = {:age}, Button(1)};
col_dlg["_yVar"] = {:height, :weight};
col_dlg["_xVar"] = {:sex};
col_dlg["_grpVar"] = {:age};
col_dlg["Button"] = 1;
col_dlg = {_yVar = {:height, :weight}, _xVar = {:sex}, _grpVar = {:age}};
_yVar = {:height, :weight};
_xVar = {:sex};
_grpVar = {:age};
Quindi puoi fare riferimento a una colonna come _yVar[1], ecc.
Ri: Adattamento della curva non lineare per i dati selezionati.Puoi (di solito) usare Eval()
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Nonlinear Examples/US Population.jmp");
nw = New Window("User Selections", << Modal, << Return Result,
H List Box(
Panel Box("Column Selections",
window:fcs = Filter Col Selector(dt)
),
Panel Box("User Selections",
Lineup Box(N Col(2),
Button Box("X", << Set Function(Function({this},
(this << sib) << Set Items((window:fcs << Get Selected));
))),
clb_x = Col List Box(dt, Min Items(1), Max Items(1), N Lines(2)),
Button Box("Y", << Set Function(Function({this},
(this << sib) << Set Items((window:fcs << Get Selected));
))),
clb_y = Col List Box(dt, Min Items(1), Max Items(1), N Lines(2)),
Button Box("By", << Set Function(Function({this},
(this << sib) << Set Items((window:fcs << Get Selected));
))),
clb_by = Col List Box(dt, Max Items(1), N Lines(2)),
)
),
Panel Box("Actions",
Lineup Box(N Col(1),
Button Box("OK",
x_selection = clb_x << get items;
y_selection = clb_x << get items;
by_selection = clb_x << get items;
),
Button Box("Cancel"),
)
)
)
);
obj = Nonlinear(
Y(Eval(y_selection)),
X(Eval(x_selection)),
Finish()
);Ri: Adattamento della curva non lineare per i dati selezionati.Ho eseguito la stessa cosa ma ricevo un errore e anche nella tabella dati viene visualizzato il nome della colonna anziché i valori.
Names Default To Here( 1 );
Error = expr(New Window("JMP ALERT" , <<MODAL></MODAL>Ri: Adattamento della curva non lineare per i dati selezionati.Per le formule potrebbe essere necessario valutare la colonna selezionata lì. Questo post fornisce idee per questo Inserisci un'espressione in un'altra utilizzando Eval Insert, Eval Expr, Parse e Substitute
Ri: Adattamento della curva non lineare per i dati selezionati.Perché è impossibile utilizzare Exp ed Eval in questo caso e potresti usarli con questa equazione poiché stiamo ricevendo input dagli utenti.
x_selection = colListX << get items;
y_selection = colListY << get items;
by_selection = colListBy << get items;
New Column( "Model",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Parameter(
{p = 0.29, x0 = 15, m0 = 1.2, x1 = 30, m1 = 5},
p * (1 - Exp( -(Eval(x_selection)/ x0) ^ m0 )) + (1 - p) * (1
-Exp( -Eval(x_selection)/ x1) ^ m1 )
)
),
);