diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/figs/plotting/plot-errmod-with-focus-c-tc.svg | 128 | ||||
-rw-r--r-- | tests/figs/plotting/plot-errmod-with-focus-d-obs-eigen.svg | 201 | ||||
-rw-r--r-- | tests/testthat/FOCUS_2006_D.csf | 2 | ||||
-rw-r--r-- | tests/testthat/test_nlme.R | 9 | ||||
-rw-r--r-- | tests/testthat/test_plots_summary_twa.R | 10 | ||||
-rw-r--r-- | tests/testthat/test_residuals.R | 9 |
6 files changed, 354 insertions, 5 deletions
diff --git a/tests/figs/plotting/plot-errmod-with-focus-c-tc.svg b/tests/figs/plotting/plot-errmod-with-focus-c-tc.svg new file mode 100644 index 00000000..8adefc27 --- /dev/null +++ b/tests/figs/plotting/plot-errmod-with-focus-c-tc.svg @@ -0,0 +1,128 @@ +<?xml version='1.0' encoding='UTF-8' ?> +<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 720.00 576.00'> +<defs> + <style type='text/css'><![CDATA[ + line, polyline, polygon, path, rect, circle { + fill: none; + stroke: #000000; + stroke-linecap: round; + stroke-linejoin: round; + stroke-miterlimit: 10.00; + } + ]]></style> +</defs> +<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/> +<line x1='69.07' y1='502.56' x2='321.84' y2='502.56' style='stroke-width: 0.75;' /> +<line x1='69.07' y1='502.56' x2='69.07' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='111.20' y1='502.56' x2='111.20' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='153.32' y1='502.56' x2='153.32' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='195.45' y1='502.56' x2='195.45' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='237.58' y1='502.56' x2='237.58' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='279.71' y1='502.56' x2='279.71' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='321.84' y1='502.56' x2='321.84' y2='509.76' style='stroke-width: 0.75;' /> +<text x='65.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text> +<text x='104.52' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text> +<text x='146.65' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text> +<text x='188.78' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text> +<text x='230.91' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text> +<text x='269.70' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text> +<text x='311.83' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text> +<line x1='59.04' y1='486.13' x2='59.04' y2='100.08' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='486.13' x2='51.84' y2='486.13' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='389.62' x2='51.84' y2='389.62' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='293.11' x2='51.84' y2='293.11' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='196.59' x2='51.84' y2='196.59' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='100.08' x2='51.84' y2='100.08' style='stroke-width: 0.75;' /> +<text transform='translate(41.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text> +<text transform='translate(41.76,396.29) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text> +<text transform='translate(41.76,299.78) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text> +<text transform='translate(41.76,203.26) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text> +<text transform='translate(41.76,106.75) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text> +<polyline points='59.04,502.56 329.76,502.56 329.76,59.04 59.04,59.04 59.04,502.56 ' style='stroke-width: 0.75;' /> +<defs> + <clipPath id='cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA='> + <rect x='0.00' y='0.00' width='360.00' height='576.00' /> + </clipPath> +</defs> +<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text x='181.29' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='26.22px' lengthAdjust='spacingAndGlyphs'>Time</text></g> +<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(12.96,306.81) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='52.02px' lengthAdjust='spacingAndGlyphs'>Observed</text></g> +<defs> + <clipPath id='cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA=='> + <rect x='59.04' y='59.04' width='270.72' height='443.52' /> + </clipPath> +</defs> +<circle cx='69.07' cy='75.47' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='71.17' cy='206.73' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='75.39' cy='341.85' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='83.81' cy='415.68' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='98.56' cy='439.32' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='128.05' cy='454.28' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='201.77' cy='466.83' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='260.75' cy='467.31' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='319.73' cy='483.24' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='69.07,88.05 71.60,210.58 74.13,295.40 76.66,354.11 79.19,394.75 81.73,422.88 84.26,442.35 86.79,455.83 89.32,465.15 91.85,471.61 94.39,476.08 96.92,479.18 99.45,481.32 101.98,482.80 104.51,483.83 107.05,484.54 109.58,485.03 112.11,485.37 114.64,485.60 117.17,485.77 119.71,485.88 122.24,485.96 124.77,486.01 127.30,486.05 129.83,486.08 132.37,486.09 134.90,486.11 137.43,486.11 139.96,486.12 142.49,486.12 145.03,486.13 147.56,486.13 150.09,486.13 152.62,486.13 155.15,486.13 157.69,486.13 160.22,486.13 162.75,486.13 165.28,486.13 167.81,486.13 170.35,486.13 172.88,486.13 175.41,486.13 177.94,486.13 180.47,486.13 183.01,486.13 185.54,486.13 188.07,486.13 190.60,486.13 193.13,486.13 195.67,486.13 198.20,486.13 200.73,486.13 203.26,486.13 205.79,486.13 208.33,486.13 210.86,486.13 213.39,486.13 215.92,486.13 218.45,486.13 220.99,486.13 223.52,486.13 226.05,486.13 228.58,486.13 231.11,486.13 233.65,486.13 236.18,486.13 238.71,486.13 241.24,486.13 243.77,486.13 246.31,486.13 248.84,486.13 251.37,486.13 253.90,486.13 256.43,486.13 258.97,486.13 261.50,486.13 264.03,486.13 266.56,486.13 269.09,486.13 271.63,486.13 274.16,486.13 276.69,486.13 279.22,486.13 281.75,486.13 284.29,486.13 286.82,486.13 289.35,486.13 291.88,486.13 294.41,486.13 296.95,486.13 299.48,486.13 302.01,486.13 304.54,486.13 307.07,486.13 309.61,486.13 312.14,486.13 314.67,486.13 317.20,486.13 319.73,486.13 ' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<rect x='241.17' y='81.22' width='75.06' height='28.80' style='stroke-width: 0.75; fill: #FFFFFF;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<line x1='244.41' y1='95.62' x2='266.01' y2='95.62' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='255.21' cy='95.62' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='99.74' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='34.02px' lengthAdjust='spacingAndGlyphs'>parent</text></g> +<defs> + <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='> + <rect x='419.04' y='59.04' width='270.72' height='443.52' /> + </clipPath> +</defs> +<defs> + <clipPath id='cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA='> + <rect x='0.00' y='0.00' width='720.00' height='576.00' /> + </clipPath> +</defs> +<line x1='429.07' y1='502.56' x2='650.06' y2='502.56' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='429.07' y1='502.56' x2='429.07' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='484.32' y1='502.56' x2='484.32' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='539.56' y1='502.56' x2='539.56' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='594.81' y1='502.56' x2='594.81' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='650.06' y1='502.56' x2='650.06' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='425.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='477.64' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='532.89' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='588.14' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='643.39' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g> +<line x1='419.04' y1='486.13' x2='419.04' y2='112.81' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='486.13' x2='411.84' y2='486.13' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='392.80' x2='411.84' y2='392.80' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='299.47' x2='411.84' y2='299.47' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='206.14' x2='411.84' y2='206.14' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='112.81' x2='411.84' y2='112.81' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,399.48) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,306.15) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,212.82) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,119.49) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g> +<polyline points='419.04,502.56 689.76,502.56 689.76,59.04 419.04,59.04 419.04,502.56 ' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<defs> + <clipPath id='cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA=='> + <rect x='360.00' y='0.00' width='360.00' height='576.00' /> + </clipPath> +</defs> +<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text x='529.06' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='50.69px' lengthAdjust='spacingAndGlyphs'>Predicted</text></g> +<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text transform='translate(372.96,326.16) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='90.72px' lengthAdjust='spacingAndGlyphs'>Squared residual</text></g> +<defs> + <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='> + <rect x='419.04' y='59.04' width='270.72' height='443.52' /> + </clipPath> +</defs> +<circle cx='656.95' cy='454.40' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='596.86' cy='448.43' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='520.05' cy='443.17' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='455.81' cy='373.26' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='432.21' cy='143.91' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='429.11' cy='283.82' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='429.07' cy='411.47' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='429.07' cy='415.16' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='429.07' cy='484.45' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='429.07,384.23 431.35,384.23 433.62,384.23 435.90,384.23 438.18,384.23 440.46,384.23 442.74,384.23 445.02,384.23 447.30,384.23 449.58,384.23 451.85,384.23 454.13,384.23 456.41,384.23 458.69,384.23 460.97,384.23 463.25,384.23 465.53,384.23 467.81,384.23 470.08,384.23 472.36,384.23 474.64,384.23 476.92,384.23 479.20,384.23 481.48,384.23 483.76,384.23 486.04,384.23 488.32,384.23 490.59,384.23 492.87,384.23 495.15,384.23 497.43,384.23 499.71,384.23 501.99,384.23 504.27,384.23 506.55,384.23 508.82,384.23 511.10,384.23 513.38,384.23 515.66,384.23 517.94,384.23 520.22,384.23 522.50,384.23 524.78,384.23 527.05,384.23 529.33,384.23 531.61,384.23 533.89,384.23 536.17,384.23 538.45,384.23 540.73,384.23 543.01,384.23 545.28,384.23 547.56,384.23 549.84,384.23 552.12,384.23 554.40,384.23 556.68,384.23 558.96,384.23 561.24,384.23 563.52,384.23 565.79,384.23 568.07,384.23 570.35,384.23 572.63,384.23 574.91,384.23 577.19,384.23 579.47,384.23 581.75,384.23 584.02,384.23 586.30,384.23 588.58,384.23 590.86,384.23 593.14,384.23 595.42,384.23 597.70,384.23 599.98,384.23 602.25,384.23 604.53,384.23 606.81,384.23 609.09,384.23 611.37,384.23 613.65,384.23 615.93,384.23 618.21,384.23 620.48,384.23 622.76,384.23 625.04,384.23 627.32,384.23 629.60,384.23 631.88,384.23 634.16,384.23 636.44,384.23 638.72,384.23 640.99,384.23 643.27,384.23 645.55,384.23 647.83,384.23 650.11,384.23 652.39,384.23 654.67,384.23 656.95,384.23 ' style='stroke-width: 0.75; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<defs> + <clipPath id='cpNTkuMDR8Njg5Ljc2fDUwMi41Nnw1OS4wNA=='> + <rect x='59.04' y='59.04' width='630.72' height='443.52' /> + </clipPath> +</defs> +</svg> diff --git a/tests/figs/plotting/plot-errmod-with-focus-d-obs-eigen.svg b/tests/figs/plotting/plot-errmod-with-focus-d-obs-eigen.svg new file mode 100644 index 00000000..93e90dc5 --- /dev/null +++ b/tests/figs/plotting/plot-errmod-with-focus-d-obs-eigen.svg @@ -0,0 +1,201 @@ +<?xml version='1.0' encoding='UTF-8' ?> +<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 720.00 576.00'> +<defs> + <style type='text/css'><![CDATA[ + line, polyline, polygon, path, rect, circle { + fill: none; + stroke: #000000; + stroke-linecap: round; + stroke-linejoin: round; + stroke-miterlimit: 10.00; + } + ]]></style> +</defs> +<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/> +<line x1='69.07' y1='502.56' x2='319.73' y2='502.56' style='stroke-width: 0.75;' /> +<line x1='69.07' y1='502.56' x2='69.07' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='110.84' y1='502.56' x2='110.84' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='152.62' y1='502.56' x2='152.62' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='194.40' y1='502.56' x2='194.40' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='236.18' y1='502.56' x2='236.18' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='277.96' y1='502.56' x2='277.96' y2='509.76' style='stroke-width: 0.75;' /> +<line x1='319.73' y1='502.56' x2='319.73' y2='509.76' style='stroke-width: 0.75;' /> +<text x='65.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text> +<text x='104.17' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text> +<text x='145.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text> +<text x='187.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text> +<text x='229.51' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text> +<text x='267.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text> +<text x='309.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text> +<line x1='59.04' y1='486.13' x2='59.04' y2='83.68' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='486.13' x2='51.84' y2='486.13' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='405.64' x2='51.84' y2='405.64' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='325.15' x2='51.84' y2='325.15' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='244.66' x2='51.84' y2='244.66' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='164.17' x2='51.84' y2='164.17' style='stroke-width: 0.75;' /> +<line x1='59.04' y1='83.68' x2='51.84' y2='83.68' style='stroke-width: 0.75;' /> +<text transform='translate(41.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text> +<text transform='translate(41.76,412.31) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text> +<text transform='translate(41.76,331.82) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text> +<text transform='translate(41.76,251.33) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text> +<text transform='translate(41.76,170.84) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text> +<text transform='translate(41.76,93.68) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text> +<polyline points='59.04,502.56 329.76,502.56 329.76,59.04 59.04,59.04 59.04,502.56 ' style='stroke-width: 0.75;' /> +<defs> + <clipPath id='cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA='> + <rect x='0.00' y='0.00' width='360.00' height='576.00' /> + </clipPath> +</defs> +<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text x='181.29' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='26.22px' lengthAdjust='spacingAndGlyphs'>Time</text></g> +<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(12.96,306.81) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='52.02px' lengthAdjust='spacingAndGlyphs'>Observed</text></g> +<defs> + <clipPath id='cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA=='> + <rect x='59.04' y='59.04' width='270.72' height='443.52' /> + </clipPath> +</defs> +<circle cx='69.07' cy='85.85' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='69.07' cy='75.47' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='71.16' cy='109.84' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='71.16' cy='113.86' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='75.33' cy='231.66' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='75.33' cy='208.48' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='83.69' cy='275.57' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='83.69' cy='264.26' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='98.31' cy='376.38' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='98.31' cy='378.92' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='112.93' cy='439.85' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='112.93' cy='439.29' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='142.18' cy='474.66' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='142.18' cy='474.42' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='173.51' cy='483.36' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='173.51' cy='483.60' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='225.73' cy='485.93' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='225.73' cy='485.89' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='71.16,462.46 74.79,468.75 67.52,468.75 71.16,462.46 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='71.16,459.24 74.79,465.53 67.52,465.53 71.16,459.24 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='75.33,429.98 78.97,436.28 71.70,436.28 75.33,429.98 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='75.33,429.78 78.97,436.07 71.70,436.07 75.33,429.78 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='83.69,389.49 87.33,395.79 80.05,395.79 83.69,389.49 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='83.69,383.45 87.33,389.75 80.05,389.75 83.69,383.45 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='98.31,314.15 101.95,320.45 94.67,320.45 98.31,314.15 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='98.31,348.28 101.95,354.58 94.67,354.58 98.31,348.28 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='112.93,303.36 116.57,309.66 109.30,309.66 112.93,303.36 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='112.93,295.03 116.57,301.33 109.30,301.33 112.93,295.03 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='142.18,316.04 145.81,322.34 138.54,322.34 142.18,316.04 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='142.18,329.20 145.81,335.50 138.54,335.50 142.18,329.20 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='173.51,316.16 177.15,322.46 169.87,322.46 173.51,316.16 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='173.51,320.91 177.15,327.21 169.87,327.21 173.51,320.91 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='225.73,320.59 229.37,326.89 222.10,326.89 225.73,320.59 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='225.73,345.70 229.37,352.00 222.10,352.00 225.73,345.70 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='277.96,357.01 281.59,363.31 274.32,363.31 277.96,357.01 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='277.96,348.60 281.59,354.90 274.32,354.90 277.96,348.60 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='319.73,380.72 323.37,387.01 316.10,387.01 319.73,380.72 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='319.73,347.88 323.37,354.17 316.10,354.17 319.73,347.88 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='69.07,85.07 71.60,130.41 74.13,170.63 76.66,206.29 79.19,237.93 81.73,265.99 84.26,290.88 86.79,312.95 89.32,332.53 91.85,349.90 94.39,365.30 96.92,378.96 99.45,391.07 101.98,401.82 104.51,411.35 107.05,419.81 109.58,427.31 112.11,433.96 114.64,439.85 117.17,445.09 119.71,449.73 122.24,453.84 124.77,457.49 127.30,460.73 129.83,463.60 132.37,466.15 134.90,468.41 137.43,470.41 139.96,472.19 142.49,473.77 145.03,475.16 147.56,476.40 150.09,477.50 152.62,478.48 155.15,479.35 157.69,480.11 160.22,480.79 162.75,481.40 165.28,481.93 167.81,482.41 170.35,482.83 172.88,483.20 175.41,483.53 177.94,483.83 180.47,484.09 183.01,484.32 185.54,484.52 188.07,484.71 190.60,484.87 193.13,485.01 195.67,485.14 198.20,485.25 200.73,485.35 203.26,485.44 205.79,485.52 208.33,485.59 210.86,485.65 213.39,485.70 215.92,485.75 218.45,485.80 220.99,485.83 223.52,485.87 226.05,485.90 228.58,485.92 231.11,485.95 233.65,485.97 236.18,485.99 238.71,486.00 241.24,486.02 243.77,486.03 246.31,486.04 248.84,486.05 251.37,486.06 253.90,486.07 256.43,486.08 258.97,486.08 261.50,486.09 264.03,486.09 266.56,486.10 269.09,486.10 271.63,486.11 274.16,486.11 276.69,486.11 279.22,486.11 281.75,486.12 284.29,486.12 286.82,486.12 289.35,486.12 291.88,486.12 294.41,486.12 296.95,486.13 299.48,486.13 302.01,486.13 304.54,486.13 307.07,486.13 309.61,486.13 312.14,486.13 314.67,486.13 317.20,486.13 319.73,486.13 ' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='69.07,486.13 71.60,462.92 74.13,442.48 76.66,424.49 79.19,408.68 81.73,394.81 84.26,382.65 86.79,372.00 89.32,362.70 91.85,354.59 94.39,347.54 96.92,341.42 99.45,336.14 101.98,331.59 104.51,327.68 107.05,324.36 109.58,321.55 112.11,319.18 114.64,317.22 117.17,315.61 119.71,314.32 122.24,313.30 124.77,312.53 127.30,311.97 129.83,311.60 132.37,311.41 134.90,311.36 137.43,311.44 139.96,311.63 142.49,311.93 145.03,312.32 147.56,312.79 150.09,313.32 152.62,313.92 155.15,314.57 157.69,315.26 160.22,316.00 162.75,316.77 165.28,317.57 167.81,318.39 170.35,319.24 172.88,320.10 175.41,320.99 177.94,321.88 180.47,322.79 183.01,323.71 185.54,324.63 188.07,325.56 190.60,326.50 193.13,327.44 195.67,328.38 198.20,329.32 200.73,330.26 203.26,331.20 205.79,332.14 208.33,333.09 210.86,334.02 213.39,334.96 215.92,335.89 218.45,336.82 220.99,337.75 223.52,338.67 226.05,339.59 228.58,340.51 231.11,341.42 233.65,342.32 236.18,343.23 238.71,344.12 241.24,345.02 243.77,345.90 246.31,346.79 248.84,347.66 251.37,348.54 253.90,349.40 256.43,350.27 258.97,351.12 261.50,351.98 264.03,352.83 266.56,353.67 269.09,354.51 271.63,355.34 274.16,356.17 276.69,356.99 279.22,357.80 281.75,358.62 284.29,359.42 286.82,360.23 289.35,361.02 291.88,361.82 294.41,362.60 296.95,363.38 299.48,364.16 302.01,364.93 304.54,365.70 307.07,366.47 309.61,367.22 312.14,367.98 314.67,368.73 317.20,369.47 319.73,370.21 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<rect x='241.17' y='81.22' width='75.06' height='43.20' style='stroke-width: 0.75; fill: #FFFFFF;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<line x1='244.41' y1='95.62' x2='266.01' y2='95.62' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<line x1='244.41' y1='110.02' x2='266.01' y2='110.02' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<circle cx='255.21' cy='95.62' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<polyline points='255.21,105.82 258.84,112.12 251.57,112.12 255.21,105.82 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' /> +<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='99.74' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='34.02px' lengthAdjust='spacingAndGlyphs'>parent</text></g> +<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='114.14' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='16.67px' lengthAdjust='spacingAndGlyphs'>m1</text></g> +<defs> + <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='> + <rect x='419.04' y='59.04' width='270.72' height='443.52' /> + </clipPath> +</defs> +<defs> + <clipPath id='cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA='> + <rect x='0.00' y='0.00' width='720.00' height='576.00' /> + </clipPath> +</defs> +<line x1='429.07' y1='502.56' x2='657.74' y2='502.56' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='429.07' y1='502.56' x2='429.07' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='474.80' y1='502.56' x2='474.80' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='520.53' y1='502.56' x2='520.53' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='566.27' y1='502.56' x2='566.27' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='612.00' y1='502.56' x2='612.00' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='657.74' y1='502.56' x2='657.74' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='425.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='468.13' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='513.86' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='559.60' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='605.33' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='647.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g> +<line x1='419.04' y1='486.13' x2='419.04' y2='77.12' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='486.13' x2='411.84' y2='486.13' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='427.70' x2='411.84' y2='427.70' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='369.27' x2='411.84' y2='369.27' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='310.84' x2='411.84' y2='310.84' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='252.41' x2='411.84' y2='252.41' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='193.98' x2='411.84' y2='193.98' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='135.55' x2='411.84' y2='135.55' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<line x1='419.04' y1='77.12' x2='411.84' y2='77.12' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,434.37) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,375.94) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,317.51) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,259.08) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,203.99) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,145.56) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text></g> +<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,87.13) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>140</text></g> +<polyline points='419.04,502.56 689.76,502.56 689.76,59.04 419.04,59.04 419.04,502.56 ' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' /> +<defs> + <clipPath id='cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA=='> + <rect x='360.00' y='0.00' width='360.00' height='576.00' /> + </clipPath> +</defs> +<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text x='529.06' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='50.69px' lengthAdjust='spacingAndGlyphs'>Predicted</text></g> +<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text transform='translate(372.96,326.16) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='90.72px' lengthAdjust='spacingAndGlyphs'>Squared residual</text></g> +<defs> + <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='> + <rect x='419.04' y='59.04' width='270.72' height='443.52' /> + </clipPath> +</defs> +<circle cx='656.95' cy='486.02' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='656.95' cy='469.50' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='635.47' cy='455.53' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='635.47' cy='471.52' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='598.40' cy='143.91' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='598.40' cy='411.24' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='543.04' cy='468.21' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='543.04' cy='404.48' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='486.07' cy='470.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='486.07' cy='477.59' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='457.58' cy='483.39' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='457.58' cy='484.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='436.20' cy='485.92' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='436.20' cy='486.01' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='430.68' cy='486.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='430.68' cy='486.12' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='429.20' cy='486.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<circle cx='429.20' cy='486.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='440.07,481.93 443.70,488.23 436.43,488.23 440.07,481.93 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='440.07,479.93 443.70,486.22 436.43,486.22 440.07,479.93 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='458.89,481.88 462.53,488.18 455.25,488.18 458.89,481.88 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='458.89,481.91 462.53,488.21 455.25,488.21 458.89,481.91 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='486.39,469.07 490.03,475.37 482.75,475.37 486.39,469.07 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='486.39,480.89 490.03,487.19 482.75,487.19 486.39,480.89 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='513.00,409.28 516.63,415.58 509.36,415.58 513.00,409.28 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='513.00,446.29 516.63,452.59 509.36,452.59 513.00,446.29 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='524.31,460.34 527.95,466.64 520.67,466.64 524.31,460.34 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='524.31,414.94 527.95,421.23 520.67,421.23 524.31,414.94 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='528.07,469.36 531.70,475.66 524.43,475.66 528.07,469.36 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='528.07,398.48 531.70,404.78 524.43,404.78 528.07,398.48 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='523.28,481.93 526.91,488.23 519.64,488.23 523.28,481.93 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='523.28,477.80 526.91,484.10 519.64,484.10 523.28,477.80 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='512.39,443.02 516.03,449.32 508.76,449.32 512.39,443.02 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='512.39,462.33 516.03,468.63 508.76,468.63 512.39,462.33 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='502.21,479.31 505.85,485.61 498.58,485.61 502.21,479.31 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='502.21,478.12 505.85,484.42 498.58,484.42 502.21,478.12 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='494.93,442.92 498.57,449.22 491.30,449.22 494.93,442.92 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<polyline points='494.93,422.62 498.57,428.92 491.30,428.92 494.93,422.62 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<line x1='419.04' y1='452.34' x2='689.76' y2='452.34' style='stroke-width: 0.75; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<line x1='419.04' y1='462.32' x2='689.76' y2='462.32' style='stroke-width: 0.75; stroke: #FF0000; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' /> +<defs> + <clipPath id='cpNTkuMDR8Njg5Ljc2fDUwMi41Nnw1OS4wNA=='> + <rect x='59.04' y='59.04' width='630.72' height='443.52' /> + </clipPath> +</defs> +</svg> diff --git a/tests/testthat/FOCUS_2006_D.csf b/tests/testthat/FOCUS_2006_D.csf index 118f61f4..de5ee0a4 100644 --- a/tests/testthat/FOCUS_2006_D.csf +++ b/tests/testthat/FOCUS_2006_D.csf @@ -5,7 +5,7 @@ Description: MeasurementUnits: % AR TimeUnits: days Comments: Created using mkin::CAKE_export -Date: 2020-04-08 +Date: 2020-04-09 Optimiser: IRLS [Data] diff --git a/tests/testthat/test_nlme.R b/tests/testthat/test_nlme.R index 0d1fcd6d..efbc231a 100644 --- a/tests/testthat/test_nlme.R +++ b/tests/testthat/test_nlme.R @@ -31,6 +31,7 @@ test_that("nlme_function works correctly", { # The following assignment was introduced for nlme as evaluated by testthat # to find the function assign("nlme_f", nlme_f, pos = globalenv()) + assign("sampling_times", sampling_times, pos = globalenv()) m_nlme_raw <- nlme(value ~ SSasymp(time, 0, parent_0, log_k_parent_sink), data = grouped_data, @@ -68,7 +69,6 @@ test_that("nlme_function works correctly", { test_that("nlme_function works correctly in other cases", { dt50_in <- c(400, 800, 1200, 1600, 2000) - dt50_in_geomean <- geomean(dt50_in) k_in <- log(2) / dt50_in SFO <- mkinmod(parent = mkinsub("SFO")) pred_sfo <- function(k) { @@ -85,15 +85,16 @@ test_that("nlme_function works correctly in other cases", { names(ds_me_sfo_5) <- paste("Dataset", 1:15) dimnames(ds_me_sfo_5) <- list(Subset = 1:3, DT50 = dt50_in) - f_me_sfo_5 <- mmkin("SFO", ds_me_sfo_5) + f_me_sfo_5 <- mmkin("SFO", ds_me_sfo_5, quiet = TRUE) ds_me_sfo_5_grouped_mkin <- nlme_data(f_me_sfo_5) ds_me_sfo_5_mean_dp <- mean_degparms(f_me_sfo_5) me_sfo_function <- nlme_function(f_me_sfo_5) + assign("me_sfo_function", me_sfo_function, pos = globalenv()) f_nlme_sfo_5_all_mkin <- nlme(value ~ me_sfo_function(name, time, parent_0, log_k_parent_sink), - data = ds_me_sfo_5_grouped, + data = ds_me_sfo_5_grouped_mkin, fixed = parent_0 + log_k_parent_sink ~ 1, random = pdDiag(parent_0 + log_k_parent_sink ~ 1), start = ds_me_sfo_5_mean_dp) @@ -109,7 +110,7 @@ test_that("nlme_function works correctly in other cases", { # With less ideal starting values we get fits with lower AIC (not shown) f_nlme_sfo_5_all_mkin_nostart <- nlme(value ~ me_sfo_function(name, time, parent_0, log_k_parent_sink), - data = ds_me_sfo_5_grouped, + data = ds_me_sfo_5_grouped_mkin, fixed = parent_0 + log_k_parent_sink ~ 1, random = pdDiag(parent_0 + log_k_parent_sink ~ 1), start = c(parent_0 = 100, log_k_parent_sink = log(0.1))) diff --git a/tests/testthat/test_plots_summary_twa.R b/tests/testthat/test_plots_summary_twa.R index 77144665..c04192c1 100644 --- a/tests/testthat/test_plots_summary_twa.R +++ b/tests/testthat/test_plots_summary_twa.R @@ -99,6 +99,12 @@ test_that("Plotting mkinfit and mmkin objects is reproducible", { mkinerrplot_FOCUS_C_SFO <- function() mkinerrplot(fits[["SFO", "FOCUS_C"]]) mmkin_FOCUS_C <- function() plot(fits[, "FOCUS_C"]) mmkin_SFO <- function() plot(fits["SFO",]) + fit_D_obs_eigen <- suppressWarnings(mkinfit(SFO_SFO, FOCUS_2006_D, error_model = "obs", quiet = TRUE)) + fit_C_tc <- mkinfit("SFO", FOCUS_2006_C, error_model = "tc", quiet = TRUE) + + plot_errmod_fit_D_obs_eigen <- function() plot_err(fit_D_obs_eigen, sep_obs = FALSE) + plot_errmod_fit_C_tc <- function() plot_err(fit_C_tc) + plot_res_sfo_sfo <- function() plot_res(f_sfo_sfo_desolve) plot_err_sfo_sfo <- function() plot_err(f_sfo_sfo_desolve) plot_errmod_fit_obs_1 <- function() plot_err(fit_obs_1, sep_obs = FALSE) @@ -111,6 +117,10 @@ test_that("Plotting mkinfit and mmkin objects is reproducible", { vdiffr::expect_doppelganger("mkinerrplot for FOCUS C SFO", mkinerrplot_FOCUS_C_SFO) vdiffr::expect_doppelganger("mmkin plot for FOCUS C", mmkin_FOCUS_C) vdiffr::expect_doppelganger("mmkin plot for SFO (FOCUS C and D)", mmkin_SFO) + vdiffr::expect_doppelganger("plot_errmod with FOCUS D obs eigen", plot_errmod_fit_D_obs_eigen) + vdiffr::expect_doppelganger("plot_errmod with FOCUS C tc", plot_errmod_fit_C_tc) + skip_on_travis() # Still not working on Travis, presumably because of deSolve producing + # different results when not working with a compiled model vdiffr::expect_doppelganger("plot_res for FOCUS D", plot_res_sfo_sfo) vdiffr::expect_doppelganger("plot_err for FOCUS D", plot_err_sfo_sfo) vdiffr::expect_doppelganger("plot_errmod with SFO_lin_a_tc", plot_errmod_fit_tc_1) diff --git a/tests/testthat/test_residuals.R b/tests/testthat/test_residuals.R index 35a143f6..e6e54dd5 100644 --- a/tests/testthat/test_residuals.R +++ b/tests/testthat/test_residuals.R @@ -7,4 +7,13 @@ test_that("Residuals are correctly returned", { expect_equivalent( residuals(f, standardized = TRUE)[1:3], c(-0.4171812, 1.4584875, -1.0472450), tolerance = 0.0001) + + expect_equivalent( + residuals(fit_obs_1, standardized = TRUE)[1:3], + c(-0.21771169, -0.33576060, 2.02836138)) + + expect_equivalent( + residuals(fit_tc_1, standardized = TRUE)[1:3], + c(-0.2474499, -0.3794267, 2.2749216), + tolerance = 1e-7) }) |