Hallo allerseits,
Ich war ein wenig frustriert darüber, dass JMP immer noch keine GAM-Modellierungsplattform hat (auch wenn sie seit vielen Jahren in SAS existiert), also habe ich mich entschieden, ein Add-In zu erstellen, das auf dem mgcv-Paket in R basiert. Um dieses Add-In auszuführen, benötigen Sie also R v. 3.3.3 auf Ihrem Computer läuft. Es erstellt im Grunde ein JMP-Dialogfenster mit vielen der im R-Paket verfügbaren Optionen und ruft die wesentlichen Ergebnisse von R ab und fügt einige Diagramme und Optionen hinzu. Wenn Sie zusätzliche Funktionen benötigen, lassen Sie es mich bitte wissen. Hier sind einige Screenshots der Benutzeroberfläche und des Ergebnisfensters.
Mit freundlichen Grüßen, Yves



Hallo Yves!
Danke für so eine prompte Antwort!!
Tatsächlich funktioniert es mit dem Skript (vielleicht liegt es daran, dass ich R 3.3 vorher nicht installiert hatte, jetzt habe ich es). Ich frage mich, ob Sie mir etwas für meine gewöhnlichen Prädiktoren empfehlen können, die eine gute Passform haben, wie ein SASH oder ein Zero-inflated Poisson). Ich habe gelesen, dass die Verwendung eines bestraften Splines normalerweise mit einer bestimmten Anzahl von Knoten verwendet werden kann (bezogen auf die Anzahl der normalen Ebenen).
Hallo Ptagger,
Ich benutze es nicht sehr oft, aber ich habe es gerade ausprobiert und es funktioniert gut mit 16. Nicht sicher, was das Problem sein könnte. Haben Sie nur das Skript im Gegensatz zum Add-In ausprobiert?
Yves
Hallo Yves Praire!
Wirklich interessantes Add-in, ich frage mich, ob es mit JMP Pro 16.1 kompatibel ist?
Ich bekomme eine Fehlermeldung, wenn ich versuche, es zu installieren.

