From 775c4b92a8c62fc5f3c0d17aa78667400682ca38 Mon Sep 17 00:00:00 2001 From: AparicioJohan Date: Mon, 23 Sep 2024 14:59:43 -0500 Subject: [PATCH] docs updating documentation --- docs/articles/canopy-model.html | 4 ++-- docs/articles/how_to_start.html | 8 ++++---- docs/articles/plotting.html | 4 ++-- .../figure-html/unnamed-chunk-4-1.png | Bin 142585 -> 142543 bytes docs/pkgdown.yml | 2 +- docs/reference/coef.modeler.html | 2 +- docs/reference/confint.modeler.html | 2 +- docs/reference/metrics.html | 4 ++-- docs/reference/modeler.html | 6 +++--- 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 +- vignettes/plotting.Rmd | 2 +- 15 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/articles/canopy-model.html b/docs/articles/canopy-model.html index 6b5fc85..973c2a9 100644 --- a/docs/articles/canopy-model.html +++ b/docs/articles/canopy-model.html @@ -301,8 +301,8 @@

Fitting Models#> 195 38.7 60.0 91.7 390 #> #> Metrics: -#> Groups Timing Convergence Iterations -#> 2 0.866 secs 100% 547 (id) +#> Groups Timing Convergence Iterations +#> 2 0.8015 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 44b781a..0515c30 100644 --- a/docs/articles/how_to_start.html +++ b/docs/articles/how_to_start.html @@ -146,7 +146,7 @@

1. Simple linear regression#> #> Metrics: #> Groups Timing Convergence Iterations -#> 1 0.4098 secs 100% 259 (id) +#> 1 0.3676 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.3951 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 @@ -358,7 +358,7 @@

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

Fixing parameters#> #> Metrics: #> Groups Timing Convergence Iterations -#> 1 0.3857 secs 100% 321 (id) +#> 1 0.3723 secs 100% 321 (id) coef(mod_3) #> # A tibble: 2 × 6 #> uid coefficient solution std.error `t value` `Pr(>|t|)` diff --git a/docs/articles/plotting.html b/docs/articles/plotting.html index a0f63ab..fd708f1 100644 --- a/docs/articles/plotting.html +++ b/docs/articles/plotting.html @@ -126,13 +126,13 @@

Expectation function and modeling#> #> Metrics: #> Groups Timing Convergence Iterations -#> 1 0.3862 secs 100% 334 (id) +#> 1 0.3787 secs 100% 334 (id)

Plotting predictions and derivatives

-a <- plot(mod, color = "blue", title = "Raw - data")
+a <- plot(mod, color = "blue", title = "Raw data")
 b <- plot(mod, type = 4, n_points = 200, color = "black")
 c <- plot(mod, type = 5, n_points = 200, color = "black")
 d <- plot(mod, type = 6, n_points = 200, color = "black")
diff --git a/docs/articles/plotting_files/figure-html/unnamed-chunk-4-1.png b/docs/articles/plotting_files/figure-html/unnamed-chunk-4-1.png
index 4e746c2da9a44a9f99195e89d7db0f9c9ff958f1..aba67c53e9ba73454c50e6bebec2db159c6f2db5 100644
GIT binary patch
literal 142543
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%0Apd~1f|Hx@+4v}Nh_FbDe
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 diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 2b7212a..82dfedf 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -7,7 +7,7 @@ articles: how_to_start: how_to_start.html maturity-model: maturity-model.html plotting: plotting.html -last_built: 2024-09-23T19:17Z +last_built: 2024-09-23T19:56Z urls: reference: https://apariciojohan.github.io/flexFitR/reference article: https://apariciojohan.github.io/flexFitR/articles diff --git a/docs/reference/coef.modeler.html b/docs/reference/coef.modeler.html index 4d7d40b..ce772a2 100644 --- a/docs/reference/coef.modeler.html +++ b/docs/reference/coef.modeler.html @@ -124,7 +124,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.8005 secs 100% 414 (id) +#> 3 1.8156 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 2aa0189..0c9ebd0 100644 --- a/docs/reference/confint.modeler.html +++ b/docs/reference/confint.modeler.html @@ -123,7 +123,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 2.5273 secs 100% 410 (id) +#> 3 2.7826 secs 100% 410 (id) #> confint(mod_1) #> # A tibble: 9 × 6 diff --git a/docs/reference/metrics.html b/docs/reference/metrics.html index 6a5e4aa..3cb6e51 100644 --- a/docs/reference/metrics.html +++ b/docs/reference/metrics.html @@ -124,8 +124,8 @@

