From 4a452fdaafc5f11f21efbc5dea50ecbb0a522e63 Mon Sep 17 00:00:00 2001 From: AparicioJohan Date: Fri, 30 Aug 2024 13:17:16 -0500 Subject: [PATCH] docs updating documentation --- R/02_modeler.R | 3 ++- R/05_comparison.R | 3 +-- docs/articles/canopy-model.html | 2 +- docs/articles/how_to_start.html | 8 ++++---- docs/pkgdown.yml | 2 +- docs/reference/anova.modeler-1.png | Bin 35547 -> 34251 bytes docs/reference/anova.modeler.html | 22 ++++---------------- docs/reference/coef.modeler.html | 2 +- docs/reference/confint.modeler.html | 2 +- docs/reference/goodness_of_fit.html | 30 ++++++++++++++++------------ docs/reference/logLik.modeler.html | 15 +++++--------- docs/reference/metrics.html | 2 +- docs/reference/modeler.html | 7 ++++--- docs/reference/plot.modeler.html | 2 +- docs/reference/predict.modeler.html | 2 +- docs/reference/print.modeler.html | 2 +- docs/reference/vcov.modeler.html | 2 +- docs/search.json | 2 +- man/goodness_of_fit.Rd | 3 +-- man/modeler.Rd | 3 ++- 20 files changed, 50 insertions(+), 64 deletions(-) diff --git a/R/02_modeler.R b/R/02_modeler.R index b05006f..8b9e8e9 100644 --- a/R/02_modeler.R +++ b/R/02_modeler.R @@ -14,7 +14,8 @@ #' @param upper Numeric vector specifying the upper bounds for the parameters. Default is \code{Inf} for all parameters. #' @param initial_vals A data frame with columns \code{uid}, and the initial parameter values for each group id. Used for providing specific initial values per group id. #' @param fixed_params A data frame with columns \code{uid}, and the fixed parameter values for each group id. Used for fixing certain parameters during optimization. -#' @param method A character vector specifying the optimization methods to be used. See \code{optimx} package for available methods. Default is \code{c("subplex", "pracmanm", "anms")}. +#' @param method A character vector specifying the optimization methods to be used. Check `optimx::checkallsolvers()` for available methods. +#' Default is \code{c("subplex", "pracmanm", "anms")}. #' @param return_method Logical. If \code{TRUE}, includes the optimization method used in the result. Default is \code{FALSE}. #' @param subset An optional vector with levels of `grp` to filter the data. Default is \code{NULL}, meaning all groups are used. #' @param add_zero Logical. If \code{TRUE}, adds a zero value to the series at the start. Default is \code{FALSE}. diff --git a/R/05_comparison.R b/R/05_comparison.R index 71292e4..a8ffd50 100644 --- a/R/05_comparison.R +++ b/R/05_comparison.R @@ -37,8 +37,7 @@ logLik.modeler <- function(object, ...) { #' @param k Numeric, the penalty per parameter to be used; the default k = 2 is #' the classical AIC. #' @author Johan Aparicio [aut] -#' @return A tibble with columns giving lower and upper confidence limits for -#' each parameter. +#' @return A tibble with columns giving the corresponding AIC and BIC. #' @examples #' library(flexFitR) #' dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) diff --git a/docs/articles/canopy-model.html b/docs/articles/canopy-model.html index dbf72cd..a7ccf60 100644 --- a/docs/articles/canopy-model.html +++ b/docs/articles/canopy-model.html @@ -301,7 +301,7 @@

Fitting Models#> #> Metrics: #> Groups Timing Convergence Iterations -#> 2 0.8812 secs 100% 547 (id) +#> 2 0.8836 secs 100% 547 (id)
 plot(mod_1, id = c(195, 40))

plot fit

diff --git a/docs/articles/how_to_start.html b/docs/articles/how_to_start.html index dfb9028..e340b7a 100644 --- a/docs/articles/how_to_start.html +++ b/docs/articles/how_to_start.html @@ -145,7 +145,7 @@

1. Simple linear regression#> #> Metrics: #> Groups Timing Convergence Iterations -#> 1 0.3946 secs 100% 259 (id) +#> 1 0.4027 secs 100% 259 (id)

Once the model is fitted, we can examine the output, extract the estimated parameters, make some plots, and predict new x values.

+#> 1 0.4067 secs 100% 511 (id)

After fitting the model, we can examine the results, plot the fitted curve, extract the coefficients and their associated p-values, obtain the variance-covariance matrix, and make predictions for unknown values @@ -357,7 +357,7 @@

Providing Initial values#> #> Metrics: #> Groups Timing Convergence Iterations -#> 1 0.4092 secs 100% 567 (id) +#> 1 0.4176 secs 100% 567 (id) coef(mod_2) #> # A tibble: 3 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` @@ -395,7 +395,7 @@