Hallo Ingrid,
Tut mir leid, dass ich deinen Beitrag nicht gesehen hatte. Wenn mccv es ausgibt, dann wäre es einfach, es hinzuzufügen. Ich werde es prüfen.
Danke für dein Interesse, Yves
Hallo Yves @yvesprairie ,
Vielen Dank für die Veröffentlichung dieses Skripts, ich führe meine GAMs durch.
Ist es möglich, dem Skript eine Methode zur Berechnung von AIC hinzuzufügen?
Mit freundlichen Grüße,
Ingrid Rognes
Lieber Herr
Vielen Dank, ich werde einige Änderungen vornehmen, die in R-3.6.1 ausgeführt werden, und hierher senden
Grüße, Rawdy
Hallo Rawdy,
Hier ist das Skript dazu. Grüße, Yves
Names Default To Here( 1 );
Clear Globals();
//
// Check host and R connection
//
macsys = Host is( "Mac" );
winsys = Host is( "Windows" );
connected = R Is Connected();
R Term();
If( connected == 0,
If( macsys == 1,
Set Environment Variable( "R_HOME", "/Library/Frameworks/R.framework/Versions/Current/Resources" )
);
If( winsys == 1,
ppath = Pick Directory( "Locate the directory of your R program version 3.3.3" );
ppath=substr(ppath,2,length(ppath)-1);
part = Parse( Eval Insert( "
Set Environment Variable( \!"R_HOME\!",\!"^ppath^\!" );" ) );
Eval( part );
);
);
R Init();
connected = R Is Connected();
R Term();
If( connected == 0,
ww2 = New Window( "Warning",
Spacer Box(),
Text Box( " CANNOT ESTABLISH CONNECTION WITH R " ),
Spacer Box(),
H Center Box(
Button Box( "OK",
ww2 << close window;
)
)
);
Stop();
);
//
// CHECK R VERSION
//
R Init();
connected = R Is Connected();
If( connected == 1,
Rver = Char( R Get Version() );
If( Rver == "[3 3 3]",
,
ww1 = New Window( "Warning",
<<MODAL> 1, TAV ||= TLV );
If( Nxvar >= 1,
TAV ||= TSV,
Print( "Please select variables" )
);
nm = Loc Nonmissing( TAV );
nnm=n row(nm);
SV=TSV[nm];
LV=TLV[nm];
YV=TYV[nm];
LY = Min( YV ) * .95;
HY = Max( YV ) * 1.05;
if(nnm<NPTERMS>= HR,
HR = Abs( LR ),
LR = -HR
);
R Term();
genfit = rsq || dev || nobs;
pest = J( npterms, 1, . );
pstderr = J( npterms, 1, . );
pt = J( npterms, 1, . );
pprob = J( npterms, 1, . );
For( i = 1, i <= npterms, i++,
pest[i] = ptable[i];
pstderr[i] = ptable[i + 1 * npterms];
pt[i] = ptable[i + 2 * npterms];
pprob[i] = If( ptable[i + 3 * npterms] <= 0.0001,
0.0001,
ptable[i + 3 * npterms]
);
);
sedf = J( nxvar, 1, . );
srdf = J( nxvar, 1, . );
sf = J( nxvar, 1, . );
sprob = J( nxvar, 1, . );
For( i = 1, i <= nxvar, i++,
sedf[i] = stable[i];
srdf[i] = stable[i + nxvar * 1];
sf[i] = stable[i + 2 * nxvar];
sprob[i] = If( stable[i + 3 * nxvar] <= 0.0001,
0.0001,
stable[i + 3 * nxvar]
);
);
New Window( "GAM Model Fit",
Outline Box( Eval Insert( "Family: ^selfam^" ) ),
Outline Box( Eval Insert( "Link function: ^sellnk^" ) ),
Outline Box( "Whole Model",
{"Save predicted", New Column( "Predicted values", values( fitvalues ) ),
"Save residuals", New Column( "Residuals", values( YV - fitvalues ) )},
H List Box(
V List Box(
Outline Box( "Obs vs Pred.",
Graph Box(
X Scale( LYH, HYH ),
Y Scale( LY, HY ),
Yname( "Obs Y" ),
Xname( "Pred Y" ),
Frame Size( 250, 250 ),
Line( {LY, LY}, {HY, HY} ),
Marker( Marker State( 0 ), fitvalues, YV )
)
),
Outline Box( "Residuals vs Pred.",
Graph Box(
Y Scale( LR, HR ),
X Scale( LYH, HYH ),
Yname( "Residuals" ),
Xname( "Pred Y" ),
Frame Size( 250, 120 ),
Line( {LYH, 0}, {HYH, 0} ),
Marker( Marker State( 0 ), fitvalues, Resids )
)
)
),
Outline Box( "Smoother and Linear leverage plots", Picture Box( SmPl ) )
)
),
Outline Box( "Summary of Fit",
Table Box(
String Col Box( , {"adj. R-square", "Deviance", "Number of Obs."} ),
Number Col Box( , genfit )
)
),
Outline Box( "Parametric terms estimates",
Table Box(
String Col Box( "Term", pterms ),
Number Col Box( "Estimate", pest ),
Number Col Box( "Std Error", pstderr ),
Number Col Box( "Prob.", pprob ),
)
),
Outline Box( "Smoothed terms estimates",
Table Box(
String Col Box( "Term", sterms ),
Number Col Box( "Est. df", sedf ),
Number Col Box( "Ref df", srdf ),
Number Col Box( "F", sf ),
Number Col Box( "Prob.", sprob ),
)
)
);
If( cw == 0,
nw << close window
);
)
)
)
)
);</NPTERMS></MODAL>Liebe Rawdy,
Leider hat dies nichts mit dem Skript zu tun, sondern ist eine Einschränkung der JMP R-Integrationsfunktionen. Nur JMP kann das beheben. Vermutlich werden sie es in der nächsten Version von JMP beheben ... Davon abgesehen können Sie mehrere Versionen von R auf Ihrem Computer haben, einschließlich R 3.3.3.
Grüße, Yves