Examples#> 2 35.2 60.7 100.0 7.014 #> #> Metrics: -#> Groups Timing Convergence Iterations -#> 2 0.953 secs 100% 469 (id) +#> Groups Timing Convergence Iterations +#> 2 1.4931 secs 100% 469 (id) #> metrics(mod_1) #> # A tibble: 2 × 8 diff --git a/docs/reference/modeler.html b/docs/reference/modeler.html index 95c130c..6339ed4 100644 --- a/docs/reference/modeler.html +++ b/docs/reference/modeler.html @@ -235,7 +235,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 1 0.9123 secs 100% 901 (id) +#> 1 1.5053 secs 100% 901 (id) #> # Example 2 mod_2 <- dt_potato |> @@ -265,8 +265,8 @@

Examples#> 195 38.7 62 100 1.88e-18 #> #> Metrics: -#> Groups Timing Convergence Iterations -#> 1 0.608 secs 100% 349 (id) +#> Groups Timing Convergence Iterations +#> 1 0.8373 secs 100% 349 (id) #>

diff --git a/docs/reference/plot.modeler.html b/docs/reference/plot.modeler.html index e68ab43..242f094 100644 --- a/docs/reference/plot.modeler.html +++ b/docs/reference/plot.modeler.html @@ -191,7 +191,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.5726 secs 100% 499.67 (id) +#> 3 1.8776 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 da84d07..f8360df 100644 --- a/docs/reference/predict.modeler.html +++ b/docs/reference/predict.modeler.html @@ -153,7 +153,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.4683 secs 100% 414 (id) +#> 3 2.1496 secs 100% 414 (id) #> # Point Prediction predict(mod_1, x = 45, type = "point", id = 2) diff --git a/docs/reference/print.modeler.html b/docs/reference/print.modeler.html index b3cb0e2..6c0b588 100644 --- a/docs/reference/print.modeler.html +++ b/docs/reference/print.modeler.html @@ -115,7 +115,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 5 2.3402 secs 100% 435.2 (id) +#> 5 3.4596 secs 100% 435.2 (id) #> diff --git a/docs/reference/vcov.modeler.html b/docs/reference/vcov.modeler.html index fac5b3a..96e9cdd 100644 --- a/docs/reference/vcov.modeler.html +++ b/docs/reference/vcov.modeler.html @@ -115,7 +115,7 @@

