Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenIch habe eine Modellformel in Spalte 1 mit 2 Parametern und möchte dieses Modell an 80 verschiedene Datenspalten (Spalten 2 - 82) anpassen, wobei jede Datenspalte diese 2 Parameter hat, die dafür angepasst sind. Gibt es eine einfache Möglichkeit, dies zu tun?
Muss ich ein Drehbuch schreiben?
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenAm Ende konvergiert dies als Lösung:
Namen standardmäßig hier( 1 );
dlg = Spaltendialog(
Title( "Nichtlineare Regression" ),
yCol = Col List( "Y, Antwort",
Datentyp (Numerisch),
Min. Spalte( 1 )
),
xCol = Col List( "X, Prädiktorformel",
Datentyp (Numerisch),
Min Col( 1 ),
Max. Spalte( 1 )
)
);
If(dlg["Schaltfläche"] != 1,
Throw( "Benutzer abgebrochen" );
);
Entfernen aus ( dlg );
Auswertungsliste( dlg );
dt = Aktuelle Datentabelle ();
n passt = N Items( yCol );
Formel = xCol[1] << Formel abrufen;
n parms = N Items(Arg(formel, 1));
parm = J( n passt, 2* n parms, .);
clmnm={};
parmnm = Arg(formel,1);
parclnm = As List(J(1,n parms));
For( i = 1, i<= n Parameter,i++,
parmnm[i]=Char(parmnm[i]);
parclnm[i]=Left(parmnm[i],Munger(parmnm[i],1,"=")-1);
);
For( f = 1, f <= n passt, f++,
Versuchen(
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, nur numerische Ableitungen (1), Finish, Go );
parm[f,[1,2]] = Transpose( Report( nl fit )["Solution"][NumberColBox(5)] << Get As Matrix );
parm[f,[3,4]] = Transpose( Report( nl fit )["Solution"][NumberColBox(6)] << Get As Matrix );
);
clmnm[f]=Spalte(ySpalte[f])< );
dt = Als Tabelle (parm);
dt< Spalte = Spalte (1);
For( f = 1, f <= n passt, f++,
col[f]=clmnm[f];
);
For( i = 1, i<= n Parameter,i++,
Spalte = Spalte (i+1);
col << Set Name(parclnm[i]||"Schätzung");
col = Column(i+1+n Parameter);
col << Set Name(parclnm[i]||"ApproxStdError");
);
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenIch habe es herausgefunden!
Danke schön!
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere Spaltenes schlägt bei diesem Schritt fehl
parm[f,0] = Transpose( Report( nl fit )["Parameterschätzungen"][NumberColBox(1)] << Get As Matrix );
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenDanke schön!
Jetzt testen ...
folgenden Fehler beim Debuggen erhalten
Anzeigefeld kann beim Zugriff oder bei der Auswertung von 'Subscript' nicht subscriptiert werden, Bericht ( nl fit )[/*###*/"Parameter Estimates"]
@Mark_Bailey schrieb:
Diese Lösung erweist sich als etwas knifflig. Es funktioniert nur, wenn das von Ihnen verwendete Modell NICHT eines der Modelle in der Fit Curve-Bibliothek ist. (Wenn dies der Fall ist, startet Nonlinear Fit Curve, das erwartet, dass das Modell namentlich angegeben wird, was dieses Skript nicht bietet.) Basierend auf Ihrer Behauptung, dass das tatsächliche Modell komplizierter ist, habe ich das Risiko eingegangen, dass dies der Fall ist nicht in der Fit Model-Bibliothek und schrieb dieses Skript:
Names Default to Here( 1 );
dlg = Column Dialog(
Title( "Nonlinear Regression" ),
yCol = Col List( "Y, Response",
Data Type( Numeric ),
Min Col( 1 )
),
xCol = Col List( "X, Predictor Formula",
Data Type( Numeric ),
Min Col( 1 ),
Max Col( 1 )
)
);
If( dlg["Button"] != 1,
Throw( "User cancelled" );
);
Remove From( dlg );
Eval List( dlg );
dt = Current Data Table();
n fits = N Items( yCol );
formula = xCol[1] << Get Formula;
n parms = N Items( Arg( formula, 1 ) );
parm = J( n fits, n parms, . );
For( f = 1, f <= n fits, f++,
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, Finish );
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
);
As Table( parm );
Öffnen Sie zuerst die JMP-Datentabelle, öffnen Sie dann dieses Skript und führen Sie es aus. Wählen Sie alle Antwortspalten (Spalten 2-82 in Ihrem Beispiel) aus und klicken Sie Y, Antwort . Klicken Sie auf die Spalte mit der Modellformel (in Ihrem Beispiel Spalte 1) und klicken Sie X, Vorhersageformel , . Dann klick OK .
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenDiese Lösung erweist sich als etwas knifflig. Es funktioniert nur, wenn das von Ihnen verwendete Modell NICHT eines der Modelle in der Fit Curve-Bibliothek ist. (Wenn dies der Fall ist, startet Nonlinear Fit Curve, das erwartet, dass das Modell namentlich angegeben wird, was dieses Skript nicht bietet.) Basierend auf Ihrer Behauptung, dass das tatsächliche Modell komplizierter ist, habe ich das Risiko eingegangen, dass dies der Fall ist nicht in der Fit Model-Bibliothek und schrieb dieses Skript:
Names Default to Here( 1 );
dlg = Column Dialog(
Title( "Nonlinear Regression" ),
yCol = Col List( "Y, Response",
Data Type( Numeric ),
Min Col( 1 )
),
xCol = Col List( "X, Predictor Formula",
Data Type( Numeric ),
Min Col( 1 ),
Max Col( 1 )
)
);
If( dlg["Button"] != 1,
Throw( "User cancelled" );
);
Remove From( dlg );
Eval List( dlg );
dt = Current Data Table();
n fits = N Items( yCol );
formula = xCol[1] << Get Formula;
n parms = N Items( Arg( formula, 1 ) );
parm = J( n fits, n parms, . );
For( f = 1, f <= n fits, f++,
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, Finish );
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
);
As Table( parm );
Öffnen Sie zuerst die JMP-Datentabelle, öffnen Sie dann dieses Skript und führen Sie es aus. Wählen Sie alle Antwortspalten (Spalten 2-82 in Ihrem Beispiel) aus und klicken Sie Y, Antwort . Klicken Sie auf die Spalte mit der Modellformel (in Ihrem Beispiel Spalte 1) und klicken Sie X, Vorhersageformel , . Dann klick OK .
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenSie können es ohne ein Skript tun, aber es erfordert viel Klicken. Angenommen, Sie haben das nichtlineare Modell bereits als Spaltenformel eingerichtet, gehen Sie folgendermaßen vor:
- Wählen Sie Tabellen > Stapeln aus.
- Wählen Sie alle Antwortspalten (in Ihrem Beispiel 2-82) aus und klicken Sie auf Stapeln.
- Stellen Sie sicher, dass die Option zum Kopieren der Formeln ausgewählt ist.
- Geben Sie einen Namen für die Datenspalte ein, z. B. Antwort.
- Geben Sie einen Namen für die Spalte Beschriftung ein, z. B. Kurve.
- OK klicken.
- Wählen Sie Analysieren > Spezialisierte Modelle > Nichtlinear aus.
- Wählen Sie die Prädiktorspalte (in Ihrem Beispiel 83) aus und klicken Sie auf X
- Wählen Sie die Modellspalte (1 in Ihrem Beispiel) und klicken Sie auf Y.
- Wählen Sie die Spalte Kurve aus und klicken Sie auf Nach.
- OK klicken.
- Klicken Sie nun für jede Kurve auf Los. (Das ist der langwierige Teil.)
- Klicken Sie mit der rechten Maustaste auf einen beliebigen Parameterschätzungsbericht und wählen Sie Kombinierte Datentabelle erstellen aus.
Dieser Prozess sollte Ihnen eine neue Datentabelle mit allen Parameterschätzungen liefern.
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenMarkieren,
Danke schön.
Die Antworten auf alle Ihre Verifizierungsfragen lauten Ja.
Die Formel kann alles sein, aber nehmen wir der Einfachheit halber an, dass sie y = h*exp(-b*x^(0,65)) ist, mit h und b als Parameter und x>0.
Die eigentliche Formel ist viel komplizierter, aber diese zusätzliche Komplikation sollte die Lösung nicht beeinflussen.
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenIch werde noch einmal fragen: Was ist das nichtlineare Modell (f(X)), das in der Formel in Spalte 1 ausgedrückt wird? Was sind die beiden Parameter?
Verifizieren: Prädiktor (X) ist letzte Spalte und wird in Formel in Spalte 1 verwendet?
Verifizierung: Die einzelnen Antworten (Y) sind in den Spalten 2-82?
Verifizieren: Sie möchten Y = f(X) separat an jedes Y anpassen und die Parameterschätzungen für jedes Y erfassen?
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenJa, eine Prädiktorvariable existiert in einer anderen Spalte.
Wir können es Spalte 83 nennen, wenn Sie möchten.
Und ich nehme an, meine Zielausgabe wäre eine Tabelle, die die am besten passenden Werte der beiden Parameter pro Spalte mit den zugehörigen Konfidenzintervallen zeigt.
Re: Skript? Anwenden einer nichtlinearen Modellspaltenformel auf mehrere SpaltenWas ist Ihr nichtlineares Modell, das als Formel in Spalte 1 gespeichert ist? Diese Formel ist normalerweise eine Funktion der Prädiktorvariablen. Welche Spalte enthält die Prädiktorwerte?
Wenn dieser Fall einfach ist, kann ich ein Skript schreiben.