Skip to contents

This function extracts a model run from an object of class dcm into a data frame using the generic as.data.frame function.

Usage

# S3 method for class 'dcm'
as.data.frame(x, row.names = NULL, optional = FALSE, run = NULL, ...)

Arguments

x

An EpiModel object of class dcm().

row.names

See as.data.frame.default().

optional

See as.data.frame.default().

run

Run number for model; used for multiple-run sensitivity models. If NULL (default), will output data from all runs in a stacked data frame.

...

See as.data.frame.default().

Value

A data frame containing the data from x.

Details

Model output from dcm() simulations are available as a data frame with this helper function. The output data frame will include columns for time, the size of each compartment, the overall population size (the sum of compartment sizes), and the size of each flow.

For models with multiple runs (i.e., varying parameters - see example below), the default with the run parameter not specified will output all runs in a single stacked data frame.

Examples

## Example 1: One-group SIS model with varying act.rate
param <- param.dcm(inf.prob = 0.2, act.rate = seq(0.05, 0.5, 0.05),
                   rec.rate = 1/50)
init <- init.dcm(s.num = 500, i.num = 1)
control <- control.dcm(type = "SIS", nsteps = 10)
mod1 <- dcm(param, init, control)
as.data.frame(mod1)
#>     run time    s.num     i.num     si.flow    is.flow num
#> 1     1    1 500.0000 1.0000000 0.009930388 0.01990030 501
#> 2     1    2 500.0100 0.9900301 0.009831579 0.01970190 501
#> 3     1    3 500.0198 0.9801598 0.009733753 0.01950548 501
#> 4     1    4 500.0296 0.9703880 0.009636780 0.01931078 501
#> 5     1    5 500.0393 0.9607140 0.009540934 0.01911835 501
#> 6     1    6 500.0489 0.9511366 0.009446000 0.01892776 501
#> 7     1    7 500.0583 0.9416549 0.009352012 0.01873907 501
#> 8     1    8 500.0677 0.9322678 0.009258959 0.01855227 501
#> 9     1    9 500.0770 0.9229745 0.009166831 0.01836733 501
#> 10    1   10 500.0862 0.9137740 0.009166831 0.01836733 501
#> 11    2    1 500.0000 1.0000000 0.019959682 0.01999960 501
#> 12    2    2 500.0000 0.9999601 0.019958887 0.01999880 501
#> 13    2    3 500.0001 0.9999202 0.019958092 0.01999800 501
#> 14    2    4 500.0001 0.9998803 0.019957297 0.01999721 501
#> 15    2    5 500.0002 0.9998403 0.019956502 0.01999641 501
#> 16    2    6 500.0002 0.9998004 0.019955707 0.01999561 501
#> 17    2    7 500.0002 0.9997605 0.019954912 0.01999481 501
#> 18    2    8 500.0003 0.9997206 0.019954118 0.01999401 501
#> 19    2    9 500.0003 0.9996807 0.019953323 0.01999322 501
#> 20    2   10 500.0004 0.9996408 0.019953323 0.01999322 501
#> 21    3    1 500.0000 1.0000000 0.030089362 0.02009990 501
#> 22    3    2 499.9900 1.0099895 0.030389318 0.02030068 501
#> 23    3    3 499.9799 1.0200781 0.030692241 0.02050345 501
#> 24    3    4 499.9697 1.0302669 0.030997781 0.02070798 501
#> 25    3    5 499.9594 1.0405567 0.031306840 0.02091488 501
#> 26    3    6 499.9491 1.0509487 0.031618829 0.02112375 501
#> 27    3    7 499.9386 1.0614437 0.031933900 0.02133469 501
#> 28    3    8 499.9280 1.0720429 0.032252081 0.02154773 501
#> 29    3    9 499.9173 1.0827473 0.032573408 0.02176287 501
#> 30    3   10 499.9064 1.0935578 0.032573408 0.02176287 501
#> 31    4    1 500.0000 1.0000000 0.040320173 0.02020081 501
#> 32    4    2 499.9799 1.0201194 0.041129649 0.02060721 501
#> 33    4    3 499.9594 1.0406418 0.041954321 0.02102126 501
#> 34    4    4 499.9384 1.0615749 0.042796855 0.02144432 501
#> 35    4    5 499.9171 1.0829274 0.043655764 0.02187564 501
#> 36    4    6 499.8953 1.1047075 0.044531756 0.02231558 501
#> 37    4    7 499.8731 1.1269237 0.045425222 0.02276433 501
#> 38    4    8 499.8504 1.1495846 0.046336502 0.02322207 501
#> 39    4    9 499.8273 1.1726990 0.047265930 0.02368897 501
#> 40    4   10 499.8037 1.1962760 0.047265930 0.02368897 501
#> 41    5    1 500.0000 1.0000000 0.050652468 0.02030213 501
#> 42    5    2 499.9696 1.0303503 0.052186435 0.02091825 501
#> 43    5    3 499.9384 1.0616185 0.053766109 0.02155281 501
#> 44    5    4 499.9062 1.0938318 0.055394166 0.02220689 501
#> 45    5    5 499.8730 1.1270191 0.057070905 0.02288061 501
#> 46    5    6 499.8388 1.1612094 0.058798018 0.02357468 501
#> 47    5    7 499.8036 1.1964327 0.060577090 0.02428972 501
#> 48    5    8 499.7673 1.2327201 0.062409672 0.02502638 501
#> 49    5    9 499.7299 1.2701034 0.064297299 0.02578528 501
#> 50    5   10 499.6914 1.3086154 0.064297299 0.02578528 501
#> 51    6    1 500.0000 1.0000000 0.061088844 0.02040451 501
#> 52    6    2 499.9593 1.0406843 0.063566401 0.02123380 501
#> 53    6    3 499.9170 1.0830169 0.066147666 0.02209796 501
#> 54    6    4 499.8729 1.1270666 0.068831765 0.02299671 501
#> 55    6    5 499.8271 1.1729017 0.071624078 0.02393186 501
#> 56    6    6 499.7794 1.2205939 0.074528696 0.02490481 501
#> 57    6    7 499.7298 1.2702178 0.077550660 0.02591727 501
#> 58    6    8 499.6781 1.3218512 0.080694308 0.02697071 501
#> 59    6    9 499.6244 1.3755748 0.083964455 0.02806678 501
#> 60    6   10 499.5685 1.4314725 0.083964455 0.02806678 501
#> 61    7    1 500.0000 1.0000000 0.071628560 0.02050728 501
#> 62    7    2 499.9489 1.0511213 0.075279406 0.02155478 501
#> 63    7    3 499.8952 1.1048459 0.079120018 0.02265696 501
#> 64    7    4 499.8387 1.1613090 0.083153541 0.02381477 501
#> 65    7    5 499.7794 1.2206477 0.087391117 0.02503144 501
#> 66    7    6 499.7170 1.2830074 0.091843229 0.02631002 501
#> 67    7    7 499.6515 1.3485406 0.096521051 0.02765378 501
#> 68    7    8 499.5826 1.4174079 0.101435407 0.02906588 501
#> 69    7    9 499.5102 1.4897774 0.106598069 0.03054975 501
#> 70    7   10 499.4342 1.5658257 0.106598069 0.03054975 501
#> 71    8    1 500.0000 1.0000000 0.082273096 0.02061068 501
#> 72    8    2 499.9383 1.0616624 0.087332775 0.02188099 501
#> 73    8    3 499.8729 1.1271142 0.092705448 0.02323024 501
#> 74    8    4 499.8034 1.1965894 0.098405037 0.02466198 501
#> 75    8    5 499.7297 1.2703325 0.104452468 0.02618155 501
#> 76    8    6 499.6514 1.3486034 0.110869683 0.02779454 501
#> 77    8    7 499.5683 1.4316785 0.117678547 0.02950655 501
#> 78    8    8 499.4801 1.5198505 0.124902308 0.03132353 501
#> 79    8    9 499.3866 1.6134293 0.132566059 0.03325190 501
#> 80    8   10 499.2873 1.7127435 0.132566059 0.03325190 501
#> 81    9    1 500.0000 1.0000000 0.093023687 0.02071477 501
#> 82    9    2 499.9277 1.0723089 0.099733636 0.02221229 501
#> 83    9    3 499.8502 1.1498303 0.106926825 0.02381816 501
#> 84    9    4 499.7671 1.2329389 0.114634391 0.02553943 501
#> 85    9    5 499.6780 1.3220339 0.122894049 0.02738466 501
#> 86    9    6 499.5825 1.4175433 0.131745380 0.02936283 501
#> 87    9    7 499.4801 1.5199258 0.141229507 0.03148330 501
#> 88    9    8 499.3703 1.6296720 0.151390958 0.03375620 501
#> 89    9    9 499.2527 1.7473068 0.162277372 0.03619242 501
#> 90    9   10 499.1266 1.8733917 0.162277372 0.03619242 501
#> 91   10    1 500.0000 1.0000000 0.103881534 0.02081959 501
#> 92   10    2 499.9169 1.0830619 0.112489821 0.02254873 501
#> 93   10    3 499.8270 1.1730030 0.121807905 0.02442113 501
#> 94   10    4 499.7296 1.2703898 0.131892071 0.02644826 501
#> 95   10    5 499.6242 1.3758336 0.142806018 0.02864313 501
#> 96   10    6 499.5100 1.4899965 0.154617544 0.03101959 501
#> 97   10    7 499.3864 1.6135945 0.167398006 0.03359228 501
#> 98   10    8 499.2526 1.7474002 0.181226300 0.03637740 501
#> 99   10    9 499.1078 1.8922491 0.196186360 0.03939222 501
#> 100  10   10 498.9510 2.0490432 0.196186360 0.03939222 501
as.data.frame(mod1, run = 1)
#>    run time    s.num     i.num     si.flow    is.flow num
#> 1    1    1 500.0000 1.0000000 0.009930388 0.01990030 501
#> 2    1    2 500.0100 0.9900301 0.009831579 0.01970190 501
#> 3    1    3 500.0198 0.9801598 0.009733753 0.01950548 501
#> 4    1    4 500.0296 0.9703880 0.009636780 0.01931078 501
#> 5    1    5 500.0393 0.9607140 0.009540934 0.01911835 501
#> 6    1    6 500.0489 0.9511366 0.009446000 0.01892776 501
#> 7    1    7 500.0583 0.9416549 0.009352012 0.01873907 501
#> 8    1    8 500.0677 0.9322678 0.009258959 0.01855227 501
#> 9    1    9 500.0770 0.9229745 0.009166831 0.01836733 501
#> 10   1   10 500.0862 0.9137740 0.009166831 0.01836733 501
as.data.frame(mod1, run = 10)
#>    run time    s.num    i.num   si.flow    is.flow num
#> 1   10    1 500.0000 1.000000 0.1038815 0.02081959 501
#> 2   10    2 499.9169 1.083062 0.1124898 0.02254873 501
#> 3   10    3 499.8270 1.173003 0.1218079 0.02442113 501
#> 4   10    4 499.7296 1.270390 0.1318921 0.02644826 501
#> 5   10    5 499.6242 1.375834 0.1428060 0.02864313 501
#> 6   10    6 499.5100 1.489997 0.1546175 0.03101959 501
#> 7   10    7 499.3864 1.613594 0.1673980 0.03359228 501
#> 8   10    8 499.2526 1.747400 0.1812263 0.03637740 501
#> 9   10    9 499.1078 1.892249 0.1961864 0.03939222 501
#> 10  10   10 498.9510 2.049043 0.1961864 0.03939222 501

