Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Ciao a tutti,
Vorrei creare uno script per la stima dell'affidabilità. Uno dei miei compiti è valutare il quantile/probabilità stimato.
In queste espressioni (vedere il codice seguente), se elenco esplicitamente tutte le categorie utilizzando list, come {0, 1, 2, 3}, l'espressione funziona correttamente. Tuttavia, se utilizzo la variabile per l'elenco, quindi utilizzo la variabile invece di scrivere esplicitamente l'elenco nel codice, l'espressione non funziona.
Ecco un esempio.
Il seguente codice funziona correttamente:
Lognormal Estimate Probability( Profile, {1000}, {0 ,1, 2, 3} )
Il seguente codice non funziona:
list_Category_num = {0 ,1, 2, 3}
Lognormal Estimate Probability( Profile, {1000}, list_Category_num )
Ho provato a cercare in questo forum e finora ho provato a utilizzare comandi come "eval ()", "eval list ()", "eval expr ()", ma il problema persiste.
Di seguito è riportato il corpo completo del codice:
Fit Life by X(
// Set distribution and parameters
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
// Fit Lognormal and set confidence interval
<<FIT lognormal=""></FIT>
Grazie mille per il tuo aiuto.
Modellazione statistica avanzataAutomazione e scriptingEsplorazione e visualizzazione dei datiProgettazione di esperimentiAnalisi di affidabilitàfinestreRe: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Grazie per aver segnalato il problema al supporto tecnico, @Bhume_Chant
E ho perso "profilo". La tua osservazione è corretta. In JMP 16, è necessario "profilo". E questo è scegliere il tipo "Likelihood CI". Per favore aggiungi "profilo" nel tuo script.

A partire da JMP 17, il "profilo" non è più necessario. Vengono riportati entrambi gli IC Wald e Lifelihood.
Re: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Grazie mille Peng!
Innanzitutto, ho appena inviato un'e-mail al team di supporto di JMP come suggerito. A questo caso è stato assegnato il numero del caso: TS-00030985.
In secondo luogo, sono molto grato che spieghi anche in dettaglio come avvolgere l'oggetto piattaforma e avvolgere il messaggio. Ricorderò questa pratica importante quando avrò bisogno di scrivere JSL in futuro.
A proposito, per quanto riguarda il codice che hai mostrato, entrambi funzionano ma devo aggiungere la parola "profilo" davanti a {1000} in questo modo:
Questo codice funziona con la versione JMP che sto usando:
Lognormal Estimate Probability(profile, {1000}, vvv )
Questo codice non genera errori, ma non succede nulla con la versione di JMP che sto usando:
Lognormal Estimate Probability({1000}, vvv )
Non sono sicuro se il motivo per cui ho bisogno di aggiungere "profilo" sia correlato alla versione di JMP che sto usando o meno. Attualmente sto utilizzando una versione precedente di JMP (versione 16.2).
Re: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Grazie per aver portato questo alla mia attenzione, @Mark_Bailey !
@Bhume_Chant prima si prega di contattare support@jmp.com per segnalare questo problema. Il programma corrente si aspetta un elenco di numeri, un elenco di numeri letterali o un elenco di variabili, ma non si aspetta una variabile, che è un elenco. Questo dovrebbe essere risolto. Si prega di contattare il supporto tecnico. Lo appreziamo.
Per risolvere il tuo problema attuale, ecco una soluzione alternativa, in linea con quanto suggerito da Mark. Ma offro un po 'più di informazioni, quindi la tecnica simile potrebbe essere utile in altri luoghi in cui il comportamento di "valutazione" non è desiderabile. Ecco i due frammenti di codice che funzionano.
Ecco il primo
vvv = {0,1,2,3};
obj = Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
);
eval(
substitute(
expr(
obj << set scriptables(
{
Lognormal Estimate Probability( {1000}, vvv )
}
)
),
expr(vvv), vvv
)
);
Ecco il secondo,
vvv = {0,1,2,3};
eval(
substitute(
expr(
Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
<< set scriptables(
{
Lognormal Estimate Probability( {1000}, vvv )
}
)
)
),
expr(vvv),vvv
)
);
Confrontali con il tuo script, la differenza è quale espressione è racchiusa. I due snip precedenti vanno a capo all'esterno dell'oggetto piattaforma. Il tuo script avvolge un'espressione che è un messaggio.
Ora spiego perché avvolgere un messaggio non funziona. Quando un messaggio è racchiuso nel lato del trucco eval-substitute, è ancora in balia dell'implementazione della piattaforma per riconoscere cosa significa questo eval-substitute. In questo caso, la piattaforma non si aspetta che sia un'espressione. E sospetto che sia vero per la maggior parte delle piattaforme.
Quindi, in base a ciò che ho appreso da questo caso, il mio suggerimento è di utilizzare il trucco eval-sostituto sopra il livello dell'oggetto della piattaforma.
Re: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Ora funziona!
Grazie mille!
Re: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Ecco un altro modo dall'esempio nello Scripting Index:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Reliability/Devalt.jmp" );
obj = dt << Fit Life by X(
Y( :Hours ),
X( :Temp ),
Distribution( Lognormal ),
Censor( :Censor ),
Relationship( Arrhenius Celsius ),
Freq( :Weight )
);
p = obj << Probability( Lognormal, 30000, 10 );
Show( p );
Re: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?È necessario spostare l'invio del messaggio dopo aver avviato la piattaforma. Qualcosa come questo:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Reliability/Devalt.jmp" );
obj = dt << Fit Life by X(
Y( :Hours ),
X( :Temp ),
Distribution( Lognormal ),
Censor( :Censor ),
Relationship( Arrhenius Celsius ),
Freq( :Weight )
);
val = {0,1,2,3};
Eval(
Substitute(
Expr(
obj << Set Scriptables( {Lognormal Estimate Probability( Profile, {1000}, vvv ) } );
),
Expr( vvv ), val
)
);Re: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Ciao Mark, grazie mille per il tuo aiuto, ma potresti aiutarmi un po 'di più con questo problema?
Ho provato a incorporare lo script sopra, non ci sono errori ma anche nessun risultato mostrato. Non sono sicuro di dove ho sbagliato.
Ecco lo script che funziona come previsto:
Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
<< set scriptables(
{
Lognormal Estimate Probability( Profile, {1000}, {0,1,2,3} )
}
)
);Ecco i risultati previsti:

Ora, ho provato a sostituire la parte "Lognormal Estimate Probability" con lo script come mostrato di seguito:
vvv = {0,1,2,3};
Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
<< set scriptables(
{
eval(
substitute(
expr(Lognormal Estimate Probability( Profile, {1000}, vvv )),
expr(vvv), vvv
)
)
}
)
);Non ci sono errori, ma non succede nulla:

A proposito, ho anche allegato i dati fittizi utilizzati per generare i risultati.
Grazie mille.
Re: Come posso fare in modo che la variabile dell'elenco funzioni per la stima quantile/probabilità in "Fit Life by X"?Non tutte le funzioni valutano argomenti variabili quando vengono chiamate, quindi è necessario utilizzare un valore letterale per l'argomento. Nel frattempo puoi usare le espressioni per risolvere questo problema. Le persone hanno stili diversi. Ecco un esempio per illustrare l'idea.
list_Category_num = {0 ,1, 2, 3};
Eval(
Substitute(
Expr( Lognormal Estimate Probability( Profile, {1000}, vvv ) ),
Expr( vvv ), list_Category_num
)
);