Examples#> #> Metrics: #> Groups Timing Convergence Iterations -#> 3 1.4468 secs 100% 414 (id) +#> 3 1.8317 secs 100% 414 (id) #> vcov(mod_1) #> $`2` diff --git a/docs/search.json b/docs/search.json index 63c7559..28860ec 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 #> 40 34.8 53.7 72.5 2846 #> 195 38.7 60.0 91.7 390 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 0.866 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 #> 1 -15.5 19.5 449 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4098 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 #> 1 38.6 61 99.8 0.449 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4163 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 #> 1 38.6 61 99.8 0.449 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4248 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 #> 1 38.6 60.6 13.6 98 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3857 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/articles/plotting.html","id":"example-dataset-and-loading-libraries","dir":"Articles","previous_headings":"","what":"Example dataset and loading libraries","title":"Plotting Options","text":"","code":"library(flexFitR) library(dplyr) library(ggpubr) set.seed(10) 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) ) |> mutate(variable = variable + rnorm(n = n(), mean = 5, sd = 6))"},{"path":"https://apariciojohan.github.io/flexFitR/articles/plotting.html","id":"expectation-function-and-modeling","dir":"Articles","previous_headings":"","what":"Expectation function and modeling","title":"Plotting Options","text":"","code":"fn <- function(t, t0, t1, t2) t0 / (1 + exp((t1 - t) / t2)) mod <- dt |> modeler( x = time, y = variable, fn = \"fn\", parameters = c(t0 = 100, t1 = 50, t2 = 5) ) mod #> #> Call: #> variable ~ fn(x, t0, t1, t2) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -6.1496 -2.9462 2.1181 0.4716 3.2479 6.7654 #> #> Optimization Results `head()`: #> uid t0 t1 t2 sse #> 1 101 49.2 4.01 169 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3862 secs 100% 334 (id)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/plotting.html","id":"plotting-predictions-and-derivatives","dir":"Articles","previous_headings":"","what":"Plotting predictions and derivatives","title":"Plotting Options","text":"","code":"a <- plot(mod, color = \"blue\", title = \"Raw - data\") b <- plot(mod, type = 4, n_points = 200, color = \"black\") c <- plot(mod, type = 5, n_points = 200, color = \"black\") d <- plot(mod, type = 6, n_points = 200, color = \"black\") ggarrange(a, b, c, d)"},{"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 1 38.6 61 99.8 0.449 Metrics: Groups Timing Convergence Iterations 1 0.4068 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 plot(mo_1) 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 #> 2 35.2 60.7 100.0 7.0145 #> 15 38.5 69.4 99.8 1.0071 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.8005 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 #> 15 38.5 69.4 99.8 1.0071 #> 35 52.2 61.4 100.0 1.8972 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 2.5273 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 #> 1 38.6 61.0 99.8 0.449 #> 2 35.2 60.7 100.0 7.014 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 0.953 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, 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. 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 fitting models. metrics Metrics summary models. execution Execution time. response Response variable. keep Metadata keep across. fun Name function. parallel List returning parallel workers. 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 #> 195 39.6 68.3 93.3 0.323 -0.01 0.000149 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.9123 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 #> 195 38.7 62 100 1.88e-18 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.608 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, color = \"red\", parm = NULL, n_points = 2000, title = NULL, add_ci = TRUE, add_ribbon = FALSE, color_ribbon = \"blue\", ... )"},{"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. Type 4, 5 6 experimental. type = 1 Raw Data + Fitted Curve type = 2 Coefficients + Confindence Intervals type = 3 Fitted Curve + Color Group type = 4 Fitted curve + Confindence Intervals type = 5 First Derivative + Confindence Intervals type = 6 Second Derivative + Confindence Intervals label_size Label size. 3 default. base_size Base font size, given pts. color color geom_line type 1. Default \"red\". parm type equal 2 must vector names parameters. NULL, parameters considered. n_points Number points interpolate along x axis. Default 2000. title Optional string character add title plot. add_ci Add confidence interval type c(4, 5, 6).TRUE FALSE. TRUE default. add_ribbon Add geom_ribbon type c(4, 5, 6).TRUE FALSE. TRUE default. color_ribbon Ribbon color. \"blue\" default. ... 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 #> 1 38.6 61.0 99.8 0.449 #> 2 35.2 60.7 100.0 7.014 #> 3 33.8 59.9 100.0 4.261 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.5726 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, type = c(\"point\", \"auc\", \"fd\", \"sd\"), se_interval = c(\"confidence\", \"prediction\"), n_points = 1000, 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. type = \"auc\", x needs size 2, specifies interval calculating AUC. id unique identifier filter . NULL default. type character string specifying type prediction. \"point\" predict value y given x. \"auc\" return area curve (AUC) fitted curve. \"fd\" first order derivative x value returned. \"sd\" second order derivative x value returned. se_interval Type standard error calculation intervals. \"confidence\" \"prediction\". \"confidence\" default. n_points integer specifying number x points use approximating Area Curve (AUC). Default 1000. metadata TRUE FALSE. Whether bring metadata making predictions. ... 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 standard errors.","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) 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 #> 2 35.2 60.7 100.0 7.0145 #> 15 38.5 69.4 99.8 1.0071 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.4683 secs 100% 414 (id) #> # Point Prediction predict(mod_1, x = 45, type = \"point\", id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 38.4 0.622 # AUC Prediction predict(mod_1, x = c(0, 108), type = \"auc\", id = 2) #> # A tibble: 1 × 5 #> uid x_min x_max predicted.value std.error #> #> 1 2 0 108 6004. 30.8 # First Derivative predict(mod_1, x = 45, type = \"fd\", id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 3.91 0.0741 # Second Derivative predict(mod_1, x = 45, type = \"sd\", id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 -0.0000000298 0.0000274"},{"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 #> 1 38.6 61.0 99.8 4.49e-01 #> 2 35.2 60.7 100.0 7.01e+00 #> 3 33.8 59.9 100.0 4.26e+00 #> 4 39.3 65.5 99.8 4.60e-18 #> #> Metrics: #> Groups Timing Convergence Iterations #> 5 2.3402 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 #> 2 35.2 60.7 100.0 7.0145 #> 15 38.5 69.4 99.8 1.0071 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.4468 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 #> 40 34.8 53.7 72.5 2846 #> 195 38.7 60.0 91.7 390 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 0.8015 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 #> 1 -15.5 19.5 449 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3676 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 #> 1 38.6 61 99.8 0.449 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3951 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 #> 1 38.6 61 99.8 0.449 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.4101 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 #> 1 38.6 60.6 13.6 98 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3723 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/articles/plotting.html","id":"example-dataset-and-loading-libraries","dir":"Articles","previous_headings":"","what":"Example dataset and loading libraries","title":"Plotting Options","text":"","code":"library(flexFitR) library(dplyr) library(ggpubr) set.seed(10) 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) ) |> mutate(variable = variable + rnorm(n = n(), mean = 5, sd = 6))"},{"path":"https://apariciojohan.github.io/flexFitR/articles/plotting.html","id":"expectation-function-and-modeling","dir":"Articles","previous_headings":"","what":"Expectation function and modeling","title":"Plotting Options","text":"","code":"fn <- function(t, t0, t1, t2) t0 / (1 + exp((t1 - t) / t2)) mod <- dt |> modeler( x = time, y = variable, fn = \"fn\", parameters = c(t0 = 100, t1 = 50, t2 = 5) ) mod #> #> Call: #> variable ~ fn(x, t0, t1, t2) #> #> Residuals: #> Min. 1st Qu. Median Mean 3rd Qu. Max. #> -6.1496 -2.9462 2.1181 0.4716 3.2479 6.7654 #> #> Optimization Results `head()`: #> uid t0 t1 t2 sse #> 1 101 49.2 4.01 169 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.3787 secs 100% 334 (id)"},{"path":"https://apariciojohan.github.io/flexFitR/articles/plotting.html","id":"plotting-predictions-and-derivatives","dir":"Articles","previous_headings":"","what":"Plotting predictions and derivatives","title":"Plotting Options","text":"","code":"a <- plot(mod, color = \"blue\", title = \"Raw data\") b <- plot(mod, type = 4, n_points = 200, color = \"black\") c <- plot(mod, type = 5, n_points = 200, color = \"black\") d <- plot(mod, type = 6, n_points = 200, color = \"black\") ggarrange(a, b, c, d)"},{"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 1 38.6 61 99.8 0.449 Metrics: Groups Timing Convergence Iterations 1 0.4068 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 plot(mo_1) 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 #> 2 35.2 60.7 100.0 7.0145 #> 15 38.5 69.4 99.8 1.0071 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.8156 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 #> 15 38.5 69.4 99.8 1.0071 #> 35 52.2 61.4 100.0 1.8972 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 2.7826 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 #> 1 38.6 61.0 99.8 0.449 #> 2 35.2 60.7 100.0 7.014 #> #> Metrics: #> Groups Timing Convergence Iterations #> 2 1.4931 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, 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. 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 fitting models. metrics Metrics summary models. execution Execution time. response Response variable. keep Metadata keep across. fun Name function. parallel List returning parallel workers. 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 #> 195 39.6 68.3 93.3 0.323 -0.01 0.000149 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 1.5053 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 #> 195 38.7 62 100 1.88e-18 #> #> Metrics: #> Groups Timing Convergence Iterations #> 1 0.8373 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, color = \"red\", parm = NULL, n_points = 2000, title = NULL, add_ci = TRUE, add_ribbon = FALSE, color_ribbon = \"blue\", ... )"},{"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. Type 4, 5 6 experimental. type = 1 Raw Data + Fitted Curve type = 2 Coefficients + Confindence Intervals type = 3 Fitted Curve + Color Group type = 4 Fitted curve + Confindence Intervals type = 5 First Derivative + Confindence Intervals type = 6 Second Derivative + Confindence Intervals label_size Label size. 3 default. base_size Base font size, given pts. color color geom_line type 1. Default \"red\". parm type equal 2 must vector names parameters. NULL, parameters considered. n_points Number points interpolate along x axis. Default 2000. title Optional string character add title plot. add_ci Add confidence interval type c(4, 5, 6).TRUE FALSE. TRUE default. add_ribbon Add geom_ribbon type c(4, 5, 6).TRUE FALSE. TRUE default. color_ribbon Ribbon color. \"blue\" default. ... 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 #> 1 38.6 61.0 99.8 0.449 #> 2 35.2 60.7 100.0 7.014 #> 3 33.8 59.9 100.0 4.261 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.8776 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, type = c(\"point\", \"auc\", \"fd\", \"sd\"), se_interval = c(\"confidence\", \"prediction\"), n_points = 1000, 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. type = \"auc\", x needs size 2, specifies interval calculating AUC. id unique identifier filter . NULL default. type character string specifying type prediction. \"point\" predict value y given x. \"auc\" return area curve (AUC) fitted curve. \"fd\" first order derivative x value returned. \"sd\" second order derivative x value returned. se_interval Type standard error calculation intervals. \"confidence\" \"prediction\". \"confidence\" default. n_points integer specifying number x points use approximating Area Curve (AUC). Default 1000. metadata TRUE FALSE. Whether bring metadata making predictions. ... 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 standard errors.","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) 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 #> 2 35.2 60.7 100.0 7.0145 #> 15 38.5 69.4 99.8 1.0071 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 2.1496 secs 100% 414 (id) #> # Point Prediction predict(mod_1, x = 45, type = \"point\", id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 38.4 0.622 # AUC Prediction predict(mod_1, x = c(0, 108), type = \"auc\", id = 2) #> # A tibble: 1 × 5 #> uid x_min x_max predicted.value std.error #> #> 1 2 0 108 6004. 30.8 # First Derivative predict(mod_1, x = 45, type = \"fd\", id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 3.91 0.0741 # Second Derivative predict(mod_1, x = 45, type = \"sd\", id = 2) #> # A tibble: 1 × 4 #> uid x_new predicted.value std.error #> #> 1 2 45 -0.0000000298 0.0000274"},{"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 #> 1 38.6 61.0 99.8 4.49e-01 #> 2 35.2 60.7 100.0 7.01e+00 #> 3 33.8 59.9 100.0 4.26e+00 #> 4 39.3 65.5 99.8 4.60e-18 #> #> Metrics: #> Groups Timing Convergence Iterations #> 5 3.4596 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 #> 2 35.2 60.7 100.0 7.0145 #> 15 38.5 69.4 99.8 1.0071 #> 45 38.3 64.5 100.0 0.0026 #> #> Metrics: #> Groups Timing Convergence Iterations #> 3 1.8317 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/vignettes/plotting.Rmd b/vignettes/plotting.Rmd index 33211c9..dba8e51 100644 --- a/vignettes/plotting.Rmd +++ b/vignettes/plotting.Rmd @@ -52,7 +52,7 @@ mod ## Plotting predictions and derivatives ```{r, fig.width= 8, fig.height=8, fig.alt="plot derivatives"} -a <- plot(mod, color = "blue", title = "Raw - data") +a <- plot(mod, color = "blue", title = "Raw data") b <- plot(mod, type = 4, n_points = 200, color = "black") c <- plot(mod, type = 5, n_points = 200, color = "black") d <- plot(mod, type = 6, n_points = 200, color = "black")