Fixing parameters#> #> Metrics: #> Groups Timing Convergence Iterations -#> 1 0.3828 secs 100% 321 (id) +#> 1 0.3468 secs 100% 321 (id) coef(mod_3) #> # A tibble: 2 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 7a3a321..ac80826 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -6,7 +6,7 @@ articles: height-model: height-model.html how_to_start: how_to_start.html maturity-model: maturity-model.html -last_built: 2024-08-30T16:48Z +last_built: 2024-08-30T18:15Z urls: reference: https://apariciojohan.github.io/flexFitR/reference article: https://apariciojohan.github.io/flexFitR/articles diff --git a/docs/reference/anova.modeler-1.png b/docs/reference/anova.modeler-1.png index 75235e226f76b180c719532d10ebc57f1a1d93b2..1d5887da98685b3caa22d3e578a4d08a3d0a4470 100644 GIT binary patch literal 34251 zcmdqJc{J7i7e9I$kc6jE2=zD!p^TZ8N{3J~WF{HP7;(&$@KmCXDYMFuOquDJB^|TM zd`y{=G4t&1&*%8A-=FuNyY5}%RvkVLyxZcw-911Jf9Z{QI|o0g@2V(WfuHbiO_AsWKWH7U>pEdDY=OvsdqPJ4nqx4h zF}N$2G+kq-`rN`IocrYGRzCd~@NBI7^5~P~(`O%?ElG+XmRLV|l30v=a96N2+BKjM~Q*N&j@+V(Du0bl~mk%2MAN^taxsmTL+2t;? zC>b}$Hfv-p3hAw>>It6H*2dPa@U*U^>7s%782j>)-(tw8iCV?m>yxbK2A!|$L!S;m zGKX$TlUGS}j`qD$h+2$zE+Tr2)q$hjH@+oa@?#n8+iN6e+G|^M9DP>d_^V%gkS8>G z_Xr_B75>j4|4;uxAv{{dQth+LboAqWG$+cye5ek?A{4@<#$%o4w>M@jw>Q_WX2V}D z?Jvb(Zu+yk4n8KkjmKTh-h)x7LjPv|HHbNMduxNK3~a5**Ov){`FJHwv;M=a_l|>) zX}EFai^)RAOAli(SC1lNAAfVf?ArR$WMp28oHT!Cz6QJZ>d;i_Li5#Zs{f5iwZ1Z& zpv3Nm^_VWuiFX@|dNkcr@H-r&M%{C~3}iCbUD$Q^g@Nba+O?j}a_vPv3`Ud_v62sa z$KyTh+W0Y;)V~8d&nEV4jQdF(;@pP_hPlsv(naWU0{Ivg68}cdUW-_8a z_^0&|Ifc)Sp4>I?*;^x(y!=v zjD)?BMN53y+{S36u^fL^@!iL)sE}1^4$~tqV6>Dg>5!lQXP*Bb|3Trek>`c(hjsV< z{Cp>o#z*m2i5HVKggsqzmpVwpAv{~_T+Yr{?X|=xVpq73qOQK&DHy;n!9wFlAKz&CNp)&Mq1Y>Vik>BTL|UYx!8R_^peTJM?==FrPoYHf_(JCumsDlx9n`HMK6#+?~G0b>wxDe$o2SjA6I;Wdt!Y7=HIlQ(zZ5&DpI+cd@%eMzfBq0ugjC&EvYryB zdwFyWUT@CetNWfEQIGe9 zJ{*2ZqNy7)(n7T;T_+AJ^cws>pEP9&)cJ*(K+ z($GUEU%`6Abt45yad_@B52nHsFH$KVXZ9&Fa`h2A8S#wL=iIj4;6)x(V!j;@X2|z` zx8CbC3{AV;kat|?hFw_!nLPb7t!r!bMz9s45Z?}~`4LBzm6CD3Jfku~!q&NNhnio@ zche|>QLxtFaz4q!Z zJ!!>dtK|KqFD~F`$cvMmLVZMhOO$2&T2xDCN5>e6C!tZ1Q8p~n*jv)JCm**m)0bDn zAbl^!wh*VPsv25~#%Q^rHl@&VuTb9Ge0f_d>UO0Ube-E_Sy2aEnTAth?CNPaJYV(n z^t5=obY$qRRWW+MN~2?Vzg^V!UdeLtcU!mX@Jpw*t4zs?febI#8IYZRuKcW%aCQK^Y1mD9I~VPcW~>CMq1dw z&i0Dr##CM?7DD&;BVHCiKit9*`doSi3_m|w`ywLizIZ)B&WnI8>T}V5PmwSID`J5S zJVjWXO=yfajL$4{nXlYOGLPhHnpswE4OUI`6j*B;I=4fh7lVy^a;wK1EIw$8 z_gxw2_u1JpaHygx846(io?}*L;I-6_$Vh&{$!BL{U;$tX53YP`+FoeBq-?o|A21s*P`mBmK;U@6(E!F2m1P(~+`>CyF}n8a%8$-tD>2 z_GL>a*2wFV*%fn>68*04s|JursK767Z{*maOHz~O^4ZXLE8LtX%?**Ved038-E%es zs{cF8>G&rtH6<%+=C+R!DEy3Kz`4z$fi-Mo##Zk&R@<;DKbr9dfyY`Mo!PI7`dr~yu_hpjzvT+bXt~va!1F5p0I_ppC0Z){u8F6^;vgZf(qF;L9N8#99OcCN6#$Mi^te$2Ekap(S29c!J+YN_u^ z=>F0MtNv0j)}5J4X@D!YuzDm9<^wWjl$}JU9oPmy_nw^*ztZXPh9S? zcB*@R0 zWg(a=26CHy)wC^+!RmuFj|3LdoN`b=K=ZZ!4^p(C2C2!6P;8Vm-fpZpj`(d{ZgtSl z-&p9tBi4D;3FM!LSTI#&EbQu#JGj~H+^Nd$es+zdPGDer-j}_H3moXU*a)aCV^YC^55BH%{|kPo;kX?HYE~?hle;DezDJWclk(O{fo;sB5CPpS@hb3%ItW4ukg{heVc5j ziq7WJ=iGS;09-eC@BKuT>y^D27xKfpjKZD=IKpjpS+NR`m$37npEsg}xpr23b|Ukd zrND=UXM1w>+E;kJFGEd{Pg6&S!P#R;nfu1s7Kmldl00s|p53dVf6*6Wk!jdQm%krU zqy_-v@juk%WdZp&2o#YC`gSGB{UVc@MMi?nhk(D%X0?5>Hz zli#^YwwAAuLby&3+MedmE_KWz&U^;ZA9Y(D3KY5jJt_bG5AGP7TpaknqQ#j$XqH@d2g_Cqz})Z#~FM*tArbHSaI10KCxttG|j~$$A&?8%{ZR8{J9Ow1TS$} zkL7a?oL~#S+9n+t2);bb$(N@VN0`h~VUW&%HyvQG*Z}0 zXpVc)`{Ls$0nN6pY!=3Om<(Pm&KLrkDNqqC!Mcqc9uiE5p@1FHlul#y^<~v-Az6*$ z-PpD6mLqlMxj~|6Hkf!JOqrBf#Ert45NSbX3AJJszg7yI30Us;APrWL4DnhP>DlpM zL%E$s5L;hx?tZ@bjT2YlO$y@;?~eE2=2YUg&eA0txUj~zwVfD(`<#W^Wm`_fZL!;sfQ>XE=?IEcb@Wc^%Y$(Q(xe$wV;`9YWr( zZOYxY9Eyx9M*Nwc5=D7;=hYCgs^%D(iTgmCd!@IfDg(ROHyar#m zWsH5i%)$-Fc@mEGFH7w_{xqzo^^eT_H_q-yKUAICwRA?onJ5!}0$_rO((vkx;&&o` z_C}mk!Jq)IrlFy*&7E9;`A#k2mSSS0`>EkIeN7TVF7m4qlqG$<5iQD#cv*1LCEqN+ zzGRK`TJGjq7;CbwZn6?jxq&NRh`aag)yVsh`aD2L;O8{lZ)lZXYI5HX;F#a5M!%N zHu@B{``~+sbO_>#TwUA8DD&xX(c6EVok=^J>bdRO;SNP9+>%?1BWbBmiJEM?vNmv^ zNQULEHCoK*S!afWD^Gq__zqXPW-*^>&y^Y%(HN&6?>rMLvwX*KB6)O}IkA3M$fNoL z>)KhL|9q^KTSyl2;;jH+mj^&ZqD@=$Bjl4?%Md;s-w+kx_|XYr2R1EC)2nhRG+So# zO2y6=Vlxwv36!}7GO#&*Ijl5-*o(HltyZgx=!c0Pp?-{lfh9ZZI&Ou3K9c(IJVpJ{ zkN!Y-_!MN2i)2yx%F;8%X4gX4`R8Ew}wZbJ61D$ys3@EmRFZ8v9#LK6e>QR11x zy?bjicKl(UO>P9LV=kB%Dp(Je5Ld>#y z#VRk7(Tq&Nd1E1=A+s;Xj6d(CgxX9o=R|vYaakfQC8fF<2dQX!wwn9m2acI|hs*P1 zr)onzDvB@o*fOvk0gzl~@uqpo6>Wg_%$sN#a_xERo#P=e43-Osqag66*|8G=|Y*DWf<2NZ1ZroQ^4-2gC;KiER;A zjEx4_s5OYPuh!DWxR_Wkm)t%VFh4`$$mT+5+k1cF+yzSH5al?^9i~rgkvEQVo{lDa zdw`wRPE$37QHHNg&r}s8o&$>pZsFA#Qt`uT!#n#aQhC1AV@-Ok#H}u;8)f_H5-6V3 zEX`EJq`7DJ^IK?=N{Jfag8yC}5qeZQ8aLFF+AH<<+lccPTr6og`^stU=U`>sSZ0Nl!JuaiHB zf4hegm|7j;Jp?CuCEO;G>!&7-)$ND^6Ww{BR)5L_Cf!X52?h?Afbl}z0vJBCw01Gw z%PVML@-<%=mq&Q87Ma^oUZecrx^M|{{+U#nk12{tP&YJmY}cZYGF5(|Oh*6ATs}&P z$tDwJ+wK6Z=2wTqyQLvsRbLqxhb?o{KZcJUaMW7RurmMWXYw6|8A_QO; zwpOyA64|69T6)T6<%R@BIVqN^NyZyP%7$Y;V)M`tdJP>z3Vk1S+1AQL2BYwIHlg~|k2x+gbk5kSi5#{n-6B?fyq-SlM`fjJWC2Te!U3q4q%PYCj!+}#MF9v_uY4H3xtIhp&}=F_L=xc z8j!YE8(N*&{VNIy6YD^rWVg@GujRc5cXw;h-p-|CY-l%)ur(vEMv^0+5`9tgQOH~Du^#Q184l4w zP^^K6Efi$HIz;&?>TALQYVvdiar|{yN%X7FG#nEAp9^iOWwi$v8X~6`m074KIVZb1 z2zD7QM6s)P?d{=0H+nr6z=7_ef#<3XO%79Z^L%lAlGLWu$>^eECk>I&QTmyuR@ooDGGV%7L0J%eW|m;d`XBW|7l1aN9a)^rzSIsh@` zL3@25GaExe#lhKD*kt(zYJ!at3sWI)qcvL4G-o=fXlnr_@>_Gr5M=i zK8CY)LW#AM(7Iasz&f-+5VjA-4Zfw&=u<>{ zm^Sk{<@4`vqB-G6kla^nKG@)gUwY(Yy4DKy-l1m@b)*B$>5%SwN+3z zH<*X;=04s4lYw8}-fBP;esfpewagM(u-75~dYiH(Sa2U+$WF+YVxOL$C7lQyTW7o7 zCqdykb#Pd#4HKCuj(JsGT~^C(S}pcYl=B23=;Uk9Nqz9?a|slCII%ic10XaBKMSv} zR2Y|=s20zn;!`U18oq}v0$}BQuXht>af*w0q9m+KQ~2($HLifvIk07+?K$x zndrF;uG#7h$h31&oIug-XZ8gbu82am|x~z1!*E{dE$cA!;WFWDFyC#q)M3$RO zrFRUq_(by$=_+=`X8?TP>&U401nwO){`nEFjhOFON)_qjK!Xs^J{oSHRYmiTwA+qr zqqv=I;JzOc_lW*Wsgtx@Z*R`~-|zd}&WK;>6^goef%&{b@u`+g)&KPZ(B)fEjKCq50vUHIEiY}n&Vr&`|eaVl|X`J0C zPCn0k;a|u*L04APyPx0x8Z^)KfH0w6oeJe(c{voXdoBQ8 zhmsWXw#Dw}W}vD>KLQ$~0qFyR5q8ONU>cOCYz#pM`t}0GN#bVL%(q`6elf;Q4;0lz zffqM3fM);#8V)?zfOt%E#dN!n=E{c{+_^fV~3&YhIvO%fqrAZ^!RAl1ndWIz%#MvkZ3V zL~%$gEjt@N2;pJ8qZehHf6MWQDv3e*SP_!~9VLK?mf{CggD?KuZ5BeQ<$Yy_?CSu2 z56gd)qw1iXjHIyvhj;@^5l$oM}e$obua$L*y@T$a`<5Ht*afx=aIshZkt~;Q=v-M)&lL^jL?A zwA`?0$!f&+@Rt1jiqK%a^ojmQ=LFwFjRJ}_$?G=^4f|4?je%lL_C{EdV-KpI0t9qa z#6JeEDPdbwa{V_&zINX?UoS#c1aV_6*^P`c=b6RNA=OWpeO6ZyI(loVvjwRLbXoR$t@I(x zB95?UA2pD@SqbapC%*U=*_FoSUi*PhFQ6>1pooxpt%*>EKt1Q=yO=rr+Yvx1WOC9jY&)f68&g+ zj`AGD?>U%Q)%(qRg*Y(UBr$LU3SZ5V*qG7-UdHH7@$p zqnjmh#M5NkPC=MwWNqA^h@tv1XnO^eXh^u19IjmtrHQgGOCHteFl@I?UK1q0LgPr8 z%Be**a^gp-yFk;6fmiE-pH4f}_cJl@+WBk>+HB-s@*u%1$U16wnA zCbyq8KG9On50sO?r*7Lob#J2et>RcqLIPM2mpcdSD6?{eM7mIiMIC64nd9GD#N{Xa z^)SFh2m2Pi1`Ez-Q#O(im_<`Xen8y*7EJYhy8PD}DIL-(E0vzKPQ~ccf9Yfvf4- zB-L^kCnVWPPUEoY!P~U1tX1+mYb`;n5`s9#F4Mqd)tFii=S>h|ie*bY7`+bUc}f-_ z^30WmrA}jc>8VeO0Ss)>P@m$I81Qt0LQYaffp< zBTud0dt*9?O_V+8R+s@WXD0X9pXzy3y158&vu<3EU96Po63&9tE{daYH z>OG)aSMBqNn!iEjj^p9N4;V%jSVtaWi;i_t%dI{L9=cNFFf2MX!CMLktbXWA@gA#Z z@)Gv_rHwHXLdL7rOeZ$TWFHR4ieJz9y|=kQpjHU$a+s6wLmjBbj7E4Q zp5a0XX2H04&s^cjt_vl<-$BttW!2*jCYmWSLo5;8z&RNyQ>bg}{%Wz!sXc)sfCZOs z&Nn~_21)`(uA4OkgMNhDiW1?GTp=fUtN=U_O20gmmP3@$CwLQxXg zGWt$UBRktdKy`-#QQybtYtB7rt8hD2&2V)o+B&P`OTr`^Fg4kwpI8!96ojo>6NA`g zrFK^9)h&DjWqOp9PJKs zRiuA|Y4#_6zUWu9rwon`RAPHnTEVbGyYno^d#tmYf|x~sU5tdvO)#7E7(qpl1eK^y zjYROct$V|jNkZPYooR}MF{P3C=FR|K;jOE9;wF#7_ox0iWr2Bo1<#iy>~Y1ZAwN7dCkhe z;Dc*H#uoj*tBOSQY_5?$nUX?$Vxd?b1r;DbmJ=ypi3$|{-}k}NR374!hQDfA#7S{Q z8b+M*dh~1igzt$K`3bPU#GXcg&5p{z!T`(%veWpTxYa8Mro?a*DEK~@?;QXh!fP@U ztsX!ym0gD91aojGWC4Vo$WprH0*N9?ZUc%JDC$1#Ho*mGil4$dH0c6Mv$aHuvgC$? zZe9+gJ46Oq_hUt@7zn{gICB#7_FOwsAitHiYp)|;j)oT6LXh^gs6x4{RNF)`6BSw+NH~Qzm|ven$sQf!IL{R#1-Q0Op{Pv3>AbC;ThonRhJrG4Kqu4L;>``tk zU~k}WXz>+u{v){!gd8)7Si32y)dLRiH-HBvzs1Q{2oIQr+*_SXQi-hA-k10pC9D&9 z`+R)X4Ej2a(i=PU_yGj~CLW*K`$?111f@DO9Qi@u0G`R<-7=70G;CNhl}Q>(rzx0y zgj6`f1)x-8RJa@PFZ2@FUORmNmYT9Cwv|Vuh@>XNgl_fv z_`vd76Dd?T{ScIrpbp#ZF^f<%p`JS%q$J#E0xf=zl?jUaKb?bI74S%2i<(8#$3`gL z8NVw;=u~Qj7ija3Z;SO**S)#Hk#0+Vr13|v^t|NI)1(dpY8 z%9A1PHq>1>geW@^x7v>QqzKKlFtW1_)PA6yD}0Tb729cWTh50G6HVz9JNHb-Sk+}f zR&wMO3OYDV)X`xxV#0RrBUTc=vn*50GV00>lL} zfT%DpP;DhTd+cnDRBR(=l9rj-2(=Bcr;&7H0f-K(htTdey;LZ2jK@PE3flVWJt2+f z&%VJRb3QGN*G?XDXRq2*==Vrm0z%_nc3J(InI{fKsxgjT()TqSTQ5}`Vm?wjy)x@! zB}wW&2zr=rQwm=b@5Oc+MndiY)-@-IuGfl<-Ahz*dzB&-BgwVd9W`otJ_*-7iS?`P z&=2MtF+J;p6i{9IOT3E#L|%P;n|)7*nF_`i9!~P z=rPoO1zNgtfRGN~`CJJC8IKK(bkV!IWkIsMZYBM$*MEB7k4prod%>PUV_8X-Y9 z9|&IWIGSfgR{&=U)rFGPU-O+vCS>5_1%+H>M~~69h}wg1Lyjaux~8g)ep=}=qxeS5 zL2l$sC%Uco4iIju;bzK-+oe#!<&npA805Vv!z3~z-Psr@f5b!@IBPl1l#r&n!`Ccg zxFFkGoVeZf0MkmQ=vHofE)Wq(q!A>P205pefkTB5WtzT6!3nL=B)a}c;Yv-2hw8}I zS``fsG!A4C?JjuiQK0nnC0>N$I+)DnZzWR2wpNrqWQ9#)Bs=19aPyjbP`THx4s#%p zF5ahHSRd*Q&=&SqF%%j^dg(DApCS&(H)W|=n#AbyhU}=awI;U_CZsd@J^57uL>cs8 zTCo7(`ci`1GA?{`At8J%vLf~nYs6FmDlbakd+RE+0U&0I_!kB?f=Kh(A~&5oNHk4+ zP8mezM=FnHJmj3O!@!DWh>`k4Ry$PvdnwXzg>vP$*P{;j^~HKmKl=LdDS(AYlZH2@ z^)ls=J1sJyu@0A^BA;)caEMJ$&Zo$%4l$1tXv3{S%^SJ0Q-l4FZg0V{?-K*Y@Ls4Y zvQa%s$-BX#>fs^F*w;|MF)!an^XuCmoRKu>FJq=!Q$6Q!zZ&!h1X{AY;_onDtcrp32y5X@F~*v z2i>KLff2o>V4}X9>J-gPup*l+EwI%`LFfh&mylag^%@ z|KWqjkLQNTrd@B4kmpKa2|W{P%A(5pGU?P+v51i_#^5}I3VFGj(fatw*cM&(m0nvr zr?}2Zr>se5yM?+_>h{@1SX|FQ#rE+Gvpc01_4qZgpM&4J{++W3#o|1e=adOp9O0e! zHnaOmfR53#Ok+2$AQq~E2mT_FSe(>p9ntH^1E)DT4>(wN2Gir!C8_$on6~GcY7B7% z$202a02-Ghe7rve52a_nE4W)bI28C+N9f{AF*--!y-I!@j6v1@r@cz8kN5W7$xefP zoY(fJ;<<1dSr)sWs_L->ouXBjqfJX|bI;T}?=G7E;CR0c0Xy;GO%~nc`$*RK#ZGqSlEbjY-3xnaXjigPR zI);+Ovb0sA>Ql`;eG5`Wf1e+px@kZNSk|_#(5JA*+b}<;HiF3 z0+v_skSiB#hPOhu@LX4(w56I&nIetr`u&R&NjJa3CjVMewzF2-ky$lCZhL=*lT**W z>z}W|{&a!|?8R|}FoE46vK#83bQ<~fmko_4yk9!1=3C|W)=cTT@w zcG7`Iv+S{B0=mNaZCISf#ofgeZA|d|?mn8L_A=Ah`FPODJ*n|5%?2QjN7SW=m4xX} zlWA)LYX+;TCS@PAKY7jR=c_}&9=F>4xcADx=gp`WfA2}xzBPng zat-n<*i>k;%3EulH_{S?-o3VSi$88AD_?Yi2Ml;GOzlCojH?`LYRzQ*na;#IBW`nG zXOpLNIeI7y%shmLqMjR3QRnX;S)AC%Dt={hw7x3wlEZl1tFU9J4s}E*w(x0l(%4~V zYp#~5O;6(p8P6fJeKAac6|n|h_4AZxVwVSYF3#Lw|FShHn=5iVM$YvNYXAU^hd2R?m!{tAVF!mNTyteX2^!^d8kD8{?qS^g-8Qvj; zZP=1e8YF60$Th~XW=dFL=uYhCXZff_huWIZ7qP)iy@Egeoj{cQ`t?F+42UuwXvmA_ z;6%h-qGQ1w#KBl#UDK6Q)rkRl(g{_jCR`5X9%?>|Bh0^qEe?2Z2>4OcKTm^>U~A1R zgDA+|PRDZ~hXq&CQtHx1|P6}q|>*^VW=8u zB-sRB$>34jRgX#iBD-Ysh6pk=J=*jZ3dD2pB4Z8dmmIMx-XmCka(f}cYHPm1FIy?d zSJ=EdMjfQ4-<|7M^q~FYxjUbHA-TN$?#i>WC7@qI`LsUHLEo}vT^*`{=ALr4^(DU_ z>VZWA!5!8ePx1Yab@QIYgL1@45xz{P&zyNYnMDkCp6qxCoX&KneQ)7Q=+h$r!x*2b zUu4l)hw5UP1ZUVdP|De4P~o}?-5)NM>Q`qzJ>uOQVtn=LpP5)NjDdziUwjCGOJyDe zo9p`bE-bI0NY3o*Az0HFXxoVC<3wDn#-`^yt-+(in}0(-S*YfF*RfT_LwPsRs%>rz zJT;YaAx){r&vcy-`|`B_XpFpB>|lz4wx}wxPJ9_R#Bbpf}dt3?FG!wqCP>zVOuq)7#4yu_f7R`-4Ras_yf8nBW>5EKbm|KZ8(q38UG z&XZjZE78_Z`di-y5W$!_8zPRDzP|nxF==V&7lyXf#KeeSo#cr>06{rU>eAa&6@hvn{x@HouhxJ!Q+~-JwoC`N zT5KEOE&*~`fU@?{3|SAC7AgL&bRrK~K=bUXlqB;^c`xD&M{y6g=q;e<_=2&{hntU~ z+p7&|DOc|xbkR}CDt>f7En0#zjlIMUaWFXld5T~Vjo5p=T-I>UVG!;qh?0>o9=0HE z2)?~Xf^Eh_wevMSd9aC6StQJCx$ zf_z$!|Fz!R1O*1BmLfQmgrpk%Tx?g~MiouYQb(qrEU~~k5M49Fw?Z~bNX+cW4iq#@ z^xo=nD6;D_nVlidvdkzGk~~{{5?}-@uRTPLYcHQX-e=ldXjNuVV$x!ls+M*46`c8i ziY3IF>RJCi?7Ct5yPZxuE2x8xDIm-6t-bNt+uWsVFv4XM6msycK(D1q%ght1oTbU^ zz_*HTEt=3sbudaA4T_^i={kxV%MSf+IYV}S)aUJu9Nu*zS~+eKj|RK2jii+7xgmfp zY|`(Rl*3J0PZw{wTwg4G4zr+OBZJSC2)ay=6%xx~TR><3sPi98)Q2_wj z$GBe_IXsW-}XmLk9gt8h`DuFFQ_6|0GnM!BP-x%(D>%M&EOE3lF(3KaCPGn^cXi z6ltkk8>blCo?=h5-2Xc!R8=5XM-S$KnEv+<8t-*pJt57r2b?*)j;YC9K(&1E zG)2pSa3R&oN;rTQ0fmfABBx?`-)A zQBfqQp{T>fhkb<5P~43hNk(PvqW1l<*Iu%`hH%-E1KLYc+!$j8ONYy6h5a9H!3F6XhEvzu-dzouZ~}oO z)#z2QQy=oBJ!&#A;FPYzs5aIA=&0+e0vtPltPgYVk&a;gbY!ZeYiBa7ldIGQEzHf^ zh%b0(WjPHTH>T56SncUYQMeaOfxE5@9&4} z?9IBCakaxC^3C(34QrbVEs}AE=GFh#3jn12urMTWg#G)OK9p@sEl!S8J&-(iV7e+lCG}q=D^MtN2GxxEpi#|>hohmaHDDTZ6Nzy zaI>Z%Jm4@-?(4tUg}1cxKX^QNeZyya&9ZQ7Hlbo`d!<7Dx04RIZVX8CZbO8C(v~E0 zf`YQkpYUftZ4mUk`r_TvwU;JUd*6uDL+e55+WcDq{X&P@<2nv-&EYQ;({dpy3JVKE zB%^APSvUj*Q`6H?ZE&JQ4{i9az zhCBS9GVKuzV4zgBo7wE8JKp(5@2N}IxX&3Js4$&=!ys_vS!#Ii~ z6o@OzFBEL1w2`g!;U}AJVN5eL$b+RuN#g}yoDlezi_0HW^y9-VPUJ?5U;Ip;)831` zyw9LeH)`n1rZJVA~s8P9NLTbws?@AEl@#s6lge@yzGRWuk(q z`W^jp&oxDFwab_Haw&(M7846MhKl!p79McFtqaU^j|abYMk1UmC`k!<=v;v)!pl+r z%{S7R;WF6^UwVRfFQW{`YkmKj?A-Qv4~gI}rEUv%3LdoYnH`6~(-XO8_CimYhXgM# zuSbPl*QYapc~g|b`I1so^FT6iS+EhVe!;gi2tRxF%mBVL;KFPUTwTZ1hw(afwea6g zIRwq<9u?ybP~2^S&VR-pA^pO0fat}LNK+s3@8LI+N8MK#1XX%F1&S&wAJ4H0(stPA zSq;e6DVYGaLR{j+r$eqGZEy?jJ}dy)kJrX>KFpqCoT(=kEn%#+y&Fr}LRwu%r)Fr~8M!z)ImbL0 zQo%rJw$$HV_WxF2|L>7!r`kM_NX~etdyX-%tA>fcW+U*k_@f5MT_eS4j$*bS>k98#qS!popTM~)5`L4hQ&of0iAxK&7Q=2B!bc+T-w^0x#VH?HE0OR z=@;LvyawYCEPBW(vve$om4=8{n&gSwzmHm>F8Jm*BOV{-KJIpjrBI zJa&BlbQN8I>uE`X>X=!xGqd2{^`taVKVltg3DXED|<&})ug9I``sr6ptIrB z_eY>qA>l#UYfF=zG^a&GLPthM{Ny5IV;dn)!B|0@xiS0ns9K_Cng#|bmD6~IAh*{P zKE<21^dkZH_-SKrS{;Ku0{YeOuC}em)3pP4rY0|&|M$_ok6P()Z??25fSwg@kjO!{ z^$RNIqmW^a1+dy3@Q?vORCjWY{XNp9k(7kRK<(PQ@;Dt>jM-r2V@w#oj$K8=5%>q! zWcFd;-U|aXs`Po!{)MFI!mLlx=_309xnOw+MFht(4xgvX({C^BTkRcqw{%@_|=x(}D3>t}s-JRpZD!|wpp{oZySHh%TRiDZwJ8BB(LQLtK^6cS}~ zytmx7vyGZEbn}YgR$q7i{iB$zjTQMpb6Nqt{4U~)ba};#>&{&Fr3Y}+S{drK z82Ek?YSm~_(%S?zIFfH6Bz0vYjMO^clrF8yuV?2SvFG%uZF{Lb5EQ3*n(GQf!9{H) zq)kKy!XV9btIX=@#Toi!l|Tsuh&#T#9O!dJ3Azfh z5+4qKZHy8LgdmgaII0YJ;brjBa4U}%Zht1jF$?qzf%^G*?@iYe=k8RJOPq8IZJ5Cm zLKYU-AXE_xx0fAer4E1rj4FcJe`RegvY#5g4;b|AK1i#y(gVbSY9KgrKuF^QXNfk6 z^t%q*dxwCc_42K92CgF6YW?_FBdyxljE5UbrIt?B5A~WT%K#+5AUKMlD2(@pvFG9a zL=Mk?^yOz|PD&lyeBlGLvOOuffFus4tJ@w{oeXeyQJkE4YhQ|*zt0Yuh~WZ9Q9#Jc z1F16NQ#cqWCfeLf909boCet0`J%VPc^|w((m=yae`XHwgLT%XU=Npw?ghZZEc7L+6 zKPtI-EM+ay=JzU-aDd4(3|TXIxGtrt&8-gK%(;uOdywW(Shrk73KcN1Z@}|tuk{aV z0J=Q|HBqXt+_eA{lpnKS7*_<&?QdPqQi`hS@0(WSiwKEJ2%E(Q$oe9`*q_tgt7A;x z6jK*Kbe^pCn5~lEHZ2C4IjL9}&1Hhy8RZo=mLdE%#xiH>q*Du395VK1-d{mWJJbZ6 zRgx#^I6X}H-M+w7@skRke6g!c8i~^D%l;m-{&#CpJ_)xLkFMxZzQ%3SpJz`B?=Q4_ z*#UIjXBYbA*$CdFsFe85Q>4Th9?uZUeQ9U=lbvCH{F?)8($(NZ!};F61l*MLqz*;# zQn4B50R8~^G&0iFztmY%`51~6Lyg?<$lfN(BVm$GgRhka7h24aXvNRMB7r6XSXxxh z6O|Cm*u77VHNVVE@N#j;=?T}leEIUlJdiSOC-mep27YQ}<$6kzT{&a%MmELzWm2Wf zEa&w0>lm7&LNcg2iX^8;D*v?4eK~sm;lKARu1$_MKvsV_Qt)Qdb=L)CEE+ViOnPGb zBgG_g=EJQ|);jq{x!A=iT1L48bsQY%=D(jo+4(e+o}7KxLKv#i6#L(+gYh1T>Is93 zNJbs@0;Sf|OmOOfkw#B=5}p=Vzh8Q~ABtI~mA)ne=rc6vFvtJ7fB*iC81a|TVe`qZ zPfG3L(0-sdu0c=YSzt7~hRrKLd{SavsT+OxoHF^%J@M`bp&lCB4f7-od_&}yhFJv; z@jg(713o)mH@pCoz*kj-Ao#8$Q$JADQ2fOela6z)BZpV#8@i10EFeRLsx3u+b!RCY zb6D94A)_16N`@eT>p0vHw9^bhLsY{M$+1$2tf|F+BAa170*mebh^Ts>*o?{8~@`4x4rhTlJne zvL$v0w6*3}(GB^?sM*4Ji~PrNrYVmeF(KVN>X~v@HTZUc*_|h4M2vZTB{-4i$LCVz zFAY@>H6xU2ZB%3i{1`Q3m9T5<7*_<8afo@Z+1JW)>$A_90)cC=R6naPjwXLeHfXsf zEJQ2g&ISDh#-`MWPP1pp-og~%Xo3V z=t)_r;&YkC6;{PDuP{EFoWNWMv00-gxff;sc{!vZ-zuKUZ3zC|4T}Gsq8eip|62l} zD=GA?TAayJ_4-mfvHn$v=6Mr5)`acpKwoV}#0Ap8yN)3vtk~nwF zoU57<3&5dV02K~`7NB0!F0)fzOvd|}QlXdFW-IJAu$17>3506YU)Cq1j^|jGefi@$ zcE6(j=b1Vm_lL+GWRt#Z*Gqp6(drR&z=L%kwcw=B)$>=GKk$fk*ef%C0Oahhb0*6i=5GutW(SSsN3L6B;FhMr-sB5s_MVO|f*c{V+h=tTuXBoD+x4m;1 z@B%hBOo-wTG}uu|CQTKX)5&a{gCbFH;nhk1gH#*N8%us4wQ3Ne9#>z3EXYX&(BMTm^PXQ( zpZWJS5IUuM)n)d`Z=dWX&MUjlmQ za6w(L8GWQe6*wb{O0$rv@5wo33oVS=q6Y4~SnN{~1R`i+P$xC<`^vv?>cP^_=^g7$ z*AW7C_j5rN>c;k=+j=yzy}fd}%dq%-p?A;yOP?Ug#&QRUKuHe9K%L>loZR{WcCTY{ zo97E5IR&zIy62LH#@Y9X4Nyg)QHNnBujL6Fakhd(KU+`i1O7M0pDs{18U~>RT()mM z+eh~o&z2t5m!H7??q!m4egc6DHI45^sNSEiuTPqcR_oi>cBo(613_b^jOjTOqd73a zSlkBcY>r@gYJB$qM)~L2mC0n48sN+JF)E~K3^hU2!cO?28#M^pXf*{gW=Ob+}hC?`U+7_Fz^gd|SXel%ZY z7}BZB(;wwlK#H*WXE!I*q15sGIK?u)-$F~Zd23Zxn^QXjSH zk&+b_SMdyyk%o66*dhl5c&lKxHg}C9`Sy%p|Ly64D8NcGGeaykjKh|Ephb=jXqx3| zika#EGu82tLdO$+Rin;BzB`xdTJWLjzD#{2Iu(zeaGkpF;WiKI_^`F%l=(i{vIeoU zWter9N*3aOr~<-)IvyInvAn&gd5oI(7D1ux(x({0kzV5V`sps&jVTAD+D-_YMx{Cb z?x*HS35EcAIzf$IoyiU;F^gLL(~KZKf@2Umk5R4}4S+H@80$+pW!jlfOjb%4D5}*6 zrUVH(mzk%uM+YZTp?+-UQL!TnM)Z=EVjxL#l%-ez;-wSXUp3QHkWvE`1`pJKJPmePME3abe8# z1^^atc_`Ydr(fO=-S0I%JFLCdJ)#$LJpR`1ilh^L;NXw9Px@X69(>XVe)s892c)1y z2unv#g8vx-dT!N&+7~vZy2|FNPj{6qYWSh9kkU917JA49@&Rlu%GheCK_`nKbZ)^1)Qk@%=<~`7)nRy&rDWoyT2>AM(HSX)+jH zpftM!s(qR~TJl#Qp0y0#yVr zbfLA3OmzIs^ng7$wTS z>o1|72Ie~R2eHwCmGkm~9)${IAp&;(~Ir**qiUE}>LYKfv#J|Ew3>*TEAJQK*<-oF0Ay7;6e1;ws7+!;r zqPu&3d>DKs%cTT4z|$z?1}EW<*m(T_A=J-grJxgD3e9D#-N;4=yNpqh)12L8rWAIQ(nv|tq)D?fq{OZ?Xs$zpQoB=BThsHo zcAfiu)_VVV)_VVXpL?ydocpYw-@bm=^}W9H_w%`-BXKEY)0Dnp`Cj5Z6cH$QZR?fR z$#JcBrCy}S;wv8IWb=f9SRKMjm60I3NS}Cq=66^~n*#B}@}`Saovx!oYgs*YyQ7tP z7nA!+D&nP|aS>`rhvgY7;D25G;i(reb*EU*d3vj~Vad8Vmzz}Vj`tKxE*NfE(3HKE zJ21Tib-a9kyT-jaDAv!+8SE?`Dh-^st!b3AfWfOeYw|>Hz*m=guyDhLKgLE|Qu1uu zFK-eaZk&OjjAyH;?HkAr`H!ADUG(GI)?~m&rsU}bL|U+0`O_D!E(#`An6-^}sJ2Nz z?C&cGAQH1F@aYY6RX~acE=0=lwlZP^Xn*p)D+^FI2I0aul+u8dJkxX%qGU8g>fYPU zvjNeKJT=-bq2~C~TfQjySTfWFr%W-*Sn|cUHK?6h@bq@+Dc(MgWLOgk`F&MuklAr& zXSfg!S8{@K>(=y7X8Dst5oBMV2mkW6n8?-KQOnAih??HZ-}qO7L?7W9?e^U2__kmR z^P;Qf>tE%YW(Z$yI{jgKw~;g^n_!nesrf?r+`vf$c^OW<>4m;cgCB*atYE1(Z$T(O zFA8^G_SoQ3S=kwljlb7tT+@-5E4PPeDysNm-fP@6Cs&}yLrn2F@pVyPj~A_ay14WV z*-3v%qH&`~ympvRxGq(igED5XxYG*zK4C=42>7QDWfi$-GMXg+sW`_`RPJ_ffULl9 z)9mT<=WRFlF8OxV&0=ExHHWcO^tWUjNIddeH)m&LhWO{4|lKQ$tAw z5g`-L=IX3jEr3R)ibu!3y#36$GOIjx!4W5M>gs8UTC7bL|E=64X}(cUem{ToY=^6-6-GQlYG#M?(Dmp39KXUsv zQMa&JY5(yxr(4ZRjhDy?%Na2{!#)%D*wrrCE6RO*O5af5@JzVNQIjQOKa&b?H3HM$i4R0)AUU!3F+2g{*jC20AwIV{fUdPETTDHrMh;~lq_?3h zCaAT};);IN(Ecn1c>j>#|L7DM(qbLr?2UL`X16mx$h>pa042++e*l_ovB)d-eH1^PS`P zK zm-RovLnQ@Np3AEzo*BB)iWu@n~CL4xHG3Uu8*Nb?w;r#ieRX z-uhheS$={U8!m|Zo7pn|jo0)om}(7^ky!Em3S!{U4T4| z(Y~IytgF|APyiYkjJV=mHRMpe9~wjHoFH;gQ;N0Jj|fz$9CC!sOf0@aCnc}wS`@@- zF)!0M)gZtoaxT;C*o$^SA(M@+qvx!X_Q`Zru707OpcnA(;+K;jeDnUT&jxpO91aPU z;^_j|g^yuZ?h;po6|GE!^V>nUNey&bibxgtil^kIeiW?PkakXJr`J@BgN7xAR-Z>7 z9&8yzJ#OHiV#z^Nr|t#>ydmhG81pkmWl!dC#`ix9JW5!r)dALhV?1=a$ot018X2{p zB~lw)l`+(kY~y4WbcA1nS;X<+ygAET1Eg`e6o4Nk5FP*R{Vri6dH+W2p<+YuE z7>ZjFPwd4!^%+XCU z-{CJ)M7wc&FZ@-{aTlGwIQ%7^!%JggV-+v{I79iU+OsYkwS5+gH8d2zFK*kHw?5x0 z9?jMo>qjr^ZIUuxBzMHQV7OkSpMjHBI$KG#aHr5Jqhg|8+OZ2irzE?(Str@H|54T3 zC|2q}cUm$p1tMYR(uBfd9qMhA1?v6Uq-c9@q zJ~c_m9{x!nJjZ`wEVgO%*KW=#TIsHPy2%HI>#d@U#FuJGz#|)y&k=?LDqnE5!RE%w zokb5w&6q_!QgNZ|qt>J={uz6v8FcSn%CJMq@i#*~fD0X_pyiM2*|VHVtCL1F8v_?^J&@<29f037{{KvkgoD)V%_38PU7dPFOK#=+}aD7T%%lLfUBwulq zs$NZbPSLAQzI-r);rh=`)F)=V#2v{sQ_f)ypQqF5L+(w<$F`eho;M7T-A~G6b%tOXpOx@G06Ru@fw;-nW)*zRCdwQ zvUijJ_5xJJ6`Edm3v-fC|M44!9FhZheR9$2FSQC!KhmWZp+B(*WedJDwTa>=<<@hu zfSOu~m6$v`xOH@>_bgdPfoZxW>A48kU_Q63mPKE}4qz7o6kEjZYvHP6}zko`l?VT>35xqf}G zXC5#_70=ZxVZPwbSvgwi{+h&Ve|<3@a~}EW72>tHEq^ppUsU>l+?20F^IC@ z`#l|rW9S#45PW@|T=`+$(2L!1sA^q@tVmW2-uU$$WxrJS@n6n9YiMo1*dCWZW!vQP zr3ku0O52DTRW005Psua-oG)OLN+pMn%P$O1}H1D7#* zwiGUB3~F9FKk}e_fJr#I9O?}N(BqNuD^~uuVrcHJpy*r+wtLgPRc#G6Cx}nbo4Gyn zJTFthb1~`jX~Im;F>~m0=BuXXr{0qR*j4kL_)rdAppE{>l9H0yZgMIr!8km=@`pRU zPlz324Ipldv@v^PGOsURZFA##GYJWg74BodGn@-a9~mjyk$NRW(UWh+PArS5Uv2y~^5qU`1fmdh%NDc;A1jE(w(NU$@Gnm7 zbiq=1`R3bb-mQq+E2ZkxR~8o=u6OaGs(#=)H~_bzV`BKq3p_j)ihSr;-EIf#8&rTC z>xT!K9xdb9JS`>GFA;x$;c|-8gJkekk`PXA`Gl9@Qj6~e(ufTD8%R~sx<2g|V1&O9 zyP9i7>)WI2=DdZ5QK(UeS%OVO~z2JeiEj z^^3fg#RraT#jytC!U&1VokWY~A{qKsls7A*X(A+Vj2rP~$OUN=SR5F5ByA37z>P7v zibhB@7#_*`R}ztw(U^tn@;By-eR`OIXwF5Q`5yk+n8;a6%c4{HCx4-zckZXy*;Zmh z`wKMT<~6!1VwmFNZQj@O8ug+>gTm*d6K!Trg!{4veO*uZH|Luo4=E1!khB8Jehxg2 z=ukfvKXfj9!K4F?{_EzV=rumP{X@vKheMYj-e;*hMmW1F`s=Nd?JTU5E;=~3^1T=| zl0K^H&kL?;rSZfOszY~Svxg*75Gr;m&@H+I?4& zX86&tb7ivm*5vDLY>)Xh3g6=y8eR2^&u0mEEf%sMIeoaq8{rsNRy3pwJvNwIvtb=$ z1-4?&P`6{R;D-mZ%}6|s_BxW*P_?zHA(sB?T&P@Y&d8Ux#GF>>o?SlE2NUN>qAYP! zZ2yE)^7Ui&O7Gs??5%w&fcRfr6)D%K+oYC3qi-d_k7{yLPFq4I5`UkJhdDr0SMP_m z6}WXvMT_Sa(nw})yp*jqd+pM;M@+1Luf=S?|R^0JXgEtcf8*i`UmJ6@|v_)|uvxR~eA z(r%EXgFr>LL*cUPoe?b_^R}lPztEFV=-!mdo_4cY_B(Juaer{X`n9I@RmC9-+@Qui z`C^#S_4#-74^As!UWPY%>^ytf^@>MrEtAa!Ef05IFwJzZlKwimp46>b{y`&BF0|65 znrGN^gZmWX&8qb&zv#_q{adMa!_+eth=A$t3vaz7vrWg)AWOCr5U9U(JAR)d75dw> zF!K_4GFqRrL=XX{oH$nT5Zozd!ow|`WwWM^SZvZ?p5{`wKZcagVU%UA(= z1?3d9EKP@q(bnWtTu>lDm&65Az()MJc5Q}P>S_F37Yb`v6&_;Y$To@LTKFHZZkPpI z_vLNj^HZb4htrYzT$||m`gLdoPyDFu$`Gs4-oW)j+nP|w-q!4fJOCPokij7{HB+t< zapPG2%TZQGF6r5^`@~8#Wg~D!FUz(P*1v*Kx){4IvjyI6Yf;)iU)o|Ljx%XAl#~!q z=Bkk5#iOZ}Z6eQE-<#t)K!f;o?<3g|vnYNw!}MjOCz4SomEIiA<;B7X^GGO&(XYV6$U}98PG>2m0%G(J z1kX)9EfDKq@j(#RtjB+EYhO;=N42)sBCmq?kORlS3;EVCgw}uWaGr2En5B>rbeED~ ziocZff`8%vdF~LNTV%tOGhD7UF`4Pa*=kzT$$gn5;J9_Ztl*rLUb+uEB5C_>`yBVV zCw=qhoal#7ZnDa|@245oe=hq>Q&3rYLh6%mn^ z&Vtf^6v>TFOgMX-KXPE+E@#x&wIak$57lv;oDw}k1FUTNVzW=65xAz4*}FfiYWzp6 z-?3L-C37(AXFo@f;TZ-b5MUP>P7G@K=}4Yqx_`Y_eYOc`uT75eZkl*1^3|Sx{@law z1NUP$*hZVJ&$t0aKD|6_^Lnw35AT9RilSW{(<(5cue6Ck=!eyee=}|fU$8vTAdCzb zS0EC1kAk+bjK&KnZrha0MH!&_7z~HyiMqz#B;2ZgB?JP zkAKtm=uU>lWb5qsn7-Gy06m$`uI00C$=3iD&k;g`1b;C$F)^`A7r(IkVl!o?{dr^c zdl)T$4%m2qnS}RE*RNYfje46=^@B`=80~#(8K|ui7NT#MjT(Y|15Jabn9`Zun!{P_ z_G_XHX;lfl%Rgi;BXY1VdsEgI-|q8G5tF&STtGYkbL5)nn(<%Nnr5?Y(JR$nrpPWs zzfNQKAX{_PIuYo3@SmlGmaKbstmY`*^U`cbp^&|Vv1Tw3G8&yv47@F=003gjiTJ(Q zQepetI*z&wlt|hA`W9;eC)&oP6I>W2T@{Z8;h|V0srl9ae4bM}h6p$;Ykei3P!lAE5IjwPA~U@}?Zr0zx)wI_($34xRvPz69$AZI|3 z%*BHi&(khWabrF=->Tqt(Uz@2v$N|NbRTDV%jp5ZTcs=VxPs%t_d)V(G_^U7OmtVr zr=pz_sN+o0$C!Th^wlX8@^1;*1k?nAm;h*=hQWKQ;^ht12Fn0!Qs3EgRW?A+FrPpR zsHzFb?>1`4l=5Bz0rwdD(mmJ%+%ek;ZuRkDH_qBMC!`$9x6Y2q&)4+v@lmt)AXF5e zV%c&=7{tbRUKW)OO1JVml!{5Kq&_yp(3d8cr-T}Ov<17qa}|wXP!m60E%%1g*vLOQ z%0zta4FnmH<5uU5`f`#~6Gk6Nt~NAGU^}&F1S_YQewT1OxKZrvm$hbGy(Mx-?xW>6 zw>J;iP+x`2Mz;CTaZR*~AGQkACpq*G>K&t=#Df(>V^1DEjX{A8Q1j{R;s#YfQ`w9u*h>2|#@Je-K zLR1JHh*R?+H}^bEH z{&Va*spili>e)jkK+B(!ATfemOScBt*^`T5PyAoL(KRsRido)*}x zAjmMUHO+di8mDGu0ti#`rl-FuVVw+nAX1dv?RcQm%KBMf6*xUkRy>TRpLNSGmhcFv z(HQGLu0Wo#r;um3;~au{0I<4nW@0ZlrPxFt4u{djp=U1YWYNC63Wajj4rfpYJNA1w zz42}c=j1sl0Gt5|F6u^&I#CDOI*(fgCKRAU^qV;DTk4XddVy`g2&>Wfa+@c>!h78Wgdv5>Id$Fc=uoV8gRfg z!U-^p5=V~~Zn$VqH#0LZBI`2J#k#VPE(2dju!ppCanbGk4lztz8D%Kr(PQ{pJ zDe%}80Nmr+wOvwH)pRuV_)g#-S8Ew-H4TlGZ->mebgm|RP|9rww1f=s(w~s{Y6>$bl5CIVy+1YoW6%(_3WmlPndm4nW2YXU)?C8Qammn(Eb{ z*=htN^=U&uq02at57B!&Q(n9j&9a%VoWSydRnYmyupJ_YYDu`mc%E3(o^Yq)-8A) z&^Xykn~A`5%~_OdPuj@ebASlvWM5Dv!F*=g?apD^OcbR7XfiMxfH=&)L!++b_221a zcQ6d1NhpGxMkX*Q;&d$JC`bjKUh4yHgMLtkMhlbkHFpqa1NMfgO?@IJfbT)~>0pA5 z+gkXnpQlDWzTyw;ISih>QY?vt zC;$aztk`2rhmcof=7GOvv|SCT&pz}#A$TlO4mQ~`hjKD{x!~2=DY_a6ox&1FrdGa) z{C#A%zS?t|H9Ur$Jc5E47vnx~&Bm+E+A;t0;pL?nLb{nV815>;YFmOe)Lc>>M1YA6 zP$e*GxUGwek9XmbW!BHew^Y8qC87xFE(=rJf}p(wxm&U}3{I?(3U@xSz+HTfxid=i)) zF|q@+5eXvX<+~ROGM-%P=l}*|QebvwQ=oNo>k*vkcCq)R7kW6N;<^iMV}%1ur^*EkZpSa^YY`A}}YCig)>9DZ-?WaS5s z>*O_KrLxkRwLJQwBmpC_o}pA4%P z3&$VG)bKbb@Cp(<+F~|!Q1)j88P2hrt#vy-!Vm!RykYSAb%2mVV?5cz181WozdsXh zt^*|xBd*^>aA>pBd&3^xN$jf@*V6pfklFD&@5fy6V~&Ax35jMSU=6W|ILFj~|CI-7XTls*01ssq;(@Ox0G ztUGewx}|yOquHcGdX+}cGr%H-=nyZ+a|^w{(q+>Yse+N6=~a*n7jAoo)Aa>7fX=WW zu~v=44qYoIjHOS)=1Vl-bnk&2=CiE5OqCb+*pPPgNb;|F!cqXNed|vBOtVjh2*~G2oc1jgXM%aI&+w%m(xfTjyzD3yn zaUy;c@tYfWkv~0IbRJ&;#ozxjU|k@X(eTj8|5hV7Ab(2B2*{H^wQ2CU$-n67@u06M zyP-qK|NsB(75g$D&M0?(#>i83`}IRcmG~$W`!h3U3BQwIeoxt(A9Oir37OcfARZm! zB!Cw75Hz_ye@;wm?`wkGM-snx)CY7;5|13RUlDnw;lv${${2kI#oc@N?nNT~;DwbG zX%mbEead4F2X-QTD|&wx#p{5XSwwRlGgI9Li95KR0&8Sv3)o0Gf+PxbI7Tq=ev0t8 zAAX^TH)6mn;`;UL)DlcBEzYIbU&LsGF|ygF;gW7YDhPY72%mNe(v1ONR!LWvH_KOF zzS&xO!yc8Y{bQ0lVgXX@Wbv&s1}>HA3k(o+z@taC8(ev-bbQyrTV2!xMx*y$i`SZl z8*7dK2=wUXr-W4~0u2YmU&-y<`zL(CX>di*Agzbw61nemG@p~r5%mmNs^(~o$;1a# zAmXo5z%E`UYXO3N(rG|FtY<@0(%jtKF5RL;9weZu6aPp~rnGa>y1a2k+KjP_OL-gn zKMT^+!xem#t`%@4Kb4o44{W5^JECG{#jTq|p@Mbp?9bE`L~SpX+V>oY+b6s826-)| zH7s?S{`G(Uf&WNq6MSav;tXtMBdSO)7@qfZ1p!lmt+D9Alph*MMw+FJ!M;XM43Zsic57elw7 zLs5N9kT8KJINs2l^`lasn3!d&`8|g$Naj`PEIlM71n~ZoWuYpm2ugP=e)#Yq3!HOy zIMjmnFhY=po?=7b!p`#xxG|SOalADfd`>Zq;>s7yNnLCO=z3`^6g4|B+EeB&pMM{Y zj|KiV`>$g011FDAq<6&7OE8}k_W1GRhmR=QexX#**+f`syp!R!q{%WwxV zn#l1t0L$W!?bn47*@v52e|9XLDNj*5dg8$8!7Xy{zakl(pPwK3nzH*gR{IA=G#%cjV)3eeEn^*9xMQ72CV$!c&jOVjn8f9A7Jtt@!G+Xd%rOP<^MMp*bIoZEp z@-FqPrDZ8936>$hQ@n;M_2t_e0KDAY-93QG(1I>y%5J-)arz*{`|RGnH9*2YiYdZS z35|;cUiSkkC1yQ0V6Mn+}XLP93K>_lo6(d|m!Pp=^<&&Bv58wR$*>i1i^LECkA% zg~LD2cy|6Xuz0<1*Y}aP?Xa`6&37TfKQ1%zvnhG<4kk- z+zIFZJ*ouve3oy?P>sO&H4r~|jM)`wafby$6xv z4qSgYa61@~fQBopI-jzrBfVfjB2+QqEkoF^@Ymn3S3tkTB_**@ismsi!fE9WWfp`X z%c7yP;;$WraSgF@J7-fO?QrQq%jDRHu$5ZUGSS;|8f6`USboo=9He000faXwJ3D)9 zP-`;P>^y&YTppm;Xe@*Y>oB#=2DGu_`NkJ3F1+Lex2l^R$k_;`H3?o>UzfLx>{_;b zx%chH^Vpy#!PpAo=wlE=pA`x)MiMj^#!<{`xlo` zSiMjWCcB(BSVRozW3u#iHi)W*lDsH=p*O^HsYdK_mu( zIvyxA@M4;OG(*r*QC_4b=pUOvp6#U(eiLjo2ht6|Ls2lv9BQ;{rct0wpRZID1 zuh_k#%F&qo#&GME1%#;9fJI0Gft>3xYEf_+`yr-$p*4|YPPElFLOjR5TWGz97P;#& zUhDAz<@s{VAq+UX#4eDD6|+Xj&a4t zhD{>V{$h1Z7tcT=i1^>+LiX;4r7Q+Cy^@j=F*0Q9!D8PsWQF0V7TW^+C*lhFRPs}H zFM@DV(zZJ|IAr~-IsB=yG4$=*x7N+MDt=PN?(av@YIK|ss^UK?ZQk4g3QB8VxC_hH z%%VghX%7VHSRlYe5ImptY>ZE_K^5H6!NBh$@8|~+ow^0CK+R7)gzS#j-v9VL%}4Om zEvfL&^zTIU52c9~C;8 zxdy$MJbs592GO+-k7E~3kWZ1m1eHmcJy9;E0Tp}KSKOixM9EM=9c2;j{_EQh^r5`F z4?^SnB(%^wj&=)@LT7;Hce4dae&c!^(U!$`o}7(+^?!{CK>MR}cZ* zy$~)qE|9?kb_+~Ju$G5A-z_XWgtwZ%_04|K(XeulT8GXL+urorj8Mb-8~#KpS<>5U z7DapOcf>!Q3!TUQDYgSyW~MqiuwD^|c%b5ryV3%UAG=v6!I69j@L1SpFR!_%T?CWA z;&>j;Qi6#h8K={ca5*`B2pVz3|5h zH6#&~dIjhHR%^g1(1;Lq9zgh?ZNIUW501ybQDkY-!2gPH^8X<&o?P&0>2KPM4MmV` P3Wc`QXh-5U^UMDQ7B$0d literal 35547 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 diff --git a/docs/reference/anova.modeler.html b/docs/reference/anova.modeler.html index fe4b3e9..243d0fb 100644 --- a/docs/reference/anova.modeler.html +++ b/docs/reference/anova.modeler.html @@ -42,7 +42,7 @@
@@ -85,26 +85,12 @@

