Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Hallo alle,
Ich möchte ein Skript zur Zuverlässigkeitsschätzung erstellen. Eine meiner Aufgaben besteht darin, das geschätzte Quantil/die geschätzte Wahrscheinlichkeit auszuwerten.
Wenn ich in diesen Ausdrücken (siehe Code unten) alle Kategorien explizit mithilfe der Liste aufliste, z. B. {0, 1, 2, 3}, funktioniert der Ausdruck einwandfrei. Wenn ich jedoch die Variable für die Liste verwende und dann die Variable verwende, anstatt die Liste explizit in den Code zu schreiben, funktioniert der Ausdruck nicht.
Hier ist ein Beispiel.
Der folgende Code funktioniert einwandfrei:
Lognormal Estimate Probability( Profile, {1000}, {0 ,1, 2, 3} )
Der folgende Code funktioniert nicht:
list_Category_num = {0 ,1, 2, 3}
Lognormal Estimate Probability( Profile, {1000}, list_Category_num )
Ich habe versucht, dieses Forum zu durchsuchen und bisher Befehle wie „eval()“, „eval list()“, „eval expr()“ zu verwenden, aber das Problem besteht immer noch.
Nachfolgend finden Sie den vollständigen Codetext:
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>
Vielen Dank für Ihre Hilfe.
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungDatenexploration und -visualisierungVersuchsplanungZuverlässigkeitsanalyseWindowsBetreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Vielen Dank, dass Sie das Problem dem technischen Support gemeldet haben. @Bhume_Chant
Und ich habe „Profil“ vermisst. Ihre Beobachtung ist richtig. In JMP 16 wird „Profil“ benötigt. Und das bedeutet, den Typ „Likelihood CI“ zu wählen. Bitte fügen Sie „Profil“ in Ihr Skript ein.

Ab JMP 17 ist „Profil“ nicht mehr erforderlich. Es werden sowohl Wald- als auch Lifelihood-CIs gemeldet.
Betreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Vielen Dank, Peng!
Zuerst habe ich, wie von Ihnen vorgeschlagen, eine E-Mail an das JMP-Supportteam gesendet. Diesem Fall wurde die Fallnummer TS-00030985 zugewiesen.
Zweitens bin ich sehr dankbar, dass Sie auch ausführlich erklären, wie das Plattformobjekt und die Nachricht verpackt werden. Ich werde mich an diese wichtige Praxis erinnern, wenn ich in Zukunft JSL schreiben muss.
Übrigens, was den Code betrifft, den Sie gezeigt haben, funktionieren beide, aber ich muss das Wort „Profil“ vor {1000} hinzufügen, wie hier:
Dieser Code funktioniert mit der JMP-Version, die ich verwende:
Lognormal Estimate Probability(profile, {1000}, vvv )
Dieser Code generiert keine Fehler, aber mit der von mir verwendeten JMP-Version passiert nichts:
Lognormal Estimate Probability({1000}, vvv )
Ich bin mir nicht sicher, ob der Grund, warum ich „Profil“ hinzufügen muss, mit der von mir verwendeten JMP-Version zusammenhängt oder nicht. Ich verwende derzeit eine ältere Version von JMP (Version 16.2).
Betreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Vielen Dank, dass Sie mich darauf aufmerksam gemacht haben, @Mark_Bailey !
@Bhume_Chant Bitte wenden Sie sich zunächst an uns support@jmp.com um dieses Problem zu melden. Das aktuelle Programm erwartet eine Liste von Zahlen, entweder eine Liste von Literalzahlen oder eine Liste von Variablen, erwartet jedoch keine Variable, die eine Liste ist. Dies sollte behoben werden. Bitte wenden Sie sich an den technischen Support. Wir schätzen es.
Um Ihr aktuelles Problem zu lösen, finden Sie hier eine Problemumgehung, die den Vorschlägen von Mark entspricht. Aber ich biete etwas mehr Einblick, sodass die ähnliche Technik an anderen Stellen nützlich sein könnte, an denen „Bewertungsverhalten“ nicht wünschenswert ist. Hier sind die beiden Codeausschnitte, die funktionieren.
Hier ist der erste
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
)
);
Hier ist der zweite,
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
)
);
Vergleichen Sie sie mit Ihrem Skript. Der Unterschied besteht darin, welcher Ausdruck umschlossen wird. Die beiden oben genannten Snips werden außerhalb des Plattformobjekts umschlossen. Ihr Skript umschließt einen Ausdruck, der eine Nachricht ist.
Jetzt erkläre ich, warum das Umschließen einer Nachricht nicht funktioniert. Wenn eine Nachricht in den Evaluierungs-Ersatz-Trick eingebunden wird, ist es immer noch der Plattformimplementierung überlassen, zu erkennen, was dieser Evaluierungs-Ersatz bedeutet. In diesem Fall erwartet die Plattform nicht, dass es sich um einen Ausdruck handelt. Und ich vermute, dass das auf die meisten Plattformen zutrifft.
Basierend auf dem, was ich aus diesem Fall gelernt habe, schlage ich vor, den Evaluierungs-Ersatz-Trick oberhalb der Plattformobjektebene zu verwenden.
Betreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Es funktioniert jetzt!
Vielen Dank!
Betreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Hier ist ein anderer Weg aus dem Beispiel im 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 );
Betreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Sie müssen den Versand der Nachricht nach dem Start der Plattform verschieben. Etwas wie das:
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
)
);Betreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Hallo Mark, vielen Dank für deine Hilfe, aber könntest du mir bei diesem Problem noch etwas weiterhelfen?
Ich habe versucht, das obige Skript einzubetten, es werden keine Fehler angezeigt, aber es werden auch keine Ergebnisse angezeigt. Ich bin mir nicht sicher, wo ich es falsch gemacht habe.
Hier ist das Skript, das wie vorgesehen funktioniert:
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} )
}
)
);Hier sind die beabsichtigten Ergebnisse:

Jetzt habe ich versucht, den Teil „Lognormal Estimate Probability“ durch das Skript zu ersetzen, wie unten gezeigt:
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
)
)
}
)
);Es gibt keine Fehler, aber es passiert auch nichts:

Übrigens habe ich auch die Dummy-Daten angehängt, die zur Generierung der Ergebnisse verwendet wurden.
Vielen Dank.
Betreff: Wie kann ich dafür sorgen, dass die Variable der Liste für die Quantil-/Wahrscheinlichkeitsschätzung in „Fit Life by X“ funktioniert?Nicht alle Funktionen werten beim Aufruf Variablenargumente aus, daher müssen Sie einen Literalwert für das Argument verwenden. In der Zwischenzeit können Sie Ausdrücke verwenden, um dieses Problem zu lösen. Menschen haben unterschiedliche Stile. Hier ist ein Beispiel, um die Idee zu veranschaulichen.
list_Category_num = {0 ,1, 2, 3};
Eval(
Substitute(
Expr( Lognormal Estimate Probability( Profile, {1000}, vvv ) ),
Expr( vvv ), list_Category_num
)
);