Subsetting method for mmkin objects.
# S3 method for mmkin [(x, i, j, ..., drop = FALSE)
mmkin object
An object of class mmkin
.
# Only use one core, to pass R CMD check --as-cran fits <- mmkin(c("SFO", "FOMC"), list(B = FOCUS_2006_B, C = FOCUS_2006_C), cores = 1, quiet = TRUE) fits["FOMC", ]#> dataset #> model B C #> FOMC List,42 List,42 #> attr(,"class") #> [1] "mmkin"fits[, "B"]#> dataset #> model B #> SFO List,42 #> FOMC List,42 #> attr(,"class") #> [1] "mmkin"fits["SFO", "B"]#> dataset #> model B #> SFO List,42 #> attr(,"class") #> [1] "mmkin"head( # This extracts an mkinfit object with lots of components fits[["FOMC", "B"]] )#> $par #> parent_0 log_alpha log_beta #> 99.666193 2.549849 5.050586 #> #> $ssr #> [1] 28.58291 #> #> $convergence #> [1] 0 #> #> $iterations #> [1] 21 #> #> $evaluations #> function gradient #> 25 78 #> #> $counts #> [1] "both X-convergence and relative convergence (5)" #>head( # The same can be achieved by fits["SFO", "B", drop = TRUE] )#> [[1]] #> $par #> parent_0 log_k_parent_sink #> 99.174072 -2.549028 #> #> $ssr #> [1] 30.65564 #> #> $convergence #> [1] 0 #> #> $iterations #> [1] 5 #> #> $evaluations #> function gradient #> 8 15 #> #> $counts #> [1] "relative convergence (4)" #> #> $hessian #> parent_0 log_k_parent_sink #> parent_0 4.163631 -94.09343 #> log_k_parent_sink -94.093431 6311.34610 #> #> $residuals #> parent parent parent parent parent parent #> 0.55407218 -2.98452128 4.20445742 -1.68599939 -0.58185357 -0.72033730 #> parent parent #> -0.24260405 -0.07020339 #> #> $ms #> [1] 3.831956 #> #> $var_ms #> parent #> 3.831956 #> #> $var_ms_unscaled #> parent #> 3.831956 #> #> $var_ms_unweighted #> parent #> 3.831956 #> #> $rank #> [1] 2 #> #> $df.residual #> [1] 6 #> #> $solution_type #> [1] "analytical" #> #> $transform_rates #> [1] TRUE #> #> $transform_fractions #> [1] TRUE #> #> $method.modFit #> [1] "Port" #> #> $maxit.modFit #> [1] "auto" #> #> $calls #> [1] 29 #> #> $time #> user system elapsed #> 0.064 0.000 0.066 #> #> $mkinmod #> <mkinmod> model generated with #> Use of formation fractions $use_of_ff: min #> Specification $spec: #> $parent #> $type: SFO; $sink: TRUE #> Coefficient matrix $coefmat available #> Differential equations: #> d_parent/dt = - k_parent_sink * parent #> #> $observed #> name time value #> 1 parent 0 98.62 #> 2 parent 3 81.43 #> 3 parent 7 53.18 #> 4 parent 14 34.89 #> 5 parent 30 10.09 #> 6 parent 62 1.50 #> 7 parent 90 0.33 #> 8 parent 118 0.08 #> #> $obs_vars #> [1] "parent" #> #> $predicted #> name time value #> 1 parent 0.000000 99.17407218 #> 2 parent 1.191919 90.35253561 #> 3 parent 2.383838 82.31567498 #> 4 parent 3.000000 78.44547872 #> 5 parent 3.575758 74.99369333 #> 6 parent 4.767677 68.32300215 #> 7 parent 5.959596 62.24566915 #> 8 parent 7.000000 57.38445742 #> 9 parent 7.151515 56.70891509 #> 10 parent 8.343434 51.66465547 #> 11 parent 9.535354 47.06908288 #> 12 parent 10.727273 42.88228661 #> 13 parent 11.919192 39.06790599 #> 14 parent 13.111111 35.59281463 #> 15 parent 14.000000 33.20400061 #> 16 parent 14.303030 32.42683275 #> 17 parent 15.494949 29.54246504 #> 18 parent 16.686869 26.91466193 #> 19 parent 17.878788 24.52060198 #> 20 parent 19.070707 22.33949373 #> 21 parent 20.262626 20.35239512 #> 22 parent 21.454545 18.54204899 #> 23 parent 22.646465 16.89273320 #> 24 parent 23.838384 15.39012410 #> 25 parent 25.030303 14.02117212 #> 26 parent 26.222222 12.77398846 #> 27 parent 27.414141 11.63774182 #> 28 parent 28.606061 10.60256435 #> 29 parent 29.797980 9.65946594 #> 30 parent 30.000000 9.50814643 #> 31 parent 30.989899 8.80025617 #> 32 parent 32.181818 8.01747313 #> 33 parent 33.373737 7.30431867 #> 34 parent 34.565657 6.65459931 #> 35 parent 35.757576 6.06267251 #> 36 parent 36.949495 5.52339762 #> 37 parent 38.141414 5.03209124 #> 38 parent 39.333333 4.58448658 #> 39 parent 40.525253 4.17669637 #> 40 parent 41.717172 3.80517911 #> 41 parent 42.909091 3.46670832 #> 42 parent 44.101010 3.15834451 #> 43 parent 45.292929 2.87740968 #> 44 parent 46.484848 2.62146400 #> 45 parent 47.676768 2.38828471 #> 46 parent 48.868687 2.17584671 #> 47 parent 50.060606 1.98230508 #> 48 parent 51.252525 1.80597899 #> 49 parent 52.444444 1.64533711 #> 50 parent 53.636364 1.49898432 #> 51 parent 54.828283 1.36564963 #> 52 parent 56.020202 1.24417505 #> 53 parent 57.212121 1.13350565 #> 54 parent 58.404040 1.03268029 #> 55 parent 59.595960 0.94082335 #> 56 parent 60.787879 0.85713708 #> 57 parent 61.979798 0.78089471 #> 58 parent 62.000000 0.77966270 #> 59 parent 63.171717 0.71143411 #> 60 parent 64.363636 0.64815202 #> 61 parent 65.555556 0.59049888 #> 62 parent 66.747475 0.53797399 #> 63 parent 67.939394 0.49012119 #> 64 parent 69.131313 0.44652489 #> 65 parent 70.323232 0.40680649 #> 66 parent 71.515152 0.37062104 #> 67 parent 72.707071 0.33765429 #> 68 parent 73.898990 0.30761993 #> 69 parent 75.090909 0.28025713 #> 70 parent 76.282828 0.25532825 #> 71 parent 77.474747 0.23261679 #> 72 parent 78.666667 0.21192552 #> 73 parent 79.858586 0.19307474 #> 74 parent 81.050505 0.17590074 #> 75 parent 82.242424 0.16025436 #> 76 parent 83.434343 0.14599973 #> 77 parent 84.626263 0.13301305 #> 78 parent 85.818182 0.12118154 #> 79 parent 87.010101 0.11040244 #> 80 parent 88.202020 0.10058214 #> 81 parent 89.393939 0.09163535 #> 82 parent 90.000000 0.08739595 #> 83 parent 90.585859 0.08348439 #> 84 parent 91.777778 0.07605845 #> 85 parent 92.969697 0.06929305 #> 86 parent 94.161616 0.06312943 #> 87 parent 95.353535 0.05751406 #> 88 parent 96.545455 0.05239819 #> 89 parent 97.737374 0.04773737 #> 90 parent 98.929293 0.04349113 #> 91 parent 100.121212 0.03962259 #> 92 parent 101.313131 0.03609816 #> 93 parent 102.505051 0.03288723 #> 94 parent 103.696970 0.02996191 #> 95 parent 104.888889 0.02729679 #> 96 parent 106.080808 0.02486874 #> 97 parent 107.272727 0.02265667 #> 98 parent 108.464646 0.02064136 #> 99 parent 109.656566 0.01880531 #> 100 parent 110.848485 0.01713257 #> 101 parent 112.040404 0.01560863 #> 102 parent 113.232323 0.01422024 #> 103 parent 114.424242 0.01295535 #> 104 parent 115.616162 0.01180297 #> 105 parent 116.808081 0.01075310 #> 106 parent 118.000000 0.00979661 #> #> $cost #> function (P) #> { #> assign("calls", calls + 1, inherits = TRUE) #> if (trace_parms) #> cat(P, "\n") #> if (length(state.ini.optim) > 0) { #> odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) #> names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) #> } #> else { #> odeini <- state.ini.fixed #> names(odeini) <- state.ini.fixed.boxnames #> } #> odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], #> transparms.fixed) #> parms <- backtransform_odeparms(odeparms, mkinmod, transform_rates = transform_rates, #> transform_fractions = transform_fractions) #> out <- mkinpredict(mkinmod, parms, odeini, outtimes, solution_type = solution_type, #> use_compiled = use_compiled, method.ode = method.ode, #> atol = atol, rtol = rtol, ...) #> assign("out_predicted", out, inherits = TRUE) #> mC <- modCost(out, observed, y = "value", err = err, weight = weight, #> scaleVar = scaleVar) #> if (mC$model < cost.old) { #> if (!quiet) #> cat("Model cost at call ", calls, ": ", mC$model, #> "\n") #> if (plot) { #> outtimes_plot = seq(min(observed$time), max(observed$time), #> length.out = 100) #> out_plot <- mkinpredict(mkinmod, parms, odeini, outtimes_plot, #> solution_type = solution_type, use_compiled = use_compiled, #> method.ode = method.ode, atol = atol, rtol = rtol, #> ...) #> plot(0, type = "n", xlim = range(observed$time), #> ylim = c(0, max(observed$value, na.rm = TRUE)), #> xlab = "Time", ylab = "Observed") #> col_obs <- pch_obs <- 1:length(obs_vars) #> lty_obs <- rep(1, length(obs_vars)) #> names(col_obs) <- names(pch_obs) <- names(lty_obs) <- obs_vars #> for (obs_var in obs_vars) { #> points(subset(observed, name == obs_var, c(time, #> value)), pch = pch_obs[obs_var], col = col_obs[obs_var]) #> } #> matlines(out_plot$time, out_plot[-1], col = col_obs, #> lty = lty_obs) #> legend("topright", inset = c(0.05, 0.05), legend = obs_vars, #> col = col_obs, pch = pch_obs, lty = 1:length(pch_obs)) #> } #> assign("cost.old", mC$model, inherits = TRUE) #> } #> return(mC) #> } #> <environment: 0x374d908> #> #> $cost_notrans #> function (P) #> { #> if (length(state.ini.optim) > 0) { #> odeini <- c(P[1:length(state.ini.optim)], state.ini.fixed) #> names(odeini) <- c(state.ini.optim.boxnames, state.ini.fixed.boxnames) #> } #> else { #> odeini <- state.ini.fixed #> names(odeini) <- state.ini.fixed.boxnames #> } #> odeparms <- c(P[(length(state.ini.optim) + 1):length(P)], #> parms.fixed) #> out <- mkinpredict(mkinmod, odeparms, odeini, outtimes, solution_type = solution_type, #> use_compiled = use_compiled, method.ode = method.ode, #> atol = atol, rtol = rtol, ...) #> mC <- modCost(out, observed, y = "value", err = err, weight = weight, #> scaleVar = scaleVar) #> return(mC) #> } #> <environment: 0x374d908> #> #> $hessian_notrans #> parent_0 k_parent_sink #> parent_0 4.163631 -1203.894 #> k_parent_sink -1203.893702 1033188.753 #> #> $start #> value type #> parent_0 98.62 state #> k_parent_sink 0.10 deparm #> #> $start_transformed #> value lower upper #> parent_0 98.620000 -Inf Inf #> log_k_parent_sink -2.302585 -Inf Inf #> #> $fixed #> [1] value type #> <0 rows> (or 0-length row.names) #> #> $data #> time variable observed predicted residual #> 1 0 parent 98.62 99.17407218 -0.55407218 #> 2 3 parent 81.43 78.44547872 2.98452128 #> 3 7 parent 53.18 57.38445742 -4.20445742 #> 4 14 parent 34.89 33.20400061 1.68599939 #> 5 30 parent 10.09 9.50814643 0.58185357 #> 6 62 parent 1.50 0.77966270 0.72033730 #> 7 90 parent 0.33 0.08739595 0.24260405 #> 8 118 parent 0.08 0.00979661 0.07020339 #> #> $atol #> [1] 1e-08 #> #> $rtol #> [1] 1e-10 #> #> $weight.ini #> [1] "none" #> #> $reweight.tol #> [1] 1e-08 #> #> $reweight.max.iter #> [1] 10 #> #> $bparms.optim #> parent_0 k_parent_sink #> 99.17407218 0.07815759 #> #> $bparms.fixed #> numeric(0) #> #> $bparms.ode #> k_parent_sink #> 0.07815759 #> #> $bparms.state #> parent #> 99.17407 #> #> $date #> [1] "Fri Nov 18 16:45:27 2016" #> #> attr(,"class") #> [1] "mkinfit" "modFit" #>