JSL: Gibt es eine Möglichkeit, „x“-Werte mithilfe einer Regressionsgleichung automatisch von „y“ zu interpolieren?Ich verwende JSL derzeit zum ersten Mal, um die Datenanalyse/Berichterstellung zu automatisieren. Meine Analyse umfasst:
1. Import der benötigten Daten (fertig)
2. Analyse der Daten (Daten)
3. Mithilfe berechneter Daten eine bivariate Analyse durchführen und eine Linie anpassen (fertig)
4. Verwendung der generierten Regressionsgleichung zur Vorhersage von „x“ für bestimmte „y“-Werte: Hier liegt mein Problem. Ich hätte gerne die Möglichkeit, in JSL dynamisch „x“ aus „y“ zu generieren. Ich möchte die Regressionsgleichung auch nicht manuell eingeben müssen, da dies für verschiedene Datensätze unterschiedlich wäre.
Irgendwelche Hinweise?
Betreff: JSL – Gibt es eine Möglichkeit, „x“-Werte mithilfe der Regressionsgleichung automatisch von „y“ zu interpolieren?Dabei wird die Anpassungskurvenplattform verwendet und eine Formelspalte mit den inversen Vorhersagen gespeichert.
dt=open("$Sample_Data/Big Class.jmp");
model= Fit Curve( Y( :height ), X( :weight ) );
model<< Fit Linear(Save Inverse Prediction Formula);
Sie könnten entweder einfach die Werte in der Tabelle verwenden, Sie könnten aber auch die Formelspalteneigenschaft erhalten,
Betreff: JSL – Gibt es eine Möglichkeit, „x“-Werte mithilfe der Regressionsgleichung automatisch von „y“ zu interpolieren?Ich hätte um Klarstellung bitten sollen.Wollten Sie wirklich eine umgekehrte Vorhersage machen?Wenn ja, können Sie immer noch meine Methode verwenden und einfach eine Formel mit (:height - coef[1])/coef[2] erstellen.
Betreff: JSL – Gibt es eine Möglichkeit, „x“-Werte mithilfe der Regressionsgleichung automatisch von „y“ zu interpolieren?Der einfachste Weg könnte darin bestehen, „Fit Model“ zu verwenden und die „Fit Least Squares“-Plattform mit integrierter inverser Vorhersage zu nutzen.
Betreff: JSL – Gibt es eine Möglichkeit, „x“-Werte mithilfe der Regressionsgleichung automatisch von „y“ zu interpolieren?Ein anderer Ansatz: Verwenden Sie „Modell anpassen“ und dann den Befehl „Inverse Vorhersage“.
Betreff: JSL – Gibt es eine Möglichkeit, „x“-Werte mithilfe der Regressionsgleichung automatisch von „y“ zu interpolieren?Hallo @Ainaskid
Es gibt wahrscheinlich eine Million Möglichkeiten, das zu erreichen, was Sie erreichen möchten.Es hängt davon ab, wie Sie die Werte der Prädiktoren angeben möchten, um die vorhergesagte Antwort zu erhalten.Möchten Sie dies in einem Dialogfeld tun, in dem der Benutzer eine Zahl eingibt, eine Taste drückt und das Fenster eine Vorhersage zurückgibt?Wäre es akzeptabel, einfach neue Werte von X als zusätzliche Zeilen in Ihre Datentabelle einzufügen und eine Vorhersageformel den vorhergesagten Wert in einer Spalte zurückgeben zu lassen?
Ich zeige Ihnen schnell, wie man Letzteres macht, da es einfacher ist.Hier ist ein Beispiel, bei dem der Big-Class-Datensatz verwendet und die Körpergröße anhand des Gewichts vorhergesagt wird:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ), Fit Line() ); //get reference to Bivariate object
rpt = (biv << Report); //get reference to report window for Biv
//get the coefficients from the parameter estimates table
Coefs = (rpt["Parameter Estimates"][Table Box( 1 )] << Get as Matrix)[0, 1];
//Create prediction formula from the coefficients
Eval(
Parse(
Eval Insert( "\[dt << New Column("Prediction Formula", formula(^Coefs[1]^ + ^Coefs[2]^*:weight))]\" )
)
);
//You'll want to hard code in the value of the coefs using the string
//Otherwise this column won't work once Coefs is no longer defined or the value has changed
//The "Eval Insert" function inserts the value of Coefs[1] and Coefs[2] into the formula - this is how it is hard-coded in
Jetzt sollten Sie in „Big Class“ eine neue Spalte mit den Vorhersagen sehen.Da es sich um eine Formel handelt, kann ich neue Zeilen mit Gewichtswerten hinzufügen und neue Höhenvorhersagen erhalten.Hier habe ich eine Zeile für 200 hinzugefügt und als Vorhersage 75,42 erhalten
Ich möchte darauf hinweisen, dass dies sogar noch einfacher ist, wenn Sie das Modell stattdessen in der Fit Model-Plattform anpassen, da Sie einfach eine << Prediction Formula-Nachricht an das Fit Model-Objekt senden können, um die Spalte mit der Vorhersageformel zu erhalten.
FitMod = dt << Fit Model(
Y( :height ),
Effects( :weight ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" ), Run()
);
FitMod << Prediction Formula;