Author<

Examples

library(flexFitR)
 dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100))
-mo_1 <- modeler(
-  data = dt,
-  x = X,
-  y = Y,
-  fn = "fn_lin",
-  param = c(m = 10, b = -5)
-)
+mo_1 <- modeler(dt, X, Y, fn = "fn_lin", param = c(m = 10, b = -5))
 #> Loading required package: foreach
 #> Loading required package: future
-plot(mo_1)
-
-mo_2 <- modeler(
-  data = dt,
-  x = X,
-  y = Y,
-  fn = "fn_quad",
-  param = c(a = 1, b = 10, c = 5)
-)
+mo_2 <- modeler(dt, X, Y, fn = "fn_quad", param = c(a = 1, b = 10, c = 5))
 plot(mo_2)
-
+
 anova(mo_1, mo_2)
 #> # A tibble: 1 × 9
 #>     uid RSS_reduced RSS_full     n   df1   df2     F `Pr(>F)` .    
diff --git a/docs/reference/coef.modeler.html b/docs/reference/coef.modeler.html
index 948fb9e..3277182 100644
--- a/docs/reference/coef.modeler.html
+++ b/docs/reference/coef.modeler.html
@@ -123,7 +123,7 @@ 

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.2238 secs 100% 414 (id) +#> 3 1.2396 secs 100% 414 (id) #> coef(mod_1, id = 2) #> # A tibble: 3 × 6 diff --git a/docs/reference/confint.modeler.html b/docs/reference/confint.modeler.html index 7279afb..5edfd84 100644 --- a/docs/reference/confint.modeler.html +++ b/docs/reference/confint.modeler.html @@ -122,7 +122,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.9022 secs 100% 410 (id) +#> 3 1.8732 secs 100% 410 (id) #> confint(mod_1) #> # A tibble: 9 × 6 diff --git a/docs/reference/goodness_of_fit.html b/docs/reference/goodness_of_fit.html index 395d73b..531484e 100644 --- a/docs/reference/goodness_of_fit.html +++ b/docs/reference/goodness_of_fit.html @@ -1,5 +1,7 @@ -Akaike's An Information Criterion for an object of class modeler — goodness_of_fit • flexFitR +Akaike's An Information Criterion for an object of class modeler — goodness_of_fit • flexFitR Skip to contents @@ -42,12 +44,13 @@
-

Generic function calculating Akaike's ‘An Information Criterion’ for fitted model object of class modeler.

+

Generic function calculating Akaike's ‘An Information Criterion’ +for fitted model object of class modeler.

@@ -64,7 +67,8 @@

Argumentsobject -

An object inheriting from class modeler resulting of executing the function modeler()

+

An object inheriting from class modeler resulting of +executing the function modeler()

...
@@ -72,12 +76,13 @@

Argumentsk -

Numeric, the penalty per parameter to be used; the default k = 2 is the classical AIC.

+

Numeric, the penalty per parameter to be used; the default k = 2 is +the classical AIC.

Value

-

A tibble with columns giving lower and upper confidence limits for each parameter.

+

A tibble with columns giving the corresponding AIC and BIC.

Author

@@ -88,15 +93,14 @@

Author<

Examples

library(flexFitR)
 dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100))
-mo_1 <- modeler(dt, x = X, y = Y, fn = "fn_lin", param = c(m = 10, b = -5))
-plot(mo_1)
-
+mo_1 <- modeler(dt, X, Y, fn = "fn_lin", param = c(m = 10, b = -5))
+mo_2 <- modeler(dt, X, Y, fn = "fn_quad", param = c(a = 1, b = 10, c = 5))
 AIC(mo_1)
-#>   uid    logLik df nobs P     AIC
+#>   uid    logLik df nobs p     AIC
 #> 1   1 -21.45745  3    6 2 48.9149
-BIC(mo_1)
-#>   uid    logLik df nobs P      BIC
-#> 1   1 -21.45745  3    6 2 48.29017
+AIC(mo_2)
+#>   uid    logLik df nobs p      AIC
+#> 1   1 -21.00014  4    6 3 50.00028
 