## Example 2: Two-group SIR model with vital dynamics
param <- param.dcm(inf.prob = 0.2, inf.prob.g2 = 0.1,
                   act.rate = 3, balance = "g1",
                   rec.rate = 1/50, rec.rate.g2 = 1/50,
                   a.rate = 1/100, a.rate.g2 = NA,
                   ds.rate = 1/100, ds.rate.g2 = 1/100,
                   di.rate = 1/90, di.rate.g2 = 1/90,
                   dr.rate = 1/100, dr.rate.g2 = 1/100)
init <- init.dcm(s.num = 500, i.num = 1, r.num = 0,
                 s.num.g2 = 500, i.num.g2 = 1, r.num.g2 = 0)
control <- control.dcm(type = "SIR", nsteps = 10)
mod2 <- dcm(param, init, control)
as.data.frame(mod2)
#>    time    s.num     i.num      r.num s.num.g2  i.num.g2   r.num.g2    si.flow
#> 1     1 500.0000  1.000000 0.00000000 500.0000  1.000000 0.00000000  0.6958311
#> 2     2 499.3174  1.655027 0.02611130 499.6192  1.356356 0.02314662  0.9686129
#> 3     3 498.3701  2.558896 0.06728018 499.0136  1.928137 0.05519071  1.3915746
#> 4     4 497.0111  3.851977 0.12963388 498.0925  2.800631 0.10111720  2.0254273
#> 5     5 495.0347  5.730179 0.22254825 496.7184  4.104063 0.16798359  2.9588400
#> 6     6 492.1489  8.470795 0.35996678 494.6885  6.030444 0.26595130  4.3161763
#> 7     7 487.9407 12.465174 0.56228994 491.7105  8.856484 0.40970311  6.2643369
#> 8     8 481.8352 18.257123 0.85895593 487.3721 12.972106 0.62035969  9.0137285
#> 9     9 473.0538 26.581059 1.29177504 481.1077 18.911219 0.92797703 12.8029599
#> 10   10 460.5882 38.383870 1.91886564 472.1715 27.375080 1.37458102 12.8029599
#>       ir.flow   a.flow  ds.flow    di.flow      dr.flow si.flow.g2 ir.flow.g2
#> 1  0.02623118 5.009993 4.996758 0.01457288 0.0001198854  0.3925334 0.02325662
#> 2  0.04162116 5.009975 4.988712 0.02312287 0.0004522753  0.6222221 0.03242654
#> 3  0.06331729 5.009946 4.977324 0.03517627 0.0009635907  0.9451287 0.04669390
#> 4  0.09464483 5.009903 4.960850 0.05258046 0.0017304593  1.4095069 0.06819078
#> 5  0.14028668 5.009838 4.936827 0.07793704 0.0028681490  2.0821013 0.10010617
#> 6  0.20686971 5.009743 4.901761 0.11492761 0.0045465453  3.0548376 0.14708429
#> 7  0.30367836 5.009603 4.850751 0.16871020 0.0070123715  4.4512184 0.21574020
#> 8  0.44343790 5.009397 4.777060 0.24635439 0.0106187908  6.4295218 0.31526280
#> 9  0.64295263 5.009099 4.671761 0.35719591 0.0158620284  9.1762738 0.45797968
#> 10 0.64295263 5.009099 4.671761 0.35719591 0.0158620284  9.1762738 0.45797968
#>    a.flow.g2 ds.flow.g2 di.flow.g2   dr.flow.g2      num   num.g2
#> 1   5.009993   4.998256 0.01292034 0.0001100006 501.0000 501.0000
#> 2   5.009975   4.993383 0.01801474 0.0003824478 500.9985 500.9987
#> 3   5.009946   4.985842 0.02594106 0.0007674154 500.9962 500.9969
#> 4   5.009903   4.974505 0.03788377 0.0013243912 500.9927 500.9943
#> 5   5.009838   4.957687 0.05561454 0.0021384587 500.9875 500.9905
#> 6   5.009743   4.932936 0.08171349 0.0033324759 500.9797 500.9849
#> 7   5.009603   4.896756 0.11985567 0.0050836227 500.9682 500.9766
#> 8   5.009397   4.844286 0.17514600 0.0076454551 500.9513 500.9646
#> 9   5.009099   4.768983 0.25443315 0.0113756859 500.9267 500.9469
#> 10  5.009099   4.768983 0.25443315 0.0113756859 500.8909 500.9212