JSL for confidence bands on model plots, better ideas?I would like to get a plot of my data, overlaid with the results from a model, with shaded confidence bands.
A plot like this one from Fit Model for example but with shaded confidence intervals around the lines of fit:

I'm aware that for this particular example I could get what I'm looking for in FitYbyX:

So that shows what I'm seeking but that doesn't work for some fits - for example if I wanted to do this fit and constrain it to same slope for each sex.
Also, I see some posts where others have requested similar things but also involving Fit Curve or Nonlinear fits:
Solved: How to add the confidence intervals to a logistic regression plot? - JMP User Community
plotting confidence intervals in JMP "fit curve" - JMP User Community
Two of the suggestions in those threads aren't entirely satisfying to me:
One is that there are confidence bands in the profiler. Nice, but that doesn't help this kind of example where I'd like the fits overlaid.
(I appreciate too that there could easily be too many factors for Fit Model to even make that Regression Plot, that may be why it's not that full featured -there's an expectation you'll be using this with more complex models you need to explore with profiler? But there are cases where the simple plot or one with overlaid curves is useful).


Another was a nice way to shade between curves in graph builder using saved predicted values.
Solved: How do I create a shaded confidence interval on a Graph Builder plot? - JMP User Community
Also nice in some cases but I want the predictions to be a smooth curve extending beyond the actual data.
That seems to leave capturing the formulas for the confidence bands from the platform, then using those in a graphics script.
I think I see the path to that, but it seems like enough of a pain that I'm wondering whether I'm missing a smarter way before I get too far into it. Or has this already been demonstrated somewhere?
In my example, the formula looks like this (for the lower confidence limit only):

I need to do some substitution into that and make a Y curve for each sex:

Here's that just drawing those lower limit lines, so far so good...

I can repeat for the prediction itself and the upper confidence line and then to shade... I can make a polygon using a series of points from along each pair of curves... ugh, I see I can do that but it's seeming overly complicated... Am I missing some simpler way even for just this part of wanting to shade between Y functions? or is this really the right path?
In short:
Is there actually some way to get this type of plot out of these modeling platforms more directly? (if not, I'm thinking it might be a worthwhile wish list item.).
If not, better ideas on how to create the desired plot than the graphics scripts I described?
If not, am I missing something simpler than polygon for doing the shading between Y curves in a graphic script?
Thanks!
Advanced Statistical ModelingAutomation and ScriptingBasic Data Analysis and ModelingBetreff: JSL für Konfidenzbänder in Modelldiagrammen, bessere Ideen?Hallo @hardner ,
Ich denke, Sie sollten über die Fit Y by X-Plattform tun können, was Sie wollen, zumindest verstehe ich, was Sie wollen. Ich bin mir nicht sicher, ob Sie mit der nichtlinearen Plattform dasselbe tun können.
Wenn Sie auf das rote Dreieck neben der bivariaten Anpassung klicken und „Spezialanpassung ...“ anstelle von „Linie anpassen“ auswählen, können Sie die Daten transformieren oder lineare Anpassungen auf eine bestimmte Steigung oder einen bestimmten Achsenabschnitt beschränken. In Ihrem Beispiel habe ich das mit einer Steigung von 0,113 gemacht.


Und die Konfidenzbänder erstrecken sich über die Datenpunkte hinaus, Sie müssen lediglich den Bereich auf den Achsen anpassen.

Basierend auf dem, was Sie in Ihrem Beitrag beschrieben haben, denke ich, dass es das ist, wonach Sie gesucht haben. Oder vielleicht verstehe ich nicht ganz, was Sie wollen.
Hoffe das hilft,
DS
Betreff: JSL für Konfidenzbänder in Modelldiagrammen, bessere Ideen?Hallo @SDF1 ,
Danke! Das Problem dabei ist, dass diese Vertrauensbänder super eng sind, weil Sie ihm gesagt haben, wie hoch die Steigung ist – es ist in diesem Teil sehr zuversichtlich und hat nur den Achsenabschnitt angepasst. Sie können die Steigung im Anpassungsmodell anpassen und sie dann hier angeben, um die Anpassungslinien schön überlagert zu sehen – und die Anpassungsgleichungen schön angezeigt zu sehen, verglichen mit dem Anpassungsmodell. Und es wird schöne Vertrauensbänder zeichnen. Also, ja, das ist genau die Art von Bild, nach der ich gesucht habe, und für einige Anpassungen funktioniert FitYbyX – aber das sind nicht die Vertrauensbänder, die ich will.
Betreff: JSL für Konfidenzbänder in Modelldiagrammen, bessere Ideen?Hallo @hardner ,
Ich glaube, ich verstehe immer noch nicht, was Sie wollen.
Sie haben in Ihrem ursprünglichen Beitrag erwähnt: „… wenn ich beispielsweise diese Anpassung vornehmen und sie auf dieselbe Steigung für jedes Geschlecht beschränken möchte.“ Aus diesem Grund habe ich in meinem Beispiel genau das getan und die Steigung für jedes Geschlecht festgelegt.
In Ihrem letzten Beitrag sagen Sie: „Aber das sind nicht die Konfidenzbänder, die ich will.“ Nach welchen Konfidenzbändern suchen Sie? Es gibt zwei Konfidenzkurven in der Plattform „Fit Y by X“: Confid Curves Fit – für den erwarteten Wert des Mittelwerts und Confid Curves Indiv – das sind die Konfidenzgrenzen für einen einzelnen vorhergesagten Wert, der die Abweichungen in den Fehler- und Parameterschätzungen widerspiegelt. (Zusammenfassung von der JMP-Online-Hilfeseite). Sind es die Indiv-Kurven, nach denen Sie suchen?
DS
Betreff: JSL für Konfidenzbänder in Modelldiagrammen, bessere Ideen?Hallo @SDF1 ,
Danke, dass Sie weiterhin über mein Problem nachdenken. Es tut mir leid, dass ich mein Beispiel nicht deutlicher gemacht habe. Soweit ich das beurteilen kann, funktioniert „Y durch X anpassen“ für die Konfidenzbänder nicht.
Das Problem ist, dass ich, um die Steigung so einzuschränken, dass sie für beide Geschlechter gleich ist, trotzdem möchte, dass diese Steigung angepasst wird. In „Y an X anpassen“ können Sie die Steigung einschränken, müssen aber den Wert angeben, nicht nur, dass er für alle Gruppen gleich ist (glaube ich).
Wenn ich die Anpassung im Anpassungsmodell durchführe, kann ich tatsächlich sowohl Steigungen als auch Schnittpunkte anpassen und gleichzeitig erzwingen, dass die Steigungen (oder Schnittpunkte) für jedes Geschlecht gleich sind.

Anschließend kann ich (unter „Spalten speichern“) Werte bzw. eine Formel für mittlere Konfidenzgrenzen abspeichern.
Unten habe ich diese Grenzen mithilfe des Graph Builders rechts dargestellt (das ist die Lösung für mein Problem, die mir nicht gefiel, weil sie auf bestimmte Punkte in der Tabelle beschränkt ist, aber sie zeigt die Konfidenzbänder, die ich für diesen Fall will, zumindest über einen begrenzten Bereich). Links ist FitYby X, wo ich einfach sage, dass es sich auf den Steigungswert beschränken soll, den ich von Fit Model erhalten habe. Diese Konfidenzbänder (ich will die mittleren – die dunkleren und engeren Bänder – aber ich habe auch Indiv hinzugefügt) sind linear – sie fächern sich bei höheren oder niedrigeren Gewichten nicht auf, weil die angegebene Steigung zu 100 % zuverlässig ist. In der Mitte der Daten liegen sie sehr nahe beieinander, weil es bei Fit Y by X nur um die vertikale Variation geht – bei der Anpassung der Schnittpunkte.

Die Einzelkurven sind nicht das, was ich will, Vertrauen in einzelne Punkte, die innerhalb des Bandes liegen. Ich will Vertrauensbänder in Bezug auf den Mittelwert, aber ich will, dass sie sich auf die Anpassung an die Steigung und die Schnittpunkte beziehen.
Es scheint, als wäre FitYbyX die einzige Plattform, die die Überlagerung der Originaldaten, der Anpassungen und der Konfidenzbänder schön macht, aber es gibt Gründe, warum Sie dort nicht alle Anpassungen vornehmen können. Ich denke, die anderen Plattformen wie Fit Model, Nonlinear und Fit Curve können einige Anpassungen vornehmen, die Sie in FitYbyX nicht machen können (wie dies nur ein Beispiel ist), und für einige Fälle, in denen Sie solche Diagramme erstellen könnten , weil es nur das eine X gibt, und stattdessen haben sie nur Optionen zum Speichern der Konfidenzgrenzen für die Anpassungen, aber keine Option zum Überlagerungsdiagramm.
Betreff: JSL für Konfidenzbänder in Modelldiagrammen, bessere Ideen?Hallo @hardner ,
Ich verstehe Ihr Dilemma jetzt besser. Danke, dass Sie sich die Zeit genommen haben, Ihr Problem anders zu formulieren.
Kurz gesagt, ich glaube, Sie haben Recht, dass Fit Y by X die einzige Plattform ist, die eine schöne Überlagerung der Anpassungen ermöglicht, bei der Sie das Diagramm erweitern können, um zu sehen, wie sich die Konfidenzbänder ändern. Und es ist in der Regel sinnvoll, dass die in der Datentabelle gespeicherten Vorhersageformeln nur auf die Anzahl der Zeilen in dieser Datentabelle angewendet werden.
Es gibt jedoch möglicherweise eine Problemumgehung, die Ihrem Wunsch ziemlich nahe kommt. Sie ist nicht perfekt, aber aufgrund der Einschränkungen der verschiedenen Plattformen, die Sie verwenden müssen (wie andere Modellanpassungsplattformen, die nicht Fit Y by X sind), ist sie wahrscheinlich die beste Lösung, die Sie finden können.
Meine Idee bestand darin, in der Datentabelle einige „Dummy“-Spalten mit Dummy-Zeilen zu erstellen, in denen die Werte den erwarteten Mittelwert darstellen. Auf diese Weise sollten Ihre Konfidenzbänder nicht durcheinander geraten.
Hier sind die Ergebnisse mit Graph Builder und dem entsprechenden JSL-Code – wie das, was Sie gezeigt haben.

Graph Builder(
Graph Spacing( 4 ),
Variables(
X( :hidden weight ),
Y( :Lower 95% Mean height ),
Y( :Upper 95% Mean height, Position( 1 ) ),
Y( :Pred Formula height, Position( 1 ) ),
Y( :hidden height, Position( 1 ) ),
Overlay( :sex )
),
Elements(
Area( X, Y( 1 ), Y( 2 ), Legend( 2 ), Area Style( "Range" ) ),
Line( X, Y( 3 ), Legend( 1 ) ),
Points( X, Y( 4 ), Legend( 1 ) )
),
SendToReport( Dispatch( {}, "X title", TextEditBox, {Set Text( "weight" )} ) )
);
Hier sind die Schritte, die ich unternommen habe, um dorthin zu gelangen (und natürlich kann dies alles in JSL codiert werden, würde aber für jeden Fall, mit dem Sie möglicherweise arbeiten, einige Zeit in Anspruch nehmen).
1. Nachdem Sie das Modell wie zuvor angepasst ausgeführt haben, speichern Sie die relevanten Formelspalten (Vorheriger Mittelwert und +/-95 % Mittelwert-KIs).
2. Erstellen Sie zwei Dummy-Spalten – ich habe :hidden height und :hidden weight für die Namen gewählt.
2a. Fügen Sie der Datentabelle vier Zeilen hinzu, damit Sie zwei Punkte (niedrige und hohe Werte) für das männliche und das weibliche Geschlecht erhalten.
3. Machen Sie aus jeder dieser Spalten eine Formel
3a. Für :hidden height sieht es so aus:

3b. Für :hidden weight sieht es so aus:

HINWEIS: Ich habe 0 und 200 als Werte gewählt, weil sie einfach waren (der Achsenabschnitt ist einer davon), und den anderen habe ich einfach als höheren Extremwert gewählt, diese können jedoch Ihren Anforderungen entsprechend eingestellt werden.
4. Ändern Sie die Formeln für den Vorhersagemittelwert und die +/-95 %-Konfidenzintervalle so, dass für die Berechnungen nicht :weight, sondern :hidden weight verwendet wird. Ein Beispiel für den Vorhersagemittelwert finden Sie weiter unten.

5. Gehen Sie zurück und führen Sie Ihren JSL-Code erneut aus, ändern Sie jedoch die Spalten :height und :weight in die entsprechenden Dummy-Spalten, sodass diese zusätzlichen vier Zeilen in die Datentabelle aufgenommen werden.
6. Als letztes habe ich die letzten vier Zeilen vom Standardmarkierungsstil in den Markierungsstil „/“ geändert, damit diese Mittelwertendpunkte weniger sichtbar sind als die Daten selbst. Sie haben die Möglichkeit, „Andere…“ auszuwählen und ein anderes Zeichen zu verwenden. Ich habe gerade die doppelten nach rechts zeigenden Anführungszeichen (») von MS Word ausprobiert und es hat problemlos funktioniert.

Beachten Sie, dass ich auch die X-Achse in „Gewicht“ umbenannt habe, sodass das „versteckte Gewicht“ nicht angezeigt wurde.
Aber basierend auf Ihrer Beschreibung denke ich, dass dies das erledigen sollte, wonach Sie suchen. Es ist nicht die einfachste oder eleganteste Lösung, aber es erledigt die Aufgabe. Ich finde es einfacher, als beispielsweise zu versuchen, mit Polygonen im Graph Builder zu arbeiten.
Etwas, worüber man nachdenken und nachdenken sollte.
Hoffe das hilft,
DS
Betreff: JSL für Konfidenzbänder in Modelldiagrammen, bessere Ideen?Danke!
Im Graph Builder sieht es ganz gut aus! Ich möchte die Tabelle wirklich nicht „verfälschen“ (mein Anwendungsfall ist ein Tool für andere), aber eine private Kopie der Tabelle ist eine Möglichkeit. Das ist auf jeden Fall etwas, worüber ich nachdenken sollte, auch wenn ich denke, dass ich es zumindest mit dem Grafikskript versuchen muss, um zu sehen, ob ich Polygone glatt genug machen kann, damit sie genauso gut aussehen.
Ich schätze es besonders, wenn auch andere Augen darauf schauen und zustimmen, dass dies tatsächlich die Situation zu sein scheint und dass es keine offensichtliche integrierte Option gibt, die ich übersehe.