diff --git a/docs/reference/plot.modeler.html b/docs/reference/plot.modeler.html index 8bb2069..756a7ef 100644 --- a/docs/reference/plot.modeler.html +++ b/docs/reference/plot.modeler.html @@ -132,7 +132,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.4528 secs 100% 499.67 (id) +#> 3 1.3991 secs 100% 499.67 (id) #> plot(mod_1, id = 1:2) diff --git a/docs/reference/predict.modeler.html b/docs/reference/predict.modeler.html index 90999b1..2cb3747 100644 --- a/docs/reference/predict.modeler.html +++ b/docs/reference/predict.modeler.html @@ -123,7 +123,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.4407 secs 100% 414 (id) +#> 3 1.4138 secs 100% 414 (id) #> predict(mod_1, x = 45, id = 2) #> # A tibble: 1 × 4 diff --git a/docs/reference/print.modeler.html b/docs/reference/print.modeler.html index 44789d1..b09a084 100644 --- a/docs/reference/print.modeler.html +++ b/docs/reference/print.modeler.html @@ -114,7 +114,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 5 2.1972 secs 100% 435.2 (id) +#> 5 2.3613 secs 100% 435.2 (id) #> diff --git a/docs/reference/vcov.modeler.html b/docs/reference/vcov.modeler.html index 0469b44..84aff7a 100644 --- a/docs/reference/vcov.modeler.html +++ b/docs/reference/vcov.modeler.html @@ -114,7 +114,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.3863 secs 100% 414 (id) +#> 3 1.4055 secs 100% 414 (id) #> vcov(mod_1) #> $`2` diff --git a/docs/search.json b/docs/search.json index b4612ee..a03b3c4 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -[{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"loading-libraries","dir":"Articles","previous_headings":"","what":"Loading libraries","title":"Modelling Emergence and Maximun Canopy","text":"","code":"library(flexFitR) library(dplyr) library(kableExtra) library(ggpubr) library(purrr)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"exploring-data-explorer","dir":"Articles","previous_headings":"","what":"Exploring data explorer()","title":"Modelling Emergence and Maximun Canopy","text":"","code":"data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = Canopy, id = Plot) names(explorer) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\""},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"data-exploration","dir":"Articles","previous_headings":"","what":"Data exploration","title":"Modelling Emergence and Maximun Canopy","text":"","code":"p1 <- plot(explorer, type = \"evolution\", return_gg = TRUE) p2 <- plot(explorer, type = \"x_by_var\", return_gg = TRUE) ggarrange(p1, p2)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"target-function","dir":"Articles","previous_headings":"","what":"Target Function","title":"Modelling Emergence and Maximun Canopy","text":"fn_piwise() \\[\\begin{equation} f(t; t_1, t_2, k) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t > t_2 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"fitting-models","dir":"Articles","previous_headings":"","what":"Fitting Models","title":"Modelling Emergence and Maximun Canopy","text":"","code":"mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(195, 40), add_zero = TRUE ) mod_1 #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 390.5 1004.2 1618.0 1618.0 2231.8 2845.5 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 40 34.8 53.7 72.5 2846 4623 #> 195 38.7 60.0 91.7 390 5377 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 0.8812 secs 100% 547 (id) plot(mod_1, id = c(195, 40)) kable(mod_1$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"providing-different-initial-values","dir":"Articles","previous_headings":"","what":"Providing different initial values","title":"Modelling Emergence and Maximun Canopy","text":"","code":"initials <- data.frame( uid = c(195, 40), t1 = c(40, 60), t2 = c(70, 80), k = c(100, 100) ) kable(initials) mod_2 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), initial_vals = initials, subset = c(195, 40), add_zero = TRUE ) plot(mod_2, id = c(195, 40)) kable(mod_2$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"fixing-some-parameters-of-the-model","dir":"Articles","previous_headings":"","what":"Fixing some parameters of the model","title":"Modelling Emergence and Maximun Canopy","text":"","code":"fixed_params <- data.frame(uid = c(195, 40), k = c(100, 100)) kable(fixed_params) mod_3 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE ) plot(mod_3, id = c(195, 40)) kable(mod_3$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"correcting-maximun-value","dir":"Articles","previous_headings":"","what":"Correcting Maximun value","title":"Modelling Emergence and Maximun Canopy","text":"","code":"mod_4 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE, max_as_last = TRUE ) plot(mod_4, id = c(195, 40)) kable(mod_4$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"comparing-models","dir":"Articles","previous_headings":"","what":"Comparing Models","title":"Modelling Emergence and Maximun Canopy","text":"","code":"rbind.data.frame( mutate(mod_1$param, mod = \"1\"), mutate(mod_2$param, mod = \"2\"), mutate(mod_3$param, mod = \"3\"), mutate(mod_4$param, mod = \"4\") ) |> filter(uid %in% 40) |> kable()"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"loading-libraries","dir":"Articles","previous_headings":"","what":"Loading libraries","title":"Modelling Plant Height","text":"","code":"library(flexFitR) library(dplyr) library(kableExtra) library(ggpubr) library(purrr)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"exploring-data-explorer","dir":"Articles","previous_headings":"","what":"Exploring data explorer()","title":"Modelling Plant Height","text":"","code":"data(dt_chips) results <- explorer(dt_chips, x = DAP, y = c(PH, Canopy), id = Plot) names(results) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\""},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"data-exploration","dir":"Articles","previous_headings":"","what":"Data exploration","title":"Modelling Plant Height","text":"","code":"p1 <- plot(results, type = \"evolution\", return_gg = TRUE) p2 <- plot(results, type = \"x_by_var\", return_gg = TRUE) ggarrange(p1, p2, nrow = 2)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"estimating-days-to-emergence","dir":"Articles","previous_headings":"","what":"Estimating days to emergence","title":"Modelling Plant Height","text":"\\[\\begin{equation} f(t; t_1, t_2, k) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t > t_2 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"fitting-models-for-canopy","dir":"Articles","previous_headings":"","what":"Fitting models for canopy","title":"Modelling Plant Height","text":"","code":"fixed_params <- results |> pluck(\"dt_long\") |> filter(var %in% \"Canopy\" & uid %in% c(195, 40)) |> group_by(uid) |> summarise(k = max(y), .groups = \"drop\") mod_1 <- dt_chips |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE, max_as_last = TRUE ) plot(mod_1, id = c(195, 40)) kable(mod_1$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"target-function-for-plant-height","dir":"Articles","previous_headings":"","what":"Target function for plant height","title":"Modelling Plant Height","text":"fn_exp2_exp() \\[\\begin{equation} f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)^2} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\left(e^{\\alpha \\cdot (t_2 - t_1)^2} - 1\\right) \\cdot e^{\\beta \\cdot (t - t_2)} & \\text{} t > t_2 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"fixing-parameters-and-providing-initial-values","dir":"Articles","previous_headings":"","what":"Fixing parameters and providing initial values","title":"Modelling Plant Height","text":"","code":"fixed_params <- mod_1 |> pluck(\"param\") |> select(uid, t1) kable(fixed_params) initials <- mod_1 |> pluck(\"param\") |> select(uid, t1, t2) |> mutate(alpha = 1 / 600, beta = -1 / 30) kable(initials)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"fitting-models-for-plant-height","dir":"Articles","previous_headings":"","what":"Fitting models for plant height","title":"Modelling Plant Height","text":"Using t1 previous model fixed parameter using t2 initial parameter per plot.","code":"mod_2 <- dt_chips |> modeler( x = DAP, y = PH, grp = Plot, fn = \"fn_exp2_exp\", initial_vals = initials, fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE ) plot(mod_2, id = c(195, 40)) kable(mod_2$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"getting-started","dir":"Articles","previous_headings":"","what":"Getting started","title":"How to start","text":"basic idea vignette illustrate users use flexFitR package. ’ll start basic example: simple linear regression. Although example primary focus package, serve demonstrate use.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"simple-linear-regression","dir":"Articles","previous_headings":"","what":"1. Simple linear regression","title":"How to start","text":"example, ’ll work small dataset consisting 6 observations, X independent variable Y dependent variable. First, define objective function. case, function fn_lm represent linear regression, b intercept m slope regression. plot_fn function, integrated package, allows us plot function parameters provided. useful visualizing shape function fitting model data. fit model, use modeler function. function, pass x independent variable, y dependent variable, vector parameters assign initial values coefficient b coefficient m. model fitted, can examine output, extract estimated parameters, make plots, predict new x values. order get coefficients variance-covariance matrix make use coef vcov function, takes model object argument. Finally, can make predictions using predict function, takes fitted model object X value want make prediction. can compare lm function R, give results similar obtained package.","code":"library(flexFitR) library(dplyr) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) plot(explorer(dt, X, Y), type = \"xy\") fn_lm <- function(x, b, m) { y <- b + m * x return(y) } plot_fn(fn = \"fn_lm\", params = c(b = 10, m = 5)) mod <- dt |> modeler( x = X, y = Y, fn = \"fn_lm\", parameters = c(b = -5, m = 10) ) mod #> #> Call: #> Y ~ fn_lm(x, b, m) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -12.5905 -6.0762 -0.3476 0.0000 6.1952 12.8952 #> #> Optimization Results `head()`: #> uid b m sse auc #> 1 -15.5 19.5 449 258 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3946 secs 100% 259 (id) plot(mod) coef(mod) #> # A tibble: 2 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 b -15.5 9.86 -1.57 0.192 #> 2 1 m 19.5 2.53 7.71 0.00152 vcov(mod) #> $`1` #> b m #> b 97.21937 -22.435238 #> m -22.43524 6.410068 predict(mod, x = 4.5) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 1 4.5 72.3 5.01"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"comparison-with-lm","dir":"Articles","previous_headings":"1. Simple linear regression","what":"Comparison with lm","title":"How to start","text":"previous example fairly simple, can consider complex scenario need fit just one function, hundreds functions several groups. can achieved using group_by argument modeler function. Additionally, can parallelize processes setting parallel argument TRUE defining number cores use. ’s important note depending functions defined user, parameters may need constrained, required greater less zero. cases, certain parameters might need fixed known values. complex situations, many curves fit working complex functions—whether non linear regressions specific parameter constraints cases parameters fixed group—modeler offers extensive flexibility.","code":"mo <- lm(Y ~ X, data = dt) mo #> #> Call: #> lm(formula = Y ~ X, data = dt) #> #> Coefficients: #> (Intercept) X #> -15.47 19.51 summary(mo)$coefficients #> Estimate Std. Error t value Pr(>|t|) #> (Intercept) -15.46667 9.859988 -1.568629 0.191812151 #> X 19.51429 2.531811 7.707639 0.001524882 vcov(mo) #> (Intercept) X #> (Intercept) 97.21937 -22.435238 #> X -22.43524 6.410068 predict(mo, newdata = data.frame(X = 4.5), se.fit = TRUE) #> $fit #> 1 #> 72.34762 #> #> $se.fit #> [1] 5.010599 #> #> $df #> [1] 4 #> #> $residual.scale #> [1] 10.59133"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"piece-wise-regression","dir":"Articles","previous_headings":"","what":"2. Piece-wise regression","title":"How to start","text":"following example, although still simple, represents slightly complex function greater number parameters. case, piece-wise regression, parameterized t1, t2, k, defined following expression: fitting model, let’s take look example dataset. can make plot piecewise function fit model using modeler function. fitting model, can examine results, plot fitted curve, extract coefficients associated p-values, obtain variance-covariance matrix, make predictions unknown values x. Finally, illustrate provide different initial values function dealing multiple groups, also show fix parameters objective function.","code":"fun <- function(t, t1 = 45, t2 = 80, k = 0.9) { if (t < t1) { y <- 0 } else if (t >= t1 && t <= t2) { y <- k / (t2 - t1) * (t - t1) } else { y <- k } return(y) } dt <- data.frame( time = c(0, 29, 36, 42, 56, 76, 92, 100, 108), variable = c(0, 0, 0.67, 15.11, 77.38, 99.81, 99.81, 99.81, 99.81) ) plot(explorer(dt, time, variable), type = \"xy\") plot_fn(fn = \"fun\", params = c(t1 = 25, t2 = 70, k = 90)) mod_1 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90) ) mod_1 #> #> Call: #> variable ~ fun(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.00000 0.00000 0.00000 0.07444 0.00000 0.67000 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61 99.8 0.449 5807 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4158 secs 100% 511 (id) plot(mod_1) # Coefficients coef(mod_1) #> # A tibble: 3 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 t1 38.6 0.0779 496. 4.54e-15 #> 2 1 t2 61.0 0.0918 665. 7.82e-16 #> 3 1 k 99.8 0.137 730. 4.47e-16 # Variance-Covariance Matrix vcov(mod_1) #> $`1` #> t1 t2 k #> t1 6.061705e-03 -0.002940001 1.877072e-07 #> t2 -2.940001e-03 0.008431400 4.204939e-03 #> k 1.877072e-07 0.004204939 1.870426e-02 # Making predictions predict(mod_1, x = 45) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 1 45 28.5 0.223"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"providing-initial-values","dir":"Articles","previous_headings":"2. Piece-wise regression","what":"Providing Initial values","title":"How to start","text":"example, don’t grouping variable. However, default, function assigns unique identifier (uid) dataset. , need specify uid = 1 initial values fixed parameters. one group, need modify parameters argument accordingly. approach primarily illustrative purposes.","code":"init <- data.frame(uid = 1, t1 = 20, t2 = 30, k = 0.8) mod_2 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90), initial_vals = init ) mod_2 #> #> Call: #> variable ~ fun(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.00000 0.00000 0.00000 0.07444 0.00000 0.67000 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61 99.8 0.449 5807 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4092 secs 100% 567 (id) coef(mod_2) #> # A tibble: 3 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 t1 38.6 0.0779 496. 4.54e-15 #> 2 1 t2 61.0 0.0918 665. 7.82e-16 #> 3 1 k 99.8 0.137 730. 4.47e-16"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"fixing-parameters","dir":"Articles","previous_headings":"2. Piece-wise regression","what":"Fixing parameters","title":"How to start","text":"vignette provided basic introduction using flexFitR package, starting simple examples linear regression piecewise regression. goal demonstrate fundamental features flexibility package. However, complex situations can arise working high-throughput phenotypic (HTP) data, involve multiple groups, parameter constraints, advanced modeling scenarios. complex situations illustrated vignettes, use real HTP data showcase full capabilities flexFitR package.","code":"fix <- data.frame(uid = 1, k = 98) mod_3 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90), fixed_params = fix ) mod_3 #> #> Call: #> variable ~ fun(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.0000 0.0000 0.6700 0.8789 1.8100 1.8100 #> #> Optimization Results `head()`: #> uid t1 t2 sse k auc #> 1 38.6 60.6 13.6 98 5721 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3828 secs 100% 321 (id) coef(mod_3) #> # A tibble: 2 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 t1 38.6 0.396 97.5 3.15e-12 #> 2 1 t2 60.6 0.429 141. 2.34e-13 plot(mod_3) rbind(metrics(mod_1), metrics(mod_2), metrics(mod_3)) #> # A tibble: 3 × 8 #> uid var SSE MAE MSE RMSE r_squared n #> #> 1 1 variable 0.449 0.0744 0.0499 0.223 1.00 9 #> 2 1 variable 0.449 0.0744 0.0499 0.223 1.00 9 #> 3 1 variable 13.6 0.879 1.51 1.23 0.999 9"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"loading-libraries","dir":"Articles","previous_headings":"","what":"Loading libraries","title":"Modelling Maturity","text":"","code":"library(flexFitR) library(dplyr) library(kableExtra) library(ggpubr) library(purrr)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"exploring-data-explorer","dir":"Articles","previous_headings":"","what":"Exploring data explorer()","title":"Modelling Maturity","text":"","code":"data(dt_potato) results <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) names(results) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\""},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"data-exploration","dir":"Articles","previous_headings":"","what":"Data exploration","title":"Modelling Maturity","text":"","code":"p1 <- plot(results, type = \"evolution\", return_gg = TRUE) p2 <- plot(results, type = \"x_by_var\", return_gg = TRUE) ggarrange(p1, p2, nrow = 2)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"target-function-for-maturity","dir":"Articles","previous_headings":"","what":"Target function for maturity","title":"Modelling Maturity","text":"fn_lin_pl_lin() \\[\\begin{equation} f(t; t_1, t_2, t_3, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq t_3 \\\\ k + \\beta \\cdot (t - t_3) & \\text{} t > t_3 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"fitting-models-for-maturity","dir":"Articles","previous_headings":"","what":"Fitting models for maturity","title":"Modelling Maturity","text":"","code":"mod_1 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", parameters = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), subset = c(195, 40), add_zero = TRUE ) plot(mod_1, id = c(195, 40)) kable(mod_1$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"providing-initial-parameters-from-the-canopy-model","dir":"Articles","previous_headings":"","what":"Providing initial parameters from the canopy model","title":"Modelling Maturity","text":"","code":"fixed_params <- results |> pluck(\"dt_long\") |> filter(var %in% \"Canopy\" & uid %in% c(195, 40)) |> group_by(uid) |> summarise(k = max(y), .groups = \"drop\") mod_2 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE, max_as_last = TRUE ) plot(mod_2, id = c(195, 40)) kable(mod_2$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"passing-initial-values","dir":"Articles","previous_headings":"","what":"Passing initial values","title":"Modelling Maturity","text":"","code":"initials <- mod_2 |> pluck(\"param\") |> select(uid, t1, t2) |> mutate(t3 = 100, k = 0.32, beta = -0.01) kable(initials) mod_3 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", initial_vals = initials, subset = c(195, 40), add_zero = TRUE ) plot(mod_3, id = c(195, 40)) kable(mod_3$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"adding-constrains-to-the-optimization","dir":"Articles","previous_headings":"","what":"Adding constrains to the optimization","title":"Modelling Maturity","text":"","code":"mod_4 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin2\", parameters = c(t1 = 38.7, t2 = 62, dt = 28, k = 0.32, beta = -0.01), lower = c(-Inf, -Inf, 0, -Inf, -Inf), upper = c(Inf, Inf, Inf, Inf, 0), method = c(\"nlminb\", \"L-BFGS-B\"), subset = c(195, 40), add_zero = TRUE ) plot(mod_4, id = c(195, 40)) kable(mod_4$param)"},{"path":"https://apariciojohan.github.io/flexFitR/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Johan Aparicio. Author, maintainer. Jeffrey Endelman. Author. University Wisconsin Madison. Copyright holder.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Aparicio J, Endelman J (2024). flexFitR: Flexible Non-Linear Least Square Modelling. R package version 0.1.0, https://github.com/AparicioJohan/flexFitR, https://apariciojohan.github.io/flexFitR/.","code":"@Manual{, title = {flexFitR: Flexible Non-Linear Least Square Modelling}, author = {Johan Aparicio and Jeffrey Endelman}, year = {2024}, note = {R package version 0.1.0, https://github.com/AparicioJohan/flexFitR}, url = {https://apariciojohan.github.io/flexFitR/}, }"},{"path":[]},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement johanstevenapa@gmail.com. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired [Mozilla’s code conduct enforcement ladder][https://github.com/mozilla/inclusion]. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"flexfitr-","dir":"","previous_headings":"","what":"Flexible Non-Linear Least Square Modelling","title":"Flexible Non-Linear Least Square Modelling","text":"flexFitR R package designed efficient modeling analysis large complex datasets. offers powerful tools parameter estimation, model fitting, visualization, leveraging optimx package optimization future package parallel processing.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Flexible Non-Linear Least Square Modelling","text":"can install development version flexFitR GitHub :","code":"# install.packages(\"devtools\") devtools::install_github(\"AparicioJohan/flexFitR\")"},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"features","dir":"","previous_headings":"","what":"Features","title":"Flexible Non-Linear Least Square Modelling","text":"Parameter Estimation: Utilizes optimx derivative-free algorithms solve estimate parameters given function. Parallelization: Implements parallel processing using future package, enabling efficient fitting hundreds curves simultaneously. Visualization Tools: Provides variety plots visualize model fits, correlations, predictions, . Statistical Rigor: Offers standard errors p-values coefficients, supporting robust conclusions interpretations. Prediction: Facilitates prediction non-observed data points. Flexibility: Allows users fix certain parameters model specify different initial values per grouping factor. Custom Modeling Functions: Equipped built-modeling functions common analysis tasks, also permitting users supply custom functions.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"example","dir":"","previous_headings":"","what":"Example","title":"Flexible Non-Linear Least Square Modelling","text":"’s simple example get started flexFitR. example demonstrates fitting piecewise regression model:","code":"library(flexFitR) dt <- data.frame( time = c(0, 29, 36, 42, 56, 76, 92, 100, 108), variable = c(0, 0, 0.67, 15.11, 77.38, 99.81, 99.81, 99.81, 99.81) ) plot(explorer(dt, time, variable), type = \"xy\") fun <- function(t, t1 = 45, t2 = 80, k = 0.9) { if (t < t1) { y <- 0 } else if (t >= t1 && t <= t2) { y <- k / (t2 - t1) * (t - t1) } else { y <- k } return(y) } # Fitting piecewise regression mod_1 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90) ) print(mod_1) Call: variable ~ fun(x, t1, t2, k) Residuals: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.00000 0.00000 0.00000 0.07444 0.00000 0.67000 Optimization Results `head()`: uid t1 t2 k sse auc 1 38.6 61 99.8 0.449 5807 Metrics: Groups Timing Convergence Iterations 1 0.3475 secs 100% 511 (id) # Auto plot plot(mod_1) # Coefficients coef(mod_1) # A tibble: 3 × 6 uid coefficient solution std.error `t value` `Pr(>|t|)` 1 1 t1 38.6 0.0779 496. 4.54e-15 2 1 t2 61.0 0.0918 665. 7.82e-16 3 1 k 99.8 0.137 730. 4.47e-16 # Variance-Covariance Matrix vcov(mod_1) $`1` t1 t2 k t1 6.061705e-03 -0.002940001 1.877072e-07 t2 -2.940001e-03 0.008431400 4.204939e-03 k 1.877072e-07 0.004204939 1.870426e-02 # Making predictions predict(mod_1, x = 45) # A tibble: 1 × 4 uid x_new predicted.value std.error 1 1 45 28.5 0.223"},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"Flexible Non-Linear Least Square Modelling","text":"detailed documentation examples, visit flexFitR Vignette 1: start Vignette 2: Modeling Canopy Vignette 3: Modeling Plant Height Vignette 4: Modeling VIs","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"contributing","dir":"","previous_headings":"","what":"Contributing","title":"Flexible Non-Linear Least Square Modelling","text":"Contributions flexFitR welcome! ’d like contribute, please fork repository submit pull request. significant changes, please open issue first discuss ideas.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Flexible Non-Linear Least Square Modelling","text":"Please note flexFitR project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Flexible Non-Linear Least Square Modelling","text":"flexFitR licensed MIT License. See LICENSE file details.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2024 flexFitR authors Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"anova objects class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"","code":"# S3 method for class 'modeler' anova(reduced_model, full_model = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"reduced_model object class `modeler` reduced number parameters. full_model object class `modeler` number parameters. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"tibble columns giving F test p values.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"","code":"library(flexFitR) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) mo_1 <- modeler( data = dt, x = X, y = Y, fn = \"fn_lin\", param = c(m = 10, b = -5) ) #> Loading required package: foreach #> Loading required package: future plot(mo_1) mo_2 <- modeler( data = dt, x = X, y = Y, fn = \"fn_quad\", param = c(a = 1, b = 10, c = 5) ) plot(mo_2) anova(mo_1, mo_2) #> # A tibble: 1 × 9 #> uid RSS_reduced RSS_full n df1 df2 F `Pr(>F)` . #> #> 1 1 449. 385. 6 1 3 0.494 0.533 ns"},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Coefficients of an object of class modeler — coef.modeler","title":"Coefficients of an object of class modeler — coef.modeler","text":"Coefficients object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Coefficients of an object of class modeler — coef.modeler","text":"","code":"# S3 method for class 'modeler' coef(x, id = NULL, metadata = FALSE, df = FALSE, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Coefficients of an object of class modeler — coef.modeler","text":"x object inheriting class modeler resulting executing function modeler() id unique identifier filter . NULL default. metadata TRUE FALSE. Whether bring metadata calculating coefficients. df TRUE FALSE. Whether return degrees freedom calculating coefficients. FALSE default. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Coefficients of an object of class modeler — coef.modeler","text":"data.frame object coefficients standard errors.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Coefficients of an object of class modeler — coef.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Coefficients of an object of class modeler — coef.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 2, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 2.674719 4.010777 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 2 35.2 60.7 100.0 7.0145 6004 #> 15 38.5 69.4 99.8 1.0071 5396 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.2238 secs 100% 414 (id) #> coef(mod_1, id = 2) #> # A tibble: 3 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 2 t1 35.2 0.239 147. 6.57e-12 #> 2 2 t2 60.7 0.371 164. 3.53e-12 #> 3 2 k 100. 0.541 185. 1.68e-12"},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Confidence Intervals for an object of class modeler — confint.modeler","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"confint object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"","code":"# S3 method for class 'modeler' confint(x, parm = NULL, level = 0.95, id = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"x object inheriting class modeler resulting executing function modeler() parm specification parameters given confidence intervals, must vector names. missing, parameters considered. level confidence level required. Default 0.95. id unique identifier filter . NULL default. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"tibble columns giving lower upper confidence limits parameter.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"","code":"library(flexFitR) data(dt_potato) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 35, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 0.968957 1.452134 1.897212 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 15 38.5 69.4 99.8 1.0071 5396 #> 35 52.2 61.4 100.0 1.8972 5117 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.9022 secs 100% 410 (id) #> confint(mod_1) #> # A tibble: 9 × 6 #> uid coefficient solution std.error ci_lower ci_upper #> #> 1 15 t1 38.5 0.162 38.1 38.8 #> 2 15 t2 69.4 0.283 68.7 70.1 #> 3 15 k 99.8 0.205 99.3 100. #> 4 35 t1 52.2 2.00 47.3 57.1 #> 5 35 t2 61.4 2.87 54.4 68.5 #> 6 35 k 100. 0.281 99.3 101. #> 7 45 t1 38.3 0.00704 38.3 38.3 #> 8 45 t2 64.5 0.00972 64.4 64.5 #> 9 45 k 100. 0.0104 100. 100."},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":null,"dir":"Reference","previous_headings":"","what":"General-purpose optimization — .fitter_curve","title":"General-purpose optimization — .fitter_curve","text":"function .fitter_curve used internally find parameters requested.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"General-purpose optimization — .fitter_curve","text":"","code":".fitter_curve(data, id, fn, method, lower, upper, control, .keep)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"General-purpose optimization — .fitter_curve","text":"data nested data.frame columns . id optional vector IDs filter data. Default NULL, meaning ids used. fn string specifying name function used curve fitting. Default \"fn_piwise\". method character vector specifying optimization methods used. See optimx package available methods. Default c(\"subplex\", \"pracmanm\", \"anms\"). lower Numeric vector specifying lower bounds parameters. Default -Inf parameters. upper Numeric vector specifying upper bounds parameters. Default Inf parameters. control list control parameters passed optimization function. example, list(maxit = 500).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"General-purpose optimization — .fitter_curve","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", parameters = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), subset = 195, add_zero = TRUE )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":null,"dir":"Reference","previous_headings":"","what":"Drone Data in Potato 2022 — dt_chips","title":"Drone Data in Potato 2022 — dt_chips","text":"Vegetative indices biomass related traits potato trial arranged p-rep design.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drone Data in Potato 2022 — dt_chips","text":"","code":"dt_chips"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Drone Data in Potato 2022 — dt_chips","text":"tibble 1568 rows 17 variables: Trial chr trial name DAP dbl denoting Days planting Plot dbl denoting unique plot id Row dbl denoting row coordinate Range dbl denoting range coordinate Gen chr denoting genotype id Yield dbl Total Yield measured end season VineMaturity dbl VineMaturity measure season Red - Canopy dbl denoting drone-derived traits","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Drone Data in Potato 2022 — dt_chips","text":"UW - Potato Breeding Program","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":null,"dir":"Reference","previous_headings":"","what":"Drone Data in Potato 2020 — dt_potato","title":"Drone Data in Potato 2020 — dt_potato","text":"Vegetative indices biomass related traits potato trial arranged p-rep design.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drone Data in Potato 2020 — dt_potato","text":"","code":"dt_potato"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Drone Data in Potato 2020 — dt_potato","text":"tibble 1372 rows 17 variables: Trial chr trial name DAP dbl denoting Days planting Plot dbl denoting unique plot id Row dbl denoting row coordinate Range dbl denoting range coordinate Gen chr denoting genotype id Yield dbl Total Yield measured end season VineMaturity dbl VineMaturity measure season Red - Canopy dbl denoting drone-derived traits","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Drone Data in Potato 2020 — dt_potato","text":"UW - Potato Breeding Program","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":null,"dir":"Reference","previous_headings":"","what":"Explore Data — explorer","title":"Explore Data — explorer","text":"Explores data data frame wide format.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Explore Data — explorer","text":"","code":"explorer(data, x, y, id, metadata)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Explore Data — explorer","text":"data data.frame wide format containing data. x name column `data` contains x points. y names columns `data` contain variables analyzed. id names columns `data` contains grouping variable. metadata names columns `data` keep across analysis.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Explore Data — explorer","text":"object class explorer, list containing following elements: summ_vars data.frame containing summary statistics trait x point, including minimum, mean, median, maximum, standard deviation, coefficient variation, number non-missing values, percentage missing values, percentage negative values. summ_metadata data.frame summarizing metadata. locals_min_max data.frame containing local minima maxima mean y values x. dt_long data.frame long format, columns uid, metadata, var, x, y metadata character vector names variables keep across.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Explore Data — explorer","text":"function helps explore dataset analyzed modeler().","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Explore Data — explorer","text":"","code":"library(flexFitR) data(dt_potato) results <- dt_potato |> explorer( x = DAP, y = c(Canopy, PH), id = Plot, metadata = c(Gen, Row, Range) ) names(results) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\" head(results$summ_vars) #> # A tibble: 6 × 12 #> var x Min Mean Median Max SD CV n miss `miss%` #> #> 1 Canopy 29 0 0 0 0 0 NaN 196 0 0 #> 2 Canopy 36 0 2.95 1.84 15.1 3.22 1.09 196 0 0 #> 3 Canopy 42 0.763 23.4 22.9 46.2 9.31 0.398 196 0 0 #> 4 Canopy 56 33.4 75.8 75.2 98.9 12.4 0.164 196 0 0 #> 5 Canopy 76 89.1 99.7 100 100 1.04 0.0104 196 0 0 #> 6 Canopy 92 62.5 97.0 98.4 100. 4.36 0.0449 196 0 0 #> # ℹ 1 more variable: `neg%` plot(results, label_size = 4, signif = TRUE, n_row = 2) # New data format head(results$dt_long) #> # A tibble: 6 × 7 #> uid Gen Row Range var x y #> #> 1 1 W17037-24 1 1 Canopy 29 0 #> 2 1 W17037-24 1 1 PH 29 NA #> 3 1 W17037-24 1 1 Canopy 36 0.67 #> 4 1 W17037-24 1 1 PH 36 0.0154 #> 5 1 W17037-24 1 1 Canopy 42 15.1 #> 6 1 W17037-24 1 1 PH 42 0.0173"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Exponential Function 1 — fn_exp1_exp","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"Computes value based exponential growth curve exponential decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"","code":"fn_exp1_exp(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter first exponential term. Must greater 0. beta Numeric. parameter second exponential term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"numeric value based double exponential model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)) - 1. t greater t2, function returns (exp(alpha * (t2 - t1)) - 1) * exp(beta * (t - t2)).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\left(e^{\\alpha \\cdot (t_2 - t_1)} - 1\\right) \\cdot e^{\\beta \\cdot (t - t_2)} & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp1_exp\", params = c(t1 = 35, t2 = 55, alpha = 1 / 20, beta = -1 / 30), interval = c(0, 108), n_points = 2000, auc_label_size = 3, y_auc_label = 0.2 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Linear Function 1 — fn_exp1_lin","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"Computes value based exponential growth curve linear decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"","code":"fn_exp1_lin(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter exponential term. Must greater 0. beta Numeric. parameter linear term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"numeric value based exponential linear model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)) - 1. t greater t2, function returns beta * (t - t2) + (exp(alpha * (t2 - t1)) - 1).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\beta \\cdot (t - t_2) + \\left(e^{\\alpha \\cdot (t_2 - t_1)} - 1\\right) & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp1_lin\", params = c(t1 = 35, t2 = 55, alpha = 1 / 20, beta = -1 / 40), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Exponential Function 2 — fn_exp2_exp","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"Computes value based exponential growth curve exponential decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"","code":"fn_exp2_exp(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter first exponential term. Must greater 0. beta Numeric. parameter second exponential term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"numeric value based double exponential model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)^2) - 1. t greater t2, function returns (exp(alpha * (t2 - t1)^2) - 1) * exp(beta * (t - t2)).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)^2} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\left(e^{\\alpha \\cdot (t_2 - t_1)^2} - 1\\right) \\cdot e^{\\beta \\cdot (t - t_2)} & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp2_exp\", params = c(t1 = 35, t2 = 55, alpha = 1 / 600, beta = -1 / 30), interval = c(0, 108), n_points = 2000, auc_label_size = 3, y_auc_label = 0.15 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Linear Function 2 — fn_exp2_lin","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"Computes value based exponential growth curve linear decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"","code":"fn_exp2_lin(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter exponential term. Must greater 0. beta Numeric. parameter linear term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"numeric value based exponential linear model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)^2) - 1. t greater t2, function returns beta * (t - t2) + (exp(alpha * (t2 - t1)^2) - 1).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)^2} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\beta \\cdot (t - t_2) + \\left(e^{\\alpha \\cdot (t_2 - t_1)^2} - 1\\right) & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp2_lin\", params = c(t1 = 35, t2 = 55, alpha = 1 / 600, beta = -1 / 80), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Function — fn_lin","title":"Linear Function — fn_lin","text":"Computes value based linear function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Function — fn_lin","text":"","code":"fn_lin(t, m, b)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Function — fn_lin","text":"t Numeric value. m Numeric value slope coefficient. b Numeric value intercept coefficient.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Function — fn_lin","text":"numeric value based linear function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Function — fn_lin","text":"$$ f(t; m, b) = m \\cdot t + b $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Function — fn_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin\", params = c(m = 2, b = 10), interval = c(0, 108), n_points = 2000 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Plateau Linear — fn_lin_pl_lin","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"Linear Plateau Linear","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"","code":"fn_lin_pl_lin(t, t1, t2, t3, k, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"t Numeric. time value. t1 Numeric. lower threshold time. Default 45. t2 Numeric. upper threshold time plateau. Default 80. t3 Numeric. lower threshold time plateau. Default 45. k Numeric. maximum value function. Default 0.9. beta Numeric. Slope linear decay.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"numeric value based linear plateau linear model.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"$$ f(t; t_1, t_2, t_3, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq t_3 \\\\ k + \\beta \\cdot (t - t_3) & \\text{} t > t_3 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin_pl_lin\", params = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"Linear Plateau Linear Constrains","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"","code":"fn_lin_pl_lin2(t, t1, t2, dt, k, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"t Numeric. time value. t1 Numeric. lower threshold time. t2 Numeric. upper threshold time plateau. dt Numeric. dt = t3 - t2. k Numeric. maximum value function. beta Numeric. Slope linear decay.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"numeric value based linear plateau linear model.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"$$ f(t; t_1, t_2, dt, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq (t_2 + dt) \\\\ k + \\beta \\cdot (t - (t_2 + dt)) & \\text{} t > (t_2 + dt) \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin_pl_lin2\", params = c(t1 = 38.7, t2 = 62, dt = 28, k = 0.32, beta = -0.01), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"Linear Plateau Linear Constrains","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"","code":"fn_lin_pl_lin3(t, t1, t2, t3, k, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"t Numeric. time value. t1 Numeric. lower threshold time. Default 45. t2 Numeric. upper threshold time plateau. Default 80. t3 Numeric. lower threshold time plateau. Default 45. k Numeric. maximum value function. Default 0.9. beta Numeric. Slope linear decay.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"numeric value based linear plateau linear model.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"$$ f(t; t_1, t_2, t_3, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq t_3 \\\\ k + \\beta \\cdot (t - t_3) & \\text{} t > t_3 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin_pl_lin3\", params = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":null,"dir":"Reference","previous_headings":"","what":"Piecewise Linear Regression — fn_piwise","title":"Piecewise Linear Regression — fn_piwise","text":"Computes value based linear growth curve reaching plateau time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Piecewise Linear Regression — fn_piwise","text":"","code":"fn_piwise(t, t1 = 45, t2 = 80, k = 0.9)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Piecewise Linear Regression — fn_piwise","text":"t Numeric. time value. t1 Numeric. lower threshold time. Default 45. t2 Numeric. upper threshold time. Default 80. k Numeric. maximum value function. Default 0.9. Assumed known.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Piecewise Linear Regression — fn_piwise","text":"numeric value based threshold model. t less t1, function returns 0. t t1 t2 (inclusive), function returns value 0 k linear trend. t greater t2, function returns k.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Piecewise Linear Regression — fn_piwise","text":"$$ f(t; t_1, t_2, k) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Piecewise Linear Regression — fn_piwise","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_piwise\", params = c(t1 = 34.9, t2 = 61.8, k = 100), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":null,"dir":"Reference","previous_headings":"","what":"Quadratic Function — fn_quad","title":"Quadratic Function — fn_quad","text":"Computes value based quadratic function..","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quadratic Function — fn_quad","text":"","code":"fn_quad(t, a, b, c)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quadratic Function — fn_quad","text":"t Numeric value. Numeric value coefficient . b Numeric value coefficient b. c Numeric value coefficient c.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Quadratic Function — fn_quad","text":"numeric value based linear function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Quadratic Function — fn_quad","text":"$$ f(t; , b, c) = \\cdot t^2 + b \\cdot t + c $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Quadratic Function — fn_quad","text":"","code":"library(flexFitR) plot_fn(fn = \"fn_quad\", params = c(a = 1, b = 10, c = 5))"},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":null,"dir":"Reference","previous_headings":"","what":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"Generic function calculating Akaike's ‘Information Criterion’ fitted model object class modeler.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"","code":"# S3 method for class 'modeler' AIC(object, ..., k = 2) # S3 method for class 'modeler' BIC(object, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"object object inheriting class modeler resulting executing function modeler() ... parameters. future improvements. k Numeric, penalty per parameter used; default k = 2 classical AIC.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"tibble columns giving lower upper confidence limits parameter.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"","code":"library(flexFitR) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) mo_1 <- modeler(dt, x = X, y = Y, fn = \"fn_lin\", param = c(m = 10, b = -5)) plot(mo_1) AIC(mo_1) #> uid logLik df nobs P AIC #> 1 1 -21.45745 3 6 2 48.9149 BIC(mo_1) #> uid logLik df nobs P BIC #> 1 1 -21.45745 3 6 2 48.29017"},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"logLik object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"","code":"# S3 method for class 'modeler' logLik(object, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"object object inheriting class modeler resulting executing function modeler() ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"tibble columns Log-Likelihood fitted models.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"","code":"library(flexFitR) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) mo_1 <- modeler( data = dt, x = X, y = Y, fn = \"fn_lin\", param = c(m = 10, b = -5) ) plot(mo_1) logLik(mo_1) #> uid logLik df nobs P #> 1 1 -21.45745 3 6 2"},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":null,"dir":"Reference","previous_headings":"","what":"Metrics for modeler — metrics","title":"Metrics for modeler — metrics","text":"Computes various performance metrics modeler object. function calculates Sum Squared Errors (SSE), Mean Absolute Error (MAE), Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Coefficient Determination (R-squared).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Metrics for modeler — metrics","text":"","code":"metrics(x, by_grp = TRUE)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Metrics for modeler — metrics","text":"x object class `modeler` containing necessary data compute metrics. by_grp Return metrics id? TRUE default.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Metrics for modeler — metrics","text":"data frame containing calculated metrics grouped uid, metadata, variables.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Metrics for modeler — metrics","text":"Sum Squared Errors (SSE): $$SSE = \\sum_{=1}^{n} (y_i - \\hat{y}_i)^2$$Mean Absolute Error (MAE): $$MAE = \\frac{1}{n} \\sum_{=1}^{n} |y_i - \\hat{y}_i|$$Mean Squared Error (MSE): $$MSE = \\frac{1}{n} \\sum_{=1}^{n} (y_i - \\hat{y}_i)^2$$Root Mean Squared Error (RMSE): $$RMSE = \\sqrt{\\frac{1}{n} \\sum_{=1}^{n} (y_i - \\hat{y}_i)^2}$$Coefficient Determination (R-squared): $$R^2 = 1 - \\frac{\\sum_{=1}^{n} (y_i - \\hat{y}_i)^2}{\\sum_{=1}^{n} (y_i - \\bar{y})^2}$$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Metrics for modeler — metrics","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, PH), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(1:2), add_zero = TRUE, max_as_last = TRUE ) plot(mod_1, id = c(1:2)) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4489 2.0903 3.7317 3.7317 5.3731 7.0145 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61.0 99.8 0.449 5807 #> 2 35.2 60.7 100.0 7.014 6004 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 0.9721 secs 100% 469 (id) #> metrics(mod_1) #> # A tibble: 2 × 8 #> uid var SSE MAE MSE RMSE r_squared n #> #> 1 1 Canopy 0.449 0.0744 0.0499 0.223 1.00 9 #> 2 2 Canopy 7.01 0.468 0.779 0.883 1.00 9"},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Modeler — modeler","title":"Modeler — modeler","text":"General-purpose optimization techniques non-linear least squares problems.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Modeler — modeler","text":"","code":"modeler( data, x, y, grp, keep, fn = \"fn_piwise\", parameters = NULL, lower = -Inf, upper = Inf, initial_vals = NULL, fixed_params = NULL, method = c(\"subplex\", \"pracmanm\", \"anms\"), return_method = FALSE, subset = NULL, add_zero = FALSE, check_negative = FALSE, max_as_last = FALSE, n_points = 1000, max_x = NULL, progress = FALSE, parallel = FALSE, workers = max(1, parallel::detectCores(), na.rm = TRUE), control = list() )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Modeler — modeler","text":"data data.frame wide format. x name column `data` contains x points. y name column `data` contain variable analyzed. Must match var data. grp names columns `data` contains grouping variable. (Optional). keep names columns `data` keep across analysis. fn string specifying name function used curve fitting. Default \"fn_piwise\". parameters named numeric vector specifying initial values parameters optimized. Default NULL. lower Numeric vector specifying lower bounds parameters. Default -Inf parameters. upper Numeric vector specifying upper bounds parameters. Default Inf parameters. initial_vals data frame columns uid, initial parameter values group id. Used providing specific initial values per group id. fixed_params data frame columns uid, fixed parameter values group id. Used fixing certain parameters optimization. method character vector specifying optimization methods used. See optimx package available methods. Default c(\"subplex\", \"pracmanm\", \"anms\"). return_method Logical. TRUE, includes optimization method used result. Default FALSE. subset optional vector levels `grp` filter data. Default NULL, meaning groups used. add_zero Logical. TRUE, adds zero value series start. Default FALSE. check_negative Logical. TRUE, converts negative values data zero. Default FALSE. max_as_last Logical. TRUE, appends maximum value reaching maximum. Default FALSE. n_points integer specifying number x points use approximating Area Curve (AUC). Default 1000. max_x Numeric. maximum x value use calculating AUC. Default NULL, uses last x value data. progress Logical. TRUE progress bar displayed. Default FALSE. Try running function: progressr::handlers(\"progress\", \"beepr\"). parallel Logical. TRUE model fit performed parallel. Default FALSE. workers number parallel processes use. `parallel::detectCores()` control list control parameters passed optimization function. example: list(maxit = 500).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Modeler — modeler","text":"object class modeler, list containing following elements: param data frame containing optimized parameters related information. dt data frame data used fitted values. fn call used calculate AUC. metrics Metrics summary models. max_x Maximum x value used calculating AUC. execution Execution time. response Response variable. keep Metadata keep across. fun Function optimized fit List fitted models.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Modeler — modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) # Example 1 mod_1 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", parameters = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), subset = 195, add_zero = TRUE ) plot(mod_1, id = 195) print(mod_1) #> #> Call: #> GLI_2 ~ fn_lin_pl_lin(x, t1, t2, t3, k, beta) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -0.011076 -0.002262 0.000000 -0.001676 0.000000 0.002262 #> #> Optimization Results `head()`: #> uid t1 t2 t3 k beta sse auc #> 195 39.6 68.3 93.3 0.323 -0.01 0.000149 16.4 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.8738 secs 100% 901 (id) #> # Example 2 mod_2 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = 195, add_zero = TRUE, max_as_last = TRUE ) plot(mod_2, id = 195) print(mod_2) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -1.340e-09 0.000e+00 0.000e+00 -9.481e-11 1.391e-10 1.391e-10 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 195 38.7 62 100 1.88e-18 5765 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.5743 secs 100% 349 (id) #>"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot an object of class explorer — plot.explorer","title":"Plot an object of class explorer — plot.explorer","text":"Creates various plots object class explorer. Depending specified type, function can generate plots show correlations variables x, correlations x values variable, evolution variables x.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot an object of class explorer — plot.explorer","text":"","code":"# S3 method for class 'explorer' plot( x, type = \"var_by_x\", label_size = 4, signif = FALSE, method = \"pearson\", filter_var = NULL, id = NULL, n_row = NULL, n_col = NULL, base_size = 13, return_gg = FALSE, add_avg = FALSE, ... )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot an object of class explorer — plot.explorer","text":"x object inheriting class explorer, resulting executing function explorer(). type Character string number specifying type plot generate. Available options : \"var_by_x\" 1 Plots correlations variables x (default). \"x_by_var\" 2 Plots correlations x points variable (y). \"evolution\" 3 Plot evolution variables (y) x. \"xy\" 4 Scatterplot (x, y) label_size Numeric. Size labels plot. Default 4. works type 1 2. signif Logical. TRUE, adds p-values correlation plot labels. Default FALSE. works type 1 2. method Character string specifying method correlation calculation. Available options \"pearson\" (default), \"spearman\", \"kendall\". works type 1 2. filter_var Character vector specifying variables exclude plot. id Optional unique identifier filter evolution type plot. Default NULL. works type 3. n_row Integer specifying number rows use facet_wrap(). Default NULL. works type 1 2. n_col Integer specifying number columns use facet_wrap(). Default NULL. works type 1 2. base_size Numeric. Base font size plot. Default 13. return_gg Logical. TRUE, returns ggplot object instead printing . Default FALSE. add_avg Logical. TRUE, returns evolution plot average trend across groups. Default FALSE. ... graphical parameters future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot an object of class explorer — plot.explorer","text":"ggplot object invisible data.frame containing correlation table type \"var_by_x\" \"x_by_var\".","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot an object of class explorer — plot.explorer","text":"","code":"library(flexFitR) data(dt_potato) dt_potato <- dt_potato results <- explorer(dt_potato, x = DAP, y = c(Canopy, PH), id = Plot) table <- plot(results, label_size = 4, signif = TRUE, n_row = 2) table #> # A tibble: 7 × 7 #> x col row corr p.value n signi #> #> 1 36 Canopy PH 0.46 8.23e-11 176 *** #> 2 42 Canopy PH 0.67 8.55e-27 196 *** #> 3 56 Canopy PH -0.21 3.65e- 3 196 ** #> 4 76 Canopy PH 0.3 1.41e- 5 196 *** #> 5 92 Canopy PH 0.28 5.96e- 5 196 *** #> 6 100 Canopy PH 0.32 6.45e- 6 196 *** #> 7 108 Canopy PH 0.07 3.14e- 1 196 ns plot(results, type = \"x_by_var\", label_size = 4, signif = TRUE)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot an object of class modeler — plot.modeler","title":"Plot an object of class modeler — plot.modeler","text":"Create several plots object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot an object of class modeler — plot.modeler","text":"","code":"# S3 method for class 'modeler' plot(x, id = NULL, type = 1, label_size = 4, base_size = 14, parm = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot an object of class modeler — plot.modeler","text":"x object inheriting class modeler resulting executing function modeler() id avoid many plots one figure. Filter group Id. type Numeric 1, 2, 3. specify type plot. Default 1. label_size Label size. 3 default. base_size Base font size, given pts. parm type equal 2 must vector names parameters. NULL, parameters considered. ... graphical parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot an object of class modeler — plot.modeler","text":"ggplot object.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot an object of class modeler — plot.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot an object of class modeler — plot.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) # Example 1 mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(1:3), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4489 2.3551 4.2612 3.9082 5.6379 7.0145 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61.0 99.8 0.449 5807 #> 2 35.2 60.7 100.0 7.014 6004 #> 3 33.8 59.9 100.0 4.261 6118 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.4528 secs 100% 499.67 (id) #> plot(mod_1, id = 1:2) plot(mod_1, id = 1:3, type = 2, label_size = 10)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot Function — plot_fn","title":"Plot Function — plot_fn","text":"function plots user-defined function specified interval annotates plot calculated Area Curve (AUC) parameter values. aim `plot_fn` allow users play different Starting Values functions fitting models.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot Function — plot_fn","text":"","code":"plot_fn( fn = \"fn_piwise\", params = c(t1 = 34.9, t2 = 61.8, k = 100), interval = c(0, 100), n_points = 1000, auc = FALSE, x_auc_label = NULL, y_auc_label = NULL, auc_label_size = 4, param_label_size = 4, base_size = 12, color = \"red\", label_color = \"grey30\" )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot Function — plot_fn","text":"fn character string representing name function plotted. Default \"fn_piwise\". params named numeric vector parameters passed function. Default c(t1 = 34.9, t2 = 61.8, k = 100). interval numeric vector length 2 specifying interval function plotted. Default c(0, 100). n_points integer specifying number points used plotting. Default 1000. auc Print AUC plot? Default FALSE. x_auc_label numeric value specifying x-coordinate AUC label. Default NULL. y_auc_label numeric value specifying y-coordinate AUC label. Default NULL. auc_label_size numeric value specifying size AUC label text. Default 3. param_label_size numeric value specifying size parameter label text. Default 3. base_size numeric value specifying base size plot's theme. Default 12. color character string specifying color plot lines area fill. Default \"red\". label_color character string specifying color labels. Default \"grey30\".","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot Function — plot_fn","text":"ggplot object representing plot.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot Function — plot_fn","text":"","code":"# Example usage plot_fn( fn = \"fn_piwise\", params = c(t1 = 34.9, t2 = 61.8, k = 100), interval = c(0, 100), n_points = 1000 ) plot_fn( fn = \"fn_lin_pl_lin\", params <- c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), interval = c(0, 100), n_points = 1000, base_size = 12 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Predict an object of class modeler — predict.modeler","title":"Predict an object of class modeler — predict.modeler","text":"Model predictions object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Predict an object of class modeler — predict.modeler","text":"","code":"# S3 method for class 'modeler' predict(object, x = NULL, id = NULL, metadata = FALSE, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Predict an object of class modeler — predict.modeler","text":"object object inheriting class modeler resulting executing function modeler() x numeric time point make prediction. Can one. id unique identifier filter . NULL default. metadata TRUE FALSE. Whether bring metadata calculating coefficients. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Predict an object of class modeler — predict.modeler","text":"data.frame object predicted values.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Predict an object of class modeler — predict.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Predict an object of class modeler — predict.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 2, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 2.674719 4.010777 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 2 35.2 60.7 100.0 7.0145 6004 #> 15 38.5 69.4 99.8 1.0071 5396 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.4407 secs 100% 414 (id) #> predict(mod_1, x = 45, id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 38.4 0.622"},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Print an object of class modeler — print.modeler","title":"Print an object of class modeler — print.modeler","text":"Prints information modeler function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print an object of class modeler — print.modeler","text":"","code":"# S3 method for class 'modeler' print(x, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print an object of class modeler — print.modeler","text":"x object fitted function modeler(). ... Options used tibble package format output. See `tibble::print()` details.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print an object of class modeler — print.modeler","text":"object inheriting class modeler.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print an object of class modeler — print.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Print an object of class modeler — print.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, PH), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(1:5), add_zero = TRUE, max_as_last = TRUE ) plot(mod_1, id = c(1:5)) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.000000 0.000049 0.448900 2.344930 4.261203 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61.0 99.8 4.49e-01 5807 #> 2 35.2 60.7 100.0 7.01e+00 6004 #> 3 33.8 59.9 100.0 4.26e+00 6118 #> 4 39.3 65.5 99.8 4.60e-18 5551 #> #> Metrics: #> Groups Timing Convergence Iterations #> 5 2.1972 secs 100% 435.2 (id) #>"},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"vcov object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"","code":"# S3 method for class 'modeler' vcov(x, id = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"x object inheriting class modeler resulting executing function modeler() id unique identifier filter . NULL default. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"list object matrices estimated covariances parameter estimates.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"","code":"library(flexFitR) data(dt_potato) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 2, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 2.674719 4.010777 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 2 35.2 60.7 100.0 7.0145 6004 #> 15 38.5 69.4 99.8 1.0071 5396 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.3863 secs 100% 414 (id) #> vcov(mod_1) #> $`2` #> t1 t2 k #> t1 5.694008e-02 -0.02923676 3.683474e-06 #> t2 -2.923676e-02 0.13796365 7.471629e-02 #> k 3.683474e-06 0.07471629 2.922726e-01 #> #> $`15` #> t1 t2 k #> t1 2.636323e-02 -0.02728600 1.691502e-07 #> t2 -2.728600e-02 0.08035361 1.300394e-02 #> k 1.691502e-07 0.01300394 4.196055e-02 #> #> $`45` #> t1 t2 k #> t1 4.956862e-05 -3.526927e-05 4.195078e-11 #> t2 -3.526927e-05 9.453221e-05 2.835289e-05 #> k 4.195078e-11 2.835289e-05 1.083750e-04 #>"},{"path":"https://apariciojohan.github.io/flexFitR/news/index.html","id":"flexfitr-010","dir":"Changelog","previous_headings":"","what":"flexFitR 0.1.0","title":"flexFitR 0.1.0","text":"Initial CRAN submission.","code":""}] +[{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"loading-libraries","dir":"Articles","previous_headings":"","what":"Loading libraries","title":"Modelling Emergence and Maximun Canopy","text":"","code":"library(flexFitR) library(dplyr) library(kableExtra) library(ggpubr) library(purrr)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"exploring-data-explorer","dir":"Articles","previous_headings":"","what":"Exploring data explorer()","title":"Modelling Emergence and Maximun Canopy","text":"","code":"data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = Canopy, id = Plot) names(explorer) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\""},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"data-exploration","dir":"Articles","previous_headings":"","what":"Data exploration","title":"Modelling Emergence and Maximun Canopy","text":"","code":"p1 <- plot(explorer, type = \"evolution\", return_gg = TRUE) p2 <- plot(explorer, type = \"x_by_var\", return_gg = TRUE) ggarrange(p1, p2)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"target-function","dir":"Articles","previous_headings":"","what":"Target Function","title":"Modelling Emergence and Maximun Canopy","text":"fn_piwise() \\[\\begin{equation} f(t; t_1, t_2, k) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t > t_2 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"fitting-models","dir":"Articles","previous_headings":"","what":"Fitting Models","title":"Modelling Emergence and Maximun Canopy","text":"","code":"mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(195, 40), add_zero = TRUE ) mod_1 #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 390.5 1004.2 1618.0 1618.0 2231.8 2845.5 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 40 34.8 53.7 72.5 2846 4623 #> 195 38.7 60.0 91.7 390 5377 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 0.8836 secs 100% 547 (id) plot(mod_1, id = c(195, 40)) kable(mod_1$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"providing-different-initial-values","dir":"Articles","previous_headings":"","what":"Providing different initial values","title":"Modelling Emergence and Maximun Canopy","text":"","code":"initials <- data.frame( uid = c(195, 40), t1 = c(40, 60), t2 = c(70, 80), k = c(100, 100) ) kable(initials) mod_2 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), initial_vals = initials, subset = c(195, 40), add_zero = TRUE ) plot(mod_2, id = c(195, 40)) kable(mod_2$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"fixing-some-parameters-of-the-model","dir":"Articles","previous_headings":"","what":"Fixing some parameters of the model","title":"Modelling Emergence and Maximun Canopy","text":"","code":"fixed_params <- data.frame(uid = c(195, 40), k = c(100, 100)) kable(fixed_params) mod_3 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE ) plot(mod_3, id = c(195, 40)) kable(mod_3$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"correcting-maximun-value","dir":"Articles","previous_headings":"","what":"Correcting Maximun value","title":"Modelling Emergence and Maximun Canopy","text":"","code":"mod_4 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE, max_as_last = TRUE ) plot(mod_4, id = c(195, 40)) kable(mod_4$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/canopy-model.html","id":"comparing-models","dir":"Articles","previous_headings":"","what":"Comparing Models","title":"Modelling Emergence and Maximun Canopy","text":"","code":"rbind.data.frame( mutate(mod_1$param, mod = \"1\"), mutate(mod_2$param, mod = \"2\"), mutate(mod_3$param, mod = \"3\"), mutate(mod_4$param, mod = \"4\") ) |> filter(uid %in% 40) |> kable()"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"loading-libraries","dir":"Articles","previous_headings":"","what":"Loading libraries","title":"Modelling Plant Height","text":"","code":"library(flexFitR) library(dplyr) library(kableExtra) library(ggpubr) library(purrr)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"exploring-data-explorer","dir":"Articles","previous_headings":"","what":"Exploring data explorer()","title":"Modelling Plant Height","text":"","code":"data(dt_chips) results <- explorer(dt_chips, x = DAP, y = c(PH, Canopy), id = Plot) names(results) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\""},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"data-exploration","dir":"Articles","previous_headings":"","what":"Data exploration","title":"Modelling Plant Height","text":"","code":"p1 <- plot(results, type = \"evolution\", return_gg = TRUE) p2 <- plot(results, type = \"x_by_var\", return_gg = TRUE) ggarrange(p1, p2, nrow = 2)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"estimating-days-to-emergence","dir":"Articles","previous_headings":"","what":"Estimating days to emergence","title":"Modelling Plant Height","text":"\\[\\begin{equation} f(t; t_1, t_2, k) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t > t_2 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"fitting-models-for-canopy","dir":"Articles","previous_headings":"","what":"Fitting models for canopy","title":"Modelling Plant Height","text":"","code":"fixed_params <- results |> pluck(\"dt_long\") |> filter(var %in% \"Canopy\" & uid %in% c(195, 40)) |> group_by(uid) |> summarise(k = max(y), .groups = \"drop\") mod_1 <- dt_chips |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE, max_as_last = TRUE ) plot(mod_1, id = c(195, 40)) kable(mod_1$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"target-function-for-plant-height","dir":"Articles","previous_headings":"","what":"Target function for plant height","title":"Modelling Plant Height","text":"fn_exp2_exp() \\[\\begin{equation} f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)^2} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\left(e^{\\alpha \\cdot (t_2 - t_1)^2} - 1\\right) \\cdot e^{\\beta \\cdot (t - t_2)} & \\text{} t > t_2 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"fixing-parameters-and-providing-initial-values","dir":"Articles","previous_headings":"","what":"Fixing parameters and providing initial values","title":"Modelling Plant Height","text":"","code":"fixed_params <- mod_1 |> pluck(\"param\") |> select(uid, t1) kable(fixed_params) initials <- mod_1 |> pluck(\"param\") |> select(uid, t1, t2) |> mutate(alpha = 1 / 600, beta = -1 / 30) kable(initials)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/height-model.html","id":"fitting-models-for-plant-height","dir":"Articles","previous_headings":"","what":"Fitting models for plant height","title":"Modelling Plant Height","text":"Using t1 previous model fixed parameter using t2 initial parameter per plot.","code":"mod_2 <- dt_chips |> modeler( x = DAP, y = PH, grp = Plot, fn = \"fn_exp2_exp\", initial_vals = initials, fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE ) plot(mod_2, id = c(195, 40)) kable(mod_2$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"getting-started","dir":"Articles","previous_headings":"","what":"Getting started","title":"How to start","text":"basic idea vignette illustrate users use flexFitR package. ’ll start basic example: simple linear regression. Although example primary focus package, serve demonstrate use.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"simple-linear-regression","dir":"Articles","previous_headings":"","what":"1. Simple linear regression","title":"How to start","text":"example, ’ll work small dataset consisting 6 observations, X independent variable Y dependent variable. First, define objective function. case, function fn_lm represent linear regression, b intercept m slope regression. plot_fn function, integrated package, allows us plot function parameters provided. useful visualizing shape function fitting model data. fit model, use modeler function. function, pass x independent variable, y dependent variable, vector parameters assign initial values coefficient b coefficient m. model fitted, can examine output, extract estimated parameters, make plots, predict new x values. order get coefficients variance-covariance matrix make use coef vcov function, takes model object argument. Finally, can make predictions using predict function, takes fitted model object X value want make prediction. can compare lm function R, give results similar obtained package.","code":"library(flexFitR) library(dplyr) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) plot(explorer(dt, X, Y), type = \"xy\") fn_lm <- function(x, b, m) { y <- b + m * x return(y) } plot_fn(fn = \"fn_lm\", params = c(b = 10, m = 5)) mod <- dt |> modeler( x = X, y = Y, fn = \"fn_lm\", parameters = c(b = -5, m = 10) ) mod #> #> Call: #> Y ~ fn_lm(x, b, m) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -12.5905 -6.0762 -0.3476 0.0000 6.1952 12.8952 #> #> Optimization Results `head()`: #> uid b m sse auc #> 1 -15.5 19.5 449 258 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4027 secs 100% 259 (id) plot(mod) coef(mod) #> # A tibble: 2 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 b -15.5 9.86 -1.57 0.192 #> 2 1 m 19.5 2.53 7.71 0.00152 vcov(mod) #> $`1` #> b m #> b 97.21937 -22.435238 #> m -22.43524 6.410068 predict(mod, x = 4.5) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 1 4.5 72.3 5.01"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"comparison-with-lm","dir":"Articles","previous_headings":"1. Simple linear regression","what":"Comparison with lm","title":"How to start","text":"previous example fairly simple, can consider complex scenario need fit just one function, hundreds functions several groups. can achieved using group_by argument modeler function. Additionally, can parallelize processes setting parallel argument TRUE defining number cores use. ’s important note depending functions defined user, parameters may need constrained, required greater less zero. cases, certain parameters might need fixed known values. complex situations, many curves fit working complex functions—whether non linear regressions specific parameter constraints cases parameters fixed group—modeler offers extensive flexibility.","code":"mo <- lm(Y ~ X, data = dt) mo #> #> Call: #> lm(formula = Y ~ X, data = dt) #> #> Coefficients: #> (Intercept) X #> -15.47 19.51 summary(mo)$coefficients #> Estimate Std. Error t value Pr(>|t|) #> (Intercept) -15.46667 9.859988 -1.568629 0.191812151 #> X 19.51429 2.531811 7.707639 0.001524882 vcov(mo) #> (Intercept) X #> (Intercept) 97.21937 -22.435238 #> X -22.43524 6.410068 predict(mo, newdata = data.frame(X = 4.5), se.fit = TRUE) #> $fit #> 1 #> 72.34762 #> #> $se.fit #> [1] 5.010599 #> #> $df #> [1] 4 #> #> $residual.scale #> [1] 10.59133"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"piece-wise-regression","dir":"Articles","previous_headings":"","what":"2. Piece-wise regression","title":"How to start","text":"following example, although still simple, represents slightly complex function greater number parameters. case, piece-wise regression, parameterized t1, t2, k, defined following expression: fitting model, let’s take look example dataset. can make plot piecewise function fit model using modeler function. fitting model, can examine results, plot fitted curve, extract coefficients associated p-values, obtain variance-covariance matrix, make predictions unknown values x. Finally, illustrate provide different initial values function dealing multiple groups, also show fix parameters objective function.","code":"fun <- function(t, t1 = 45, t2 = 80, k = 0.9) { if (t < t1) { y <- 0 } else if (t >= t1 && t <= t2) { y <- k / (t2 - t1) * (t - t1) } else { y <- k } return(y) } dt <- data.frame( time = c(0, 29, 36, 42, 56, 76, 92, 100, 108), variable = c(0, 0, 0.67, 15.11, 77.38, 99.81, 99.81, 99.81, 99.81) ) plot(explorer(dt, time, variable), type = \"xy\") plot_fn(fn = \"fun\", params = c(t1 = 25, t2 = 70, k = 90)) mod_1 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90) ) mod_1 #> #> Call: #> variable ~ fun(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.00000 0.00000 0.00000 0.07444 0.00000 0.67000 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61 99.8 0.449 5807 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4067 secs 100% 511 (id) plot(mod_1) # Coefficients coef(mod_1) #> # A tibble: 3 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 t1 38.6 0.0779 496. 4.54e-15 #> 2 1 t2 61.0 0.0918 665. 7.82e-16 #> 3 1 k 99.8 0.137 730. 4.47e-16 # Variance-Covariance Matrix vcov(mod_1) #> $`1` #> t1 t2 k #> t1 6.061705e-03 -0.002940001 1.877072e-07 #> t2 -2.940001e-03 0.008431400 4.204939e-03 #> k 1.877072e-07 0.004204939 1.870426e-02 # Making predictions predict(mod_1, x = 45) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 1 45 28.5 0.223"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"providing-initial-values","dir":"Articles","previous_headings":"2. Piece-wise regression","what":"Providing Initial values","title":"How to start","text":"example, don’t grouping variable. However, default, function assigns unique identifier (uid) dataset. , need specify uid = 1 initial values fixed parameters. one group, need modify parameters argument accordingly. approach primarily illustrative purposes.","code":"init <- data.frame(uid = 1, t1 = 20, t2 = 30, k = 0.8) mod_2 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90), initial_vals = init ) mod_2 #> #> Call: #> variable ~ fun(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.00000 0.00000 0.00000 0.07444 0.00000 0.67000 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61 99.8 0.449 5807 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4176 secs 100% 567 (id) coef(mod_2) #> # A tibble: 3 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 t1 38.6 0.0779 496. 4.54e-15 #> 2 1 t2 61.0 0.0918 665. 7.82e-16 #> 3 1 k 99.8 0.137 730. 4.47e-16"},{"path":"https://apariciojohan.github.io/flexFitR/articles/how_to_start.html","id":"fixing-parameters","dir":"Articles","previous_headings":"2. Piece-wise regression","what":"Fixing parameters","title":"How to start","text":"vignette provided basic introduction using flexFitR package, starting simple examples linear regression piecewise regression. goal demonstrate fundamental features flexibility package. However, complex situations can arise working high-throughput phenotypic (HTP) data, involve multiple groups, parameter constraints, advanced modeling scenarios. complex situations illustrated vignettes, use real HTP data showcase full capabilities flexFitR package.","code":"fix <- data.frame(uid = 1, k = 98) mod_3 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90), fixed_params = fix ) mod_3 #> #> Call: #> variable ~ fun(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.0000 0.0000 0.6700 0.8789 1.8100 1.8100 #> #> Optimization Results `head()`: #> uid t1 t2 sse k auc #> 1 38.6 60.6 13.6 98 5721 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3468 secs 100% 321 (id) coef(mod_3) #> # A tibble: 2 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 1 t1 38.6 0.396 97.5 3.15e-12 #> 2 1 t2 60.6 0.429 141. 2.34e-13 plot(mod_3) rbind(metrics(mod_1), metrics(mod_2), metrics(mod_3)) #> # A tibble: 3 × 8 #> uid var SSE MAE MSE RMSE r_squared n #> #> 1 1 variable 0.449 0.0744 0.0499 0.223 1.00 9 #> 2 1 variable 0.449 0.0744 0.0499 0.223 1.00 9 #> 3 1 variable 13.6 0.879 1.51 1.23 0.999 9"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"loading-libraries","dir":"Articles","previous_headings":"","what":"Loading libraries","title":"Modelling Maturity","text":"","code":"library(flexFitR) library(dplyr) library(kableExtra) library(ggpubr) library(purrr)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"exploring-data-explorer","dir":"Articles","previous_headings":"","what":"Exploring data explorer()","title":"Modelling Maturity","text":"","code":"data(dt_potato) results <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) names(results) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\""},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"data-exploration","dir":"Articles","previous_headings":"","what":"Data exploration","title":"Modelling Maturity","text":"","code":"p1 <- plot(results, type = \"evolution\", return_gg = TRUE) p2 <- plot(results, type = \"x_by_var\", return_gg = TRUE) ggarrange(p1, p2, nrow = 2)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"target-function-for-maturity","dir":"Articles","previous_headings":"","what":"Target function for maturity","title":"Modelling Maturity","text":"fn_lin_pl_lin() \\[\\begin{equation} f(t; t_1, t_2, t_3, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq t_3 \\\\ k + \\beta \\cdot (t - t_3) & \\text{} t > t_3 \\end{cases} \\end{equation}\\]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"fitting-models-for-maturity","dir":"Articles","previous_headings":"","what":"Fitting models for maturity","title":"Modelling Maturity","text":"","code":"mod_1 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", parameters = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), subset = c(195, 40), add_zero = TRUE ) plot(mod_1, id = c(195, 40)) kable(mod_1$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"providing-initial-parameters-from-the-canopy-model","dir":"Articles","previous_headings":"","what":"Providing initial parameters from the canopy model","title":"Modelling Maturity","text":"","code":"fixed_params <- results |> pluck(\"dt_long\") |> filter(var %in% \"Canopy\" & uid %in% c(195, 40)) |> group_by(uid) |> summarise(k = max(y), .groups = \"drop\") mod_2 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), fixed_params = fixed_params, subset = c(195, 40), add_zero = TRUE, max_as_last = TRUE ) plot(mod_2, id = c(195, 40)) kable(mod_2$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"passing-initial-values","dir":"Articles","previous_headings":"","what":"Passing initial values","title":"Modelling Maturity","text":"","code":"initials <- mod_2 |> pluck(\"param\") |> select(uid, t1, t2) |> mutate(t3 = 100, k = 0.32, beta = -0.01) kable(initials) mod_3 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", initial_vals = initials, subset = c(195, 40), add_zero = TRUE ) plot(mod_3, id = c(195, 40)) kable(mod_3$param)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/maturity-model.html","id":"adding-constrains-to-the-optimization","dir":"Articles","previous_headings":"","what":"Adding constrains to the optimization","title":"Modelling Maturity","text":"","code":"mod_4 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin2\", parameters = c(t1 = 38.7, t2 = 62, dt = 28, k = 0.32, beta = -0.01), lower = c(-Inf, -Inf, 0, -Inf, -Inf), upper = c(Inf, Inf, Inf, Inf, 0), method = c(\"nlminb\", \"L-BFGS-B\"), subset = c(195, 40), add_zero = TRUE ) plot(mod_4, id = c(195, 40)) kable(mod_4$param)"},{"path":"https://apariciojohan.github.io/flexFitR/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Johan Aparicio. Author, maintainer. Jeffrey Endelman. Author. University Wisconsin Madison. Copyright holder.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Aparicio J, Endelman J (2024). flexFitR: Flexible Non-Linear Least Square Modelling. R package version 0.1.0, https://github.com/AparicioJohan/flexFitR, https://apariciojohan.github.io/flexFitR/.","code":"@Manual{, title = {flexFitR: Flexible Non-Linear Least Square Modelling}, author = {Johan Aparicio and Jeffrey Endelman}, year = {2024}, note = {R package version 0.1.0, https://github.com/AparicioJohan/flexFitR}, url = {https://apariciojohan.github.io/flexFitR/}, }"},{"path":[]},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement johanstevenapa@gmail.com. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired [Mozilla’s code conduct enforcement ladder][https://github.com/mozilla/inclusion]. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"flexfitr-","dir":"","previous_headings":"","what":"Flexible Non-Linear Least Square Modelling","title":"Flexible Non-Linear Least Square Modelling","text":"flexFitR R package designed efficient modeling analysis large complex datasets. offers powerful tools parameter estimation, model fitting, visualization, leveraging optimx package optimization future package parallel processing.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Flexible Non-Linear Least Square Modelling","text":"can install development version flexFitR GitHub :","code":"# install.packages(\"devtools\") devtools::install_github(\"AparicioJohan/flexFitR\")"},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"features","dir":"","previous_headings":"","what":"Features","title":"Flexible Non-Linear Least Square Modelling","text":"Parameter Estimation: Utilizes optimx derivative-free algorithms solve estimate parameters given function. Parallelization: Implements parallel processing using future package, enabling efficient fitting hundreds curves simultaneously. Visualization Tools: Provides variety plots visualize model fits, correlations, predictions, . Statistical Rigor: Offers standard errors p-values coefficients, supporting robust conclusions interpretations. Prediction: Facilitates prediction non-observed data points. Flexibility: Allows users fix certain parameters model specify different initial values per grouping factor. Custom Modeling Functions: Equipped built-modeling functions common analysis tasks, also permitting users supply custom functions.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"example","dir":"","previous_headings":"","what":"Example","title":"Flexible Non-Linear Least Square Modelling","text":"’s simple example get started flexFitR. example demonstrates fitting piecewise regression model:","code":"library(flexFitR) dt <- data.frame( time = c(0, 29, 36, 42, 56, 76, 92, 100, 108), variable = c(0, 0, 0.67, 15.11, 77.38, 99.81, 99.81, 99.81, 99.81) ) plot(explorer(dt, time, variable), type = \"xy\") fun <- function(t, t1 = 45, t2 = 80, k = 0.9) { if (t < t1) { y <- 0 } else if (t >= t1 && t <= t2) { y <- k / (t2 - t1) * (t - t1) } else { y <- k } return(y) } # Fitting piecewise regression mod_1 <- dt |> modeler( x = time, y = variable, fn = \"fun\", parameters = c(t1 = 45, t2 = 80, k = 90) ) print(mod_1) Call: variable ~ fun(x, t1, t2, k) Residuals: Min. 1st Qu. Median Mean 3rd Qu. Max. 0.00000 0.00000 0.00000 0.07444 0.00000 0.67000 Optimization Results `head()`: uid t1 t2 k sse auc 1 38.6 61 99.8 0.449 5807 Metrics: Groups Timing Convergence Iterations 1 0.3475 secs 100% 511 (id) # Auto plot plot(mod_1) # Coefficients coef(mod_1) # A tibble: 3 × 6 uid coefficient solution std.error `t value` `Pr(>|t|)` 1 1 t1 38.6 0.0779 496. 4.54e-15 2 1 t2 61.0 0.0918 665. 7.82e-16 3 1 k 99.8 0.137 730. 4.47e-16 # Variance-Covariance Matrix vcov(mod_1) $`1` t1 t2 k t1 6.061705e-03 -0.002940001 1.877072e-07 t2 -2.940001e-03 0.008431400 4.204939e-03 k 1.877072e-07 0.004204939 1.870426e-02 # Making predictions predict(mod_1, x = 45) # A tibble: 1 × 4 uid x_new predicted.value std.error 1 1 45 28.5 0.223"},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"Flexible Non-Linear Least Square Modelling","text":"detailed documentation examples, visit flexFitR Vignette 1: start Vignette 2: Modeling Canopy Vignette 3: Modeling Plant Height Vignette 4: Modeling VIs","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"contributing","dir":"","previous_headings":"","what":"Contributing","title":"Flexible Non-Linear Least Square Modelling","text":"Contributions flexFitR welcome! ’d like contribute, please fork repository submit pull request. significant changes, please open issue first discuss ideas.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Flexible Non-Linear Least Square Modelling","text":"Please note flexFitR project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Flexible Non-Linear Least Square Modelling","text":"flexFitR licensed MIT License. See LICENSE file details.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2024 flexFitR authors Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"anova objects class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"","code":"# S3 method for class 'modeler' anova(reduced_model, full_model = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"reduced_model object class `modeler` reduced number parameters. full_model object class `modeler` number parameters. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"tibble columns giving F test p values.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/anova.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extra sum-of-squares F-test for objects of class modeler — anova.modeler","text":"","code":"library(flexFitR) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) mo_1 <- modeler(dt, X, Y, fn = \"fn_lin\", param = c(m = 10, b = -5)) #> Loading required package: foreach #> Loading required package: future mo_2 <- modeler(dt, X, Y, fn = \"fn_quad\", param = c(a = 1, b = 10, c = 5)) plot(mo_2) anova(mo_1, mo_2) #> # A tibble: 1 × 9 #> uid RSS_reduced RSS_full n df1 df2 F `Pr(>F)` . #> #> 1 1 449. 385. 6 1 3 0.494 0.533 ns"},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Coefficients of an object of class modeler — coef.modeler","title":"Coefficients of an object of class modeler — coef.modeler","text":"Coefficients object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Coefficients of an object of class modeler — coef.modeler","text":"","code":"# S3 method for class 'modeler' coef(x, id = NULL, metadata = FALSE, df = FALSE, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Coefficients of an object of class modeler — coef.modeler","text":"x object inheriting class modeler resulting executing function modeler() id unique identifier filter . NULL default. metadata TRUE FALSE. Whether bring metadata calculating coefficients. df TRUE FALSE. Whether return degrees freedom calculating coefficients. FALSE default. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Coefficients of an object of class modeler — coef.modeler","text":"data.frame object coefficients standard errors.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Coefficients of an object of class modeler — coef.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/coef.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Coefficients of an object of class modeler — coef.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 2, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 2.674719 4.010777 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 2 35.2 60.7 100.0 7.0145 6004 #> 15 38.5 69.4 99.8 1.0071 5396 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.2396 secs 100% 414 (id) #> coef(mod_1, id = 2) #> # A tibble: 3 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` #> #> 1 2 t1 35.2 0.239 147. 6.57e-12 #> 2 2 t2 60.7 0.371 164. 3.53e-12 #> 3 2 k 100. 0.541 185. 1.68e-12"},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Confidence Intervals for an object of class modeler — confint.modeler","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"confint object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"","code":"# S3 method for class 'modeler' confint(x, parm = NULL, level = 0.95, id = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"x object inheriting class modeler resulting executing function modeler() parm specification parameters given confidence intervals, must vector names. missing, parameters considered. level confidence level required. Default 0.95. id unique identifier filter . NULL default. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"tibble columns giving lower upper confidence limits parameter.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/confint.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Confidence Intervals for an object of class modeler — confint.modeler","text":"","code":"library(flexFitR) data(dt_potato) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 35, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 0.968957 1.452134 1.897212 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 15 38.5 69.4 99.8 1.0071 5396 #> 35 52.2 61.4 100.0 1.8972 5117 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.8732 secs 100% 410 (id) #> confint(mod_1) #> # A tibble: 9 × 6 #> uid coefficient solution std.error ci_lower ci_upper #> #> 1 15 t1 38.5 0.162 38.1 38.8 #> 2 15 t2 69.4 0.283 68.7 70.1 #> 3 15 k 99.8 0.205 99.3 100. #> 4 35 t1 52.2 2.00 47.3 57.1 #> 5 35 t2 61.4 2.87 54.4 68.5 #> 6 35 k 100. 0.281 99.3 101. #> 7 45 t1 38.3 0.00704 38.3 38.3 #> 8 45 t2 64.5 0.00972 64.4 64.5 #> 9 45 k 100. 0.0104 100. 100."},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":null,"dir":"Reference","previous_headings":"","what":"General-purpose optimization — .fitter_curve","title":"General-purpose optimization — .fitter_curve","text":"function .fitter_curve used internally find parameters requested.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"General-purpose optimization — .fitter_curve","text":"","code":".fitter_curve(data, id, fn, method, lower, upper, control, .keep)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"General-purpose optimization — .fitter_curve","text":"data nested data.frame columns . id optional vector IDs filter data. Default NULL, meaning ids used. fn string specifying name function used curve fitting. Default \"fn_piwise\". method character vector specifying optimization methods used. See optimx package available methods. Default c(\"subplex\", \"pracmanm\", \"anms\"). lower Numeric vector specifying lower bounds parameters. Default -Inf parameters. upper Numeric vector specifying upper bounds parameters. Default Inf parameters. control list control parameters passed optimization function. example, list(maxit = 500).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dot-fitter_curve.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"General-purpose optimization — .fitter_curve","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", parameters = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), subset = 195, add_zero = TRUE )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":null,"dir":"Reference","previous_headings":"","what":"Drone Data in Potato 2022 — dt_chips","title":"Drone Data in Potato 2022 — dt_chips","text":"Vegetative indices biomass related traits potato trial arranged p-rep design.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drone Data in Potato 2022 — dt_chips","text":"","code":"dt_chips"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Drone Data in Potato 2022 — dt_chips","text":"tibble 1568 rows 17 variables: Trial chr trial name DAP dbl denoting Days planting Plot dbl denoting unique plot id Row dbl denoting row coordinate Range dbl denoting range coordinate Gen chr denoting genotype id Yield dbl Total Yield measured end season VineMaturity dbl VineMaturity measure season Red - Canopy dbl denoting drone-derived traits","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_chips.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Drone Data in Potato 2022 — dt_chips","text":"UW - Potato Breeding Program","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":null,"dir":"Reference","previous_headings":"","what":"Drone Data in Potato 2020 — dt_potato","title":"Drone Data in Potato 2020 — dt_potato","text":"Vegetative indices biomass related traits potato trial arranged p-rep design.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Drone Data in Potato 2020 — dt_potato","text":"","code":"dt_potato"},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Drone Data in Potato 2020 — dt_potato","text":"tibble 1372 rows 17 variables: Trial chr trial name DAP dbl denoting Days planting Plot dbl denoting unique plot id Row dbl denoting row coordinate Range dbl denoting range coordinate Gen chr denoting genotype id Yield dbl Total Yield measured end season VineMaturity dbl VineMaturity measure season Red - Canopy dbl denoting drone-derived traits","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/dt_potato.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Drone Data in Potato 2020 — dt_potato","text":"UW - Potato Breeding Program","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":null,"dir":"Reference","previous_headings":"","what":"Explore Data — explorer","title":"Explore Data — explorer","text":"Explores data data frame wide format.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Explore Data — explorer","text":"","code":"explorer(data, x, y, id, metadata)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Explore Data — explorer","text":"data data.frame wide format containing data. x name column `data` contains x points. y names columns `data` contain variables analyzed. id names columns `data` contains grouping variable. metadata names columns `data` keep across analysis.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Explore Data — explorer","text":"object class explorer, list containing following elements: summ_vars data.frame containing summary statistics trait x point, including minimum, mean, median, maximum, standard deviation, coefficient variation, number non-missing values, percentage missing values, percentage negative values. summ_metadata data.frame summarizing metadata. locals_min_max data.frame containing local minima maxima mean y values x. dt_long data.frame long format, columns uid, metadata, var, x, y metadata character vector names variables keep across.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Explore Data — explorer","text":"function helps explore dataset analyzed modeler().","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/explorer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Explore Data — explorer","text":"","code":"library(flexFitR) data(dt_potato) results <- dt_potato |> explorer( x = DAP, y = c(Canopy, PH), id = Plot, metadata = c(Gen, Row, Range) ) names(results) #> [1] \"summ_vars\" \"summ_metadata\" \"locals_min_max\" \"dt_long\" #> [5] \"metadata\" head(results$summ_vars) #> # A tibble: 6 × 12 #> var x Min Mean Median Max SD CV n miss `miss%` #> #> 1 Canopy 29 0 0 0 0 0 NaN 196 0 0 #> 2 Canopy 36 0 2.95 1.84 15.1 3.22 1.09 196 0 0 #> 3 Canopy 42 0.763 23.4 22.9 46.2 9.31 0.398 196 0 0 #> 4 Canopy 56 33.4 75.8 75.2 98.9 12.4 0.164 196 0 0 #> 5 Canopy 76 89.1 99.7 100 100 1.04 0.0104 196 0 0 #> 6 Canopy 92 62.5 97.0 98.4 100. 4.36 0.0449 196 0 0 #> # ℹ 1 more variable: `neg%` plot(results, label_size = 4, signif = TRUE, n_row = 2) # New data format head(results$dt_long) #> # A tibble: 6 × 7 #> uid Gen Row Range var x y #> #> 1 1 W17037-24 1 1 Canopy 29 0 #> 2 1 W17037-24 1 1 PH 29 NA #> 3 1 W17037-24 1 1 Canopy 36 0.67 #> 4 1 W17037-24 1 1 PH 36 0.0154 #> 5 1 W17037-24 1 1 Canopy 42 15.1 #> 6 1 W17037-24 1 1 PH 42 0.0173"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Exponential Function 1 — fn_exp1_exp","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"Computes value based exponential growth curve exponential decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"","code":"fn_exp1_exp(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter first exponential term. Must greater 0. beta Numeric. parameter second exponential term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"numeric value based double exponential model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)) - 1. t greater t2, function returns (exp(alpha * (t2 - t1)) - 1) * exp(beta * (t - t2)).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\left(e^{\\alpha \\cdot (t_2 - t_1)} - 1\\right) \\cdot e^{\\beta \\cdot (t - t_2)} & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_exp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Exponential Function 1 — fn_exp1_exp","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp1_exp\", params = c(t1 = 35, t2 = 55, alpha = 1 / 20, beta = -1 / 30), interval = c(0, 108), n_points = 2000, auc_label_size = 3, y_auc_label = 0.2 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Linear Function 1 — fn_exp1_lin","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"Computes value based exponential growth curve linear decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"","code":"fn_exp1_lin(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter exponential term. Must greater 0. beta Numeric. parameter linear term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"numeric value based exponential linear model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)) - 1. t greater t2, function returns beta * (t - t2) + (exp(alpha * (t2 - t1)) - 1).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\beta \\cdot (t - t_2) + \\left(e^{\\alpha \\cdot (t_2 - t_1)} - 1\\right) & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp1_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Linear Function 1 — fn_exp1_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp1_lin\", params = c(t1 = 35, t2 = 55, alpha = 1 / 20, beta = -1 / 40), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Exponential Function 2 — fn_exp2_exp","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"Computes value based exponential growth curve exponential decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"","code":"fn_exp2_exp(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter first exponential term. Must greater 0. beta Numeric. parameter second exponential term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"numeric value based double exponential model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)^2) - 1. t greater t2, function returns (exp(alpha * (t2 - t1)^2) - 1) * exp(beta * (t - t2)).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)^2} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\left(e^{\\alpha \\cdot (t_2 - t_1)^2} - 1\\right) \\cdot e^{\\beta \\cdot (t - t_2)} & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_exp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Exponential Function 2 — fn_exp2_exp","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp2_exp\", params = c(t1 = 35, t2 = 55, alpha = 1 / 600, beta = -1 / 30), interval = c(0, 108), n_points = 2000, auc_label_size = 3, y_auc_label = 0.15 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Linear Function 2 — fn_exp2_lin","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"Computes value based exponential growth curve linear decay model time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"","code":"fn_exp2_lin(t, t1, t2, alpha, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"t Numeric. time value. t1 Numeric. lower threshold time. Assumed known. t2 Numeric. upper threshold time. alpha Numeric. parameter exponential term. Must greater 0. beta Numeric. parameter linear term. Must less 0.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"numeric value based exponential linear model. t less t1, function returns 0. t t1 t2 (inclusive), function returns exp(alpha * (t - t1)^2) - 1. t greater t2, function returns beta * (t - t2) + (exp(alpha * (t2 - t1)^2) - 1).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"$$ f(t; t_1, t_2, \\alpha, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ e^{\\alpha \\cdot (t - t_1)^2} - 1 & \\text{} t_1 \\leq t \\leq t_2 \\\\ \\beta \\cdot (t - t_2) + \\left(e^{\\alpha \\cdot (t_2 - t_1)^2} - 1\\right) & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_exp2_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Linear Function 2 — fn_exp2_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_exp2_lin\", params = c(t1 = 35, t2 = 55, alpha = 1 / 600, beta = -1 / 80), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Function — fn_lin","title":"Linear Function — fn_lin","text":"Computes value based linear function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Function — fn_lin","text":"","code":"fn_lin(t, m, b)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Function — fn_lin","text":"t Numeric value. m Numeric value slope coefficient. b Numeric value intercept coefficient.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Function — fn_lin","text":"numeric value based linear function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Function — fn_lin","text":"$$ f(t; m, b) = m \\cdot t + b $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Function — fn_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin\", params = c(m = 2, b = 10), interval = c(0, 108), n_points = 2000 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Plateau Linear — fn_lin_pl_lin","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"Linear Plateau Linear","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"","code":"fn_lin_pl_lin(t, t1, t2, t3, k, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"t Numeric. time value. t1 Numeric. lower threshold time. Default 45. t2 Numeric. upper threshold time plateau. Default 80. t3 Numeric. lower threshold time plateau. Default 45. k Numeric. maximum value function. Default 0.9. beta Numeric. Slope linear decay.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"numeric value based linear plateau linear model.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"$$ f(t; t_1, t_2, t_3, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq t_3 \\\\ k + \\beta \\cdot (t - t_3) & \\text{} t > t_3 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Plateau Linear — fn_lin_pl_lin","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin_pl_lin\", params = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"Linear Plateau Linear Constrains","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"","code":"fn_lin_pl_lin2(t, t1, t2, dt, k, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"t Numeric. time value. t1 Numeric. lower threshold time. t2 Numeric. upper threshold time plateau. dt Numeric. dt = t3 - t2. k Numeric. maximum value function. beta Numeric. Slope linear decay.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"numeric value based linear plateau linear model.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"$$ f(t; t_1, t_2, dt, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq (t_2 + dt) \\\\ k + \\beta \\cdot (t - (t_2 + dt)) & \\text{} t > (t_2 + dt) \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin2.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Plateau Linear with Constrains — fn_lin_pl_lin2","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin_pl_lin2\", params = c(t1 = 38.7, t2 = 62, dt = 28, k = 0.32, beta = -0.01), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"Linear Plateau Linear Constrains","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"","code":"fn_lin_pl_lin3(t, t1, t2, t3, k, beta)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"t Numeric. time value. t1 Numeric. lower threshold time. Default 45. t2 Numeric. upper threshold time plateau. Default 80. t3 Numeric. lower threshold time plateau. Default 45. k Numeric. maximum value function. Default 0.9. beta Numeric. Slope linear decay.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"numeric value based linear plateau linear model.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"$$ f(t; t_1, t_2, t_3, k, \\beta) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t_2 \\leq t \\leq t_3 \\\\ k + \\beta \\cdot (t - t_3) & \\text{} t > t_3 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_lin_pl_lin3.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear Plateau Linear Constrains — fn_lin_pl_lin3","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_lin_pl_lin3\", params = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":null,"dir":"Reference","previous_headings":"","what":"Piecewise Linear Regression — fn_piwise","title":"Piecewise Linear Regression — fn_piwise","text":"Computes value based linear growth curve reaching plateau time.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Piecewise Linear Regression — fn_piwise","text":"","code":"fn_piwise(t, t1 = 45, t2 = 80, k = 0.9)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Piecewise Linear Regression — fn_piwise","text":"t Numeric. time value. t1 Numeric. lower threshold time. Default 45. t2 Numeric. upper threshold time. Default 80. k Numeric. maximum value function. Default 0.9. Assumed known.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Piecewise Linear Regression — fn_piwise","text":"numeric value based threshold model. t less t1, function returns 0. t t1 t2 (inclusive), function returns value 0 k linear trend. t greater t2, function returns k.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Piecewise Linear Regression — fn_piwise","text":"$$ f(t; t_1, t_2, k) = \\begin{cases} 0 & \\text{} t < t_1 \\\\ \\dfrac{k}{t_2 - t_1} \\cdot (t - t_1) & \\text{} t_1 \\leq t \\leq t_2 \\\\ k & \\text{} t > t_2 \\end{cases} $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_piwise.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Piecewise Linear Regression — fn_piwise","text":"","code":"library(flexFitR) plot_fn( fn = \"fn_piwise\", params = c(t1 = 34.9, t2 = 61.8, k = 100), interval = c(0, 108), n_points = 2000, auc_label_size = 3 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":null,"dir":"Reference","previous_headings":"","what":"Quadratic Function — fn_quad","title":"Quadratic Function — fn_quad","text":"Computes value based quadratic function..","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quadratic Function — fn_quad","text":"","code":"fn_quad(t, a, b, c)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quadratic Function — fn_quad","text":"t Numeric value. Numeric value coefficient . b Numeric value coefficient b. c Numeric value coefficient c.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Quadratic Function — fn_quad","text":"numeric value based linear function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Quadratic Function — fn_quad","text":"$$ f(t; , b, c) = \\cdot t^2 + b \\cdot t + c $$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/fn_quad.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Quadratic Function — fn_quad","text":"","code":"library(flexFitR) plot_fn(fn = \"fn_quad\", params = c(a = 1, b = 10, c = 5))"},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":null,"dir":"Reference","previous_headings":"","what":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"Generic function calculating Akaike's ‘Information Criterion’ fitted model object class modeler.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"","code":"# S3 method for class 'modeler' AIC(object, ..., k = 2) # S3 method for class 'modeler' BIC(object, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"object object inheriting class modeler resulting executing function modeler() ... parameters. future improvements. k Numeric, penalty per parameter used; default k = 2 classical AIC.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"tibble columns giving corresponding AIC BIC.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/goodness_of_fit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Akaike's An Information Criterion for an object of class modeler — goodness_of_fit","text":"","code":"library(flexFitR) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) mo_1 <- modeler(dt, X, Y, fn = \"fn_lin\", param = c(m = 10, b = -5)) mo_2 <- modeler(dt, X, Y, fn = \"fn_quad\", param = c(a = 1, b = 10, c = 5)) AIC(mo_1) #> uid logLik df nobs p AIC #> 1 1 -21.45745 3 6 2 48.9149 AIC(mo_2) #> uid logLik df nobs p AIC #> 1 1 -21.00014 4 6 3 50.00028"},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"logLik object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"","code":"# S3 method for class 'modeler' logLik(object, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"object object inheriting class modeler resulting executing function modeler() ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"tibble columns Log-Likelihood fitted models.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/logLik.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extract Log-Likelihood for an object of class modeler — logLik.modeler","text":"","code":"library(flexFitR) dt <- data.frame(X = 1:6, Y = c(12, 16, 44, 50, 95, 100)) mo_1 <- modeler(dt, X, Y, fn = \"fn_lin\", param = c(m = 10, b = -5)) plot(mo_1) logLik(mo_1) #> uid logLik df nobs p #> 1 1 -21.45745 3 6 2"},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":null,"dir":"Reference","previous_headings":"","what":"Metrics for modeler — metrics","title":"Metrics for modeler — metrics","text":"Computes various performance metrics modeler object. function calculates Sum Squared Errors (SSE), Mean Absolute Error (MAE), Mean Squared Error (MSE), Root Mean Squared Error (RMSE), Coefficient Determination (R-squared).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Metrics for modeler — metrics","text":"","code":"metrics(x, by_grp = TRUE)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Metrics for modeler — metrics","text":"x object class `modeler` containing necessary data compute metrics. by_grp Return metrics id? TRUE default.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Metrics for modeler — metrics","text":"data frame containing calculated metrics grouped uid, metadata, variables.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Metrics for modeler — metrics","text":"Sum Squared Errors (SSE): $$SSE = \\sum_{=1}^{n} (y_i - \\hat{y}_i)^2$$Mean Absolute Error (MAE): $$MAE = \\frac{1}{n} \\sum_{=1}^{n} |y_i - \\hat{y}_i|$$Mean Squared Error (MSE): $$MSE = \\frac{1}{n} \\sum_{=1}^{n} (y_i - \\hat{y}_i)^2$$Root Mean Squared Error (RMSE): $$RMSE = \\sqrt{\\frac{1}{n} \\sum_{=1}^{n} (y_i - \\hat{y}_i)^2}$$Coefficient Determination (R-squared): $$R^2 = 1 - \\frac{\\sum_{=1}^{n} (y_i - \\hat{y}_i)^2}{\\sum_{=1}^{n} (y_i - \\bar{y})^2}$$","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/metrics.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Metrics for modeler — metrics","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, PH), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(1:2), add_zero = TRUE, max_as_last = TRUE ) plot(mod_1, id = c(1:2)) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4489 2.0903 3.7317 3.7317 5.3731 7.0145 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61.0 99.8 0.449 5807 #> 2 35.2 60.7 100.0 7.014 6004 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 0.9499 secs 100% 469 (id) #> metrics(mod_1) #> # A tibble: 2 × 8 #> uid var SSE MAE MSE RMSE r_squared n #> #> 1 1 Canopy 0.449 0.0744 0.0499 0.223 1.00 9 #> 2 2 Canopy 7.01 0.468 0.779 0.883 1.00 9"},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Modeler — modeler","title":"Modeler — modeler","text":"General-purpose optimization techniques non-linear least squares problems.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Modeler — modeler","text":"","code":"modeler( data, x, y, grp, keep, fn = \"fn_piwise\", parameters = NULL, lower = -Inf, upper = Inf, initial_vals = NULL, fixed_params = NULL, method = c(\"subplex\", \"pracmanm\", \"anms\"), return_method = FALSE, subset = NULL, add_zero = FALSE, check_negative = FALSE, max_as_last = FALSE, n_points = 1000, max_x = NULL, progress = FALSE, parallel = FALSE, workers = max(1, parallel::detectCores(), na.rm = TRUE), control = list() )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Modeler — modeler","text":"data data.frame wide format. x name column `data` contains x points. y name column `data` contain variable analyzed. Must match var data. grp names columns `data` contains grouping variable. (Optional). keep names columns `data` keep across analysis. fn string specifying name function used curve fitting. Default \"fn_piwise\". parameters named numeric vector specifying initial values parameters optimized. Default NULL. lower Numeric vector specifying lower bounds parameters. Default -Inf parameters. upper Numeric vector specifying upper bounds parameters. Default Inf parameters. initial_vals data frame columns uid, initial parameter values group id. Used providing specific initial values per group id. fixed_params data frame columns uid, fixed parameter values group id. Used fixing certain parameters optimization. method character vector specifying optimization methods used. Check `optimx::checkallsolvers()` available methods. Default c(\"subplex\", \"pracmanm\", \"anms\"). return_method Logical. TRUE, includes optimization method used result. Default FALSE. subset optional vector levels `grp` filter data. Default NULL, meaning groups used. add_zero Logical. TRUE, adds zero value series start. Default FALSE. check_negative Logical. TRUE, converts negative values data zero. Default FALSE. max_as_last Logical. TRUE, appends maximum value reaching maximum. Default FALSE. n_points integer specifying number x points use approximating Area Curve (AUC). Default 1000. max_x Numeric. maximum x value use calculating AUC. Default NULL, uses last x value data. progress Logical. TRUE progress bar displayed. Default FALSE. Try running function: progressr::handlers(\"progress\", \"beepr\"). parallel Logical. TRUE model fit performed parallel. Default FALSE. workers number parallel processes use. `parallel::detectCores()` control list control parameters passed optimization function. example: list(maxit = 500).","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Modeler — modeler","text":"object class modeler, list containing following elements: param data frame containing optimized parameters related information. dt data frame data used fitted values. fn call used calculate AUC. metrics Metrics summary models. max_x Maximum x value used calculating AUC. execution Execution time. response Response variable. keep Metadata keep across. fun Function optimized fit List fitted models.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Modeler — modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) # Example 1 mod_1 <- dt_potato |> modeler( x = DAP, y = GLI_2, grp = Plot, fn = \"fn_lin_pl_lin\", parameters = c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), subset = 195, add_zero = TRUE ) plot(mod_1, id = 195) print(mod_1) #> #> Call: #> GLI_2 ~ fn_lin_pl_lin(x, t1, t2, t3, k, beta) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -0.011076 -0.002262 0.000000 -0.001676 0.000000 0.002262 #> #> Optimization Results `head()`: #> uid t1 t2 t3 k beta sse auc #> 195 39.6 68.3 93.3 0.323 -0.01 0.000149 16.4 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.8306 secs 100% 901 (id) #> # Example 2 mod_2 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = 195, add_zero = TRUE, max_as_last = TRUE ) plot(mod_2, id = 195) print(mod_2) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -1.340e-09 0.000e+00 0.000e+00 -9.481e-11 1.391e-10 1.391e-10 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 195 38.7 62 100 1.88e-18 5765 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.5516 secs 100% 349 (id) #>"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot an object of class explorer — plot.explorer","title":"Plot an object of class explorer — plot.explorer","text":"Creates various plots object class explorer. Depending specified type, function can generate plots show correlations variables x, correlations x values variable, evolution variables x.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot an object of class explorer — plot.explorer","text":"","code":"# S3 method for class 'explorer' plot( x, type = \"var_by_x\", label_size = 4, signif = FALSE, method = \"pearson\", filter_var = NULL, id = NULL, n_row = NULL, n_col = NULL, base_size = 13, return_gg = FALSE, add_avg = FALSE, ... )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot an object of class explorer — plot.explorer","text":"x object inheriting class explorer, resulting executing function explorer(). type Character string number specifying type plot generate. Available options : \"var_by_x\" 1 Plots correlations variables x (default). \"x_by_var\" 2 Plots correlations x points variable (y). \"evolution\" 3 Plot evolution variables (y) x. \"xy\" 4 Scatterplot (x, y) label_size Numeric. Size labels plot. Default 4. works type 1 2. signif Logical. TRUE, adds p-values correlation plot labels. Default FALSE. works type 1 2. method Character string specifying method correlation calculation. Available options \"pearson\" (default), \"spearman\", \"kendall\". works type 1 2. filter_var Character vector specifying variables exclude plot. id Optional unique identifier filter evolution type plot. Default NULL. works type 3. n_row Integer specifying number rows use facet_wrap(). Default NULL. works type 1 2. n_col Integer specifying number columns use facet_wrap(). Default NULL. works type 1 2. base_size Numeric. Base font size plot. Default 13. return_gg Logical. TRUE, returns ggplot object instead printing . Default FALSE. add_avg Logical. TRUE, returns evolution plot average trend across groups. Default FALSE. ... graphical parameters future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot an object of class explorer — plot.explorer","text":"ggplot object invisible data.frame containing correlation table type \"var_by_x\" \"x_by_var\".","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.explorer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot an object of class explorer — plot.explorer","text":"","code":"library(flexFitR) data(dt_potato) dt_potato <- dt_potato results <- explorer(dt_potato, x = DAP, y = c(Canopy, PH), id = Plot) table <- plot(results, label_size = 4, signif = TRUE, n_row = 2) table #> # A tibble: 7 × 7 #> x col row corr p.value n signi #> #> 1 36 Canopy PH 0.46 8.23e-11 176 *** #> 2 42 Canopy PH 0.67 8.55e-27 196 *** #> 3 56 Canopy PH -0.21 3.65e- 3 196 ** #> 4 76 Canopy PH 0.3 1.41e- 5 196 *** #> 5 92 Canopy PH 0.28 5.96e- 5 196 *** #> 6 100 Canopy PH 0.32 6.45e- 6 196 *** #> 7 108 Canopy PH 0.07 3.14e- 1 196 ns plot(results, type = \"x_by_var\", label_size = 4, signif = TRUE)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot an object of class modeler — plot.modeler","title":"Plot an object of class modeler — plot.modeler","text":"Create several plots object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot an object of class modeler — plot.modeler","text":"","code":"# S3 method for class 'modeler' plot(x, id = NULL, type = 1, label_size = 4, base_size = 14, parm = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot an object of class modeler — plot.modeler","text":"x object inheriting class modeler resulting executing function modeler() id avoid many plots one figure. Filter group Id. type Numeric 1, 2, 3. specify type plot. Default 1. label_size Label size. 3 default. base_size Base font size, given pts. parm type equal 2 must vector names parameters. NULL, parameters considered. ... graphical parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot an object of class modeler — plot.modeler","text":"ggplot object.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Plot an object of class modeler — plot.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot an object of class modeler — plot.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) # Example 1 mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(1:3), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.4489 2.3551 4.2612 3.9082 5.6379 7.0145 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61.0 99.8 0.449 5807 #> 2 35.2 60.7 100.0 7.014 6004 #> 3 33.8 59.9 100.0 4.261 6118 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.3991 secs 100% 499.67 (id) #> plot(mod_1, id = 1:2) plot(mod_1, id = 1:3, type = 2, label_size = 10)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot Function — plot_fn","title":"Plot Function — plot_fn","text":"function plots user-defined function specified interval annotates plot calculated Area Curve (AUC) parameter values. aim `plot_fn` allow users play different Starting Values functions fitting models.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot Function — plot_fn","text":"","code":"plot_fn( fn = \"fn_piwise\", params = c(t1 = 34.9, t2 = 61.8, k = 100), interval = c(0, 100), n_points = 1000, auc = FALSE, x_auc_label = NULL, y_auc_label = NULL, auc_label_size = 4, param_label_size = 4, base_size = 12, color = \"red\", label_color = \"grey30\" )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot Function — plot_fn","text":"fn character string representing name function plotted. Default \"fn_piwise\". params named numeric vector parameters passed function. Default c(t1 = 34.9, t2 = 61.8, k = 100). interval numeric vector length 2 specifying interval function plotted. Default c(0, 100). n_points integer specifying number points used plotting. Default 1000. auc Print AUC plot? Default FALSE. x_auc_label numeric value specifying x-coordinate AUC label. Default NULL. y_auc_label numeric value specifying y-coordinate AUC label. Default NULL. auc_label_size numeric value specifying size AUC label text. Default 3. param_label_size numeric value specifying size parameter label text. Default 3. base_size numeric value specifying base size plot's theme. Default 12. color character string specifying color plot lines area fill. Default \"red\". label_color character string specifying color labels. Default \"grey30\".","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot Function — plot_fn","text":"ggplot object representing plot.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/plot_fn.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plot Function — plot_fn","text":"","code":"# Example usage plot_fn( fn = \"fn_piwise\", params = c(t1 = 34.9, t2 = 61.8, k = 100), interval = c(0, 100), n_points = 1000 ) plot_fn( fn = \"fn_lin_pl_lin\", params <- c(t1 = 38.7, t2 = 62, t3 = 90, k = 0.32, beta = -0.01), interval = c(0, 100), n_points = 1000, base_size = 12 )"},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Predict an object of class modeler — predict.modeler","title":"Predict an object of class modeler — predict.modeler","text":"Model predictions object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Predict an object of class modeler — predict.modeler","text":"","code":"# S3 method for class 'modeler' predict(object, x = NULL, id = NULL, metadata = FALSE, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Predict an object of class modeler — predict.modeler","text":"object object inheriting class modeler resulting executing function modeler() x numeric time point make prediction. Can one. id unique identifier filter . NULL default. metadata TRUE FALSE. Whether bring metadata calculating coefficients. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Predict an object of class modeler — predict.modeler","text":"data.frame object predicted values.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Predict an object of class modeler — predict.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/predict.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Predict an object of class modeler — predict.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, GLI_2), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 2, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 2.674719 4.010777 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 2 35.2 60.7 100.0 7.0145 6004 #> 15 38.5 69.4 99.8 1.0071 5396 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.4138 secs 100% 414 (id) #> predict(mod_1, x = 45, id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 38.4 0.622"},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Print an object of class modeler — print.modeler","title":"Print an object of class modeler — print.modeler","text":"Prints information modeler function.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print an object of class modeler — print.modeler","text":"","code":"# S3 method for class 'modeler' print(x, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print an object of class modeler — print.modeler","text":"x object fitted function modeler(). ... Options used tibble package format output. See `tibble::print()` details.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print an object of class modeler — print.modeler","text":"object inheriting class modeler.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print an object of class modeler — print.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/print.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Print an object of class modeler — print.modeler","text":"","code":"library(flexFitR) data(dt_potato) explorer <- explorer(dt_potato, x = DAP, y = c(Canopy, PH), id = Plot) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(1:5), add_zero = TRUE, max_as_last = TRUE ) plot(mod_1, id = c(1:5)) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.000000 0.000049 0.448900 2.344930 4.261203 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 1 38.6 61.0 99.8 4.49e-01 5807 #> 2 35.2 60.7 100.0 7.01e+00 6004 #> 3 33.8 59.9 100.0 4.26e+00 6118 #> 4 39.3 65.5 99.8 4.60e-18 5551 #> #> Metrics: #> Groups Timing Convergence Iterations #> 5 2.3613 secs 100% 435.2 (id) #>"},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":null,"dir":"Reference","previous_headings":"","what":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"vcov object class modeler","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"","code":"# S3 method for class 'modeler' vcov(x, id = NULL, ...)"},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"x object inheriting class modeler resulting executing function modeler() id unique identifier filter . NULL default. ... parameters. future improvements.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"list object matrices estimated covariances parameter estimates.","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"Johan Aparicio [aut]","code":""},{"path":"https://apariciojohan.github.io/flexFitR/reference/vcov.modeler.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Variance-Covariance matrix for an object of class modeler — vcov.modeler","text":"","code":"library(flexFitR) data(dt_potato) mod_1 <- dt_potato |> modeler( x = DAP, y = Canopy, grp = Plot, fn = \"fn_piwise\", parameters = c(t1 = 45, t2 = 80, k = 0.9), subset = c(15, 2, 45), add_zero = TRUE, max_as_last = TRUE ) print(mod_1) #> #> Call: #> Canopy ~ fn_piwise(x, t1, t2, k) #> #> Sum of Squares Error: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> 0.002601 0.504829 1.007057 2.674719 4.010777 7.014498 #> #> Optimization Results `head()`: #> uid t1 t2 k sse auc #> 2 35.2 60.7 100.0 7.0145 6004 #> 15 38.5 69.4 99.8 1.0071 5396 #> 45 38.3 64.5 100.0 0.0026 5663 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.4055 secs 100% 414 (id) #> vcov(mod_1) #> $`2` #> t1 t2 k #> t1 5.694008e-02 -0.02923676 3.683474e-06 #> t2 -2.923676e-02 0.13796365 7.471629e-02 #> k 3.683474e-06 0.07471629 2.922726e-01 #> #> $`15` #> t1 t2 k #> t1 2.636323e-02 -0.02728600 1.691502e-07 #> t2 -2.728600e-02 0.08035361 1.300394e-02 #> k 1.691502e-07 0.01300394 4.196055e-02 #> #> $`45` #> t1 t2 k #> t1 4.956862e-05 -3.526927e-05 4.195078e-11 #> t2 -3.526927e-05 9.453221e-05 2.835289e-05 #> k 4.195078e-11 2.835289e-05 1.083750e-04 #>"},{"path":"https://apariciojohan.github.io/flexFitR/news/index.html","id":"flexfitr-010","dir":"Changelog","previous_headings":"","what":"flexFitR 0.1.0","title":"flexFitR 0.1.0","text":"Initial CRAN submission.","code":""}] diff --git a/man/goodness_of_fit.Rd b/man/goodness_of_fit.Rd index 110a937..b9467f0 100644 --- a/man/goodness_of_fit.Rd +++ b/man/goodness_of_fit.Rd @@ -20,8 +20,7 @@ executing the function \code{modeler()}} the classical AIC.} } \value{ -A tibble with columns giving lower and upper confidence limits for -each parameter. +A tibble with columns giving the corresponding AIC and BIC. } \description{ Generic function calculating Akaike's ‘An Information Criterion’ diff --git a/man/modeler.Rd b/man/modeler.Rd index 1aec90a..515284c 100644 --- a/man/modeler.Rd +++ b/man/modeler.Rd @@ -53,7 +53,8 @@ modeler( \item{fixed_params}{A data frame with columns \code{uid}, and the fixed parameter values for each group id. Used for fixing certain parameters during optimization.} -\item{method}{A character vector specifying the optimization methods to be used. See \code{optimx} package for available methods. Default is \code{c("subplex", "pracmanm", "anms")}.} +\item{method}{A character vector specifying the optimization methods to be used. Check `optimx::checkallsolvers()` for available methods. +Default is \code{c("subplex", "pracmanm", "anms")}.} \item{return_method}{Logical. If \code{TRUE}, includes the optimization method used in the result. Default is \code{FALSE}.}