Mi sto bloccando su come prendere la derivata dell'adattamento della spline. Il modo in cui l'ho scritto, è tratto direttamente dalla formula ma voglio renderlo più robusto. Come posso codificare questo per prendere la derivata della colonna predittore spline?
CWfunc = Funzione({dt_current}, {default local},
//Questa parte della funzione crea il controllo dell'uniformità crossweb//
dt_sub = dt_current;
mostra(dt_sub);
dt_sub << Select Where(:Panel_RS == "Loop Qual Panel 2");
dt_sub2 = dt_sub << Sottoinsieme(
Seleziona righe (1),
solo colonne selezionate ( 0 ),
);
mostra(dt_sub2);
dt_sub3 = dt_sub2 << Sommario(
Gruppo( :Crossweb_LQ, :Loop Lot_LQ ),
Media( :"Pendenza(195-250)"n ),
Frequenza( "Nessuno" ),
Peso( "Nessuno" ),
Link alla tabella dati originale( 0 )
);
dt_sub3:"Crossweb_LQ"n << Imposta tipo di dati("Numerico");
dt_sub3:"Crossweb_LQ"n << Imposta tipo di modellazione("Continuo");
dt_sub4 = dt_sub3 << Bivariato(
Y( :"Media(Pendenza(195-250))"n ),
X( :Crossweb_LQ ),
Da( :Loop Lot_LQ ),
Adatta scanalatura (100),
//Salva previsioni
);
splinecol = dt_sub4 << (Curva[1] << Salva previsioni);
return(dt_current,dt_sub,dt_sub2,dt_sub3);
);
Derfunc = Funzione({dt_sub3}, {locale predefinito},
dt_sub3 << Nuova colonna("Derivata",
Numerico,
"Continuo",
Formato( "Migliore", 12 ),
Formula
Num Deriv(Spline Eval(
:Crossweb_LQ,
[1 2.20042178298482 0.057778359275709 0 -0.000683765776914872,
5 2,38777421036511 0,02495760198378 -0,00820518932298666 0,000416694078291779,
9 2.38299001014311 -0.0206825968420827 -0.00320486038348031 0.000748030601767463,
13 2,29685581515222 -0,0104160110250642 0,00577150683773822
-0.0000755519945723868,
17 2.34270055280314 0.0321295479373521 0.00486488290286867 -0.000773631610584581,
21 2,49954444792103 0,0339142938522158 -0,00441869642415559
-0.0000691115769849535,
25 2,56007933961637 -0,00475263323630778 -0,00524803534797586
0.0000699348227685678,
29 2,46157606976071 -0,0433800445272273 -0,00440881747475221
-0.000380207536072129,
33 2,19318152974715 -0,09690054605672 -0,00897130790762231
-0.0000379484318864192,
37 1.65960971935758 -0.170492534048238 -0.0094266890902598 0.00104740989891671,
40 1.09157198267128 0 0 0]
)
);
);
dt_sub3 << Nuova colonna(" Superato/Non superato",
Carattere,
Nominale,
);
Return(dt_current,dt_sub,dt_sub2,dt_sub3);
);
Slopefunc = Function({dt_current}, {default local};
dt_sum = dt_current << Sommario(
Gruppo( :"Panel Dose (ug/dL)_RS"n, :Loop Lot_LQ, :Foil_LQ ),
Media( :CW corretto AR ),
Frequenza( "Nessuno" ),
Peso( "Nessuno" )
);
mostra(dt_sum);
dt_graph = dt_sum < Y( :"Media(CW corretta AR)"n ),
X( :"Dose pannello (ug/dL)_RS"n ),
Da( :Loop Lot_LQ ),
Raggruppa per ( :Foil_LQ ),
);
mostra(dt_graph);
dt_graph << Adatta linea;
return(dt_graph);
);
mainfunc = Funzione({dt_current}, {default local},
output1 = CWfunc(dt_current);
uscita2 = DerFunc(uscita1[4]);
output3 = Slopefunc(dt_current);
);