Fit Virus
I hope you and your family remain safe and healthy over the coming weeks.
This unfortunate situation does provide interesting data to be analyzed. Milan has provided a set of functions with corresponding live script documents to study and predict the COVID-19 infection rates with a logistic regression.
Here is the plot for the regression applied to South Korea. You can see the logistic regression estimate from the previous dates and how well those line up with the actual infection rates and that Korea is currently transitioning out of the rapid rise of infections.
fitVirus03(@getDataSouthKorea);
**** Estimation of epidemy size for South Korea Initial guess K = 7940.33 r = 5.12261 A = 1186.3 Regression parameters for complet data set mdl = Nonlinear regression model: y ~ fitVirus03/fun(b,X) Estimated Coefficients: Estimate SE tStat pValue ________ _______ ______ __________ K 7944.1 87.914 90.363 1.3377e-27 r 0.37476 0.01125 33.311 5.377e-19 A 93.692 11.063 8.4691 4.7801e-08 Number of observations: 23, Error degrees of freedom: 20 Root Mean Squared Error: 126 R-Squared: 0.998, Adjusted R-Squared 0.998 F-statistic vs. zero model: 1.04e+04, p-value = 4.15e-32 Evaluation of model parameters for South Korea day date C K r C0 Tau end dCdt tpeak peak R2 (cases) (cases) (1/day) (cases) (day) (c/day) (day) 12 29-Feb-2020 3150 17145 0.328 102 12 19-Mar-2020 1405 15 04-Mar-2020 0.995 13 01-Mar-2020 4212 36984 0.313 109 12 25-Mar-2020 2896 18 07-Mar-2020 0.997 14 02-Mar-2020 4812 10186 0.363 84 11 15-Mar-2020 923 13 02-Mar-2020 0.996 15 03-Mar-2020 5328 7833 0.398 67 10 11-Mar-2020 779 11 29-Feb-2020 0.996 16 04-Mar-2020 5766 7224 0.418 58 9 11-Mar-2020 754 11 29-Feb-2020 0.997 17 05-Mar-2020 6284 7248 0.417 58 9 11-Mar-2020 755 11 29-Feb-2020 0.997 18 06-Mar-2020 6767 7447 0.406 64 9 11-Mar-2020 756 11 29-Feb-2020 0.998 19 07-Mar-2020 7134 7632 0.396 69 10 11-Mar-2020 754 11 29-Feb-2020 0.998 20 08-Mar-2020 7382 7751 0.388 74 10 11-Mar-2020 752 11 29-Feb-2020 0.998 21 09-Mar-2020 7513 7798 0.385 76 10 11-Mar-2020 751 11 29-Feb-2020 0.998 22 10-Mar-2020 7755 7883 0.379 80 10 13-Mar-2020 747 12 01-Mar-2020 0.998 23 11-Mar-2020 7869 7944 0.375 83 10 13-Mar-2020 744 12 01-Mar-2020 0.998 Short-term forecasting for South Korea day date actual predict error % c./day act. c./day pred. error % 18 06-Mar-2020 6767 6847 1.18 483 405 16.15 19 07-Mar-2020 7134 7156 0.31 367 309 15.80 20 08-Mar-2020 7382 7385 0.04 248 229 7.66 21 09-Mar-2020 7513 7551 0.51 131 166 26.72 22 10-Mar-2020 7755 7669 1.11 242 118 51.24 23 11-Mar-2020 7869 7753 1.47 114 84 26.32 24 12-Mar-2020 - 7812 - - 59 25 13-Mar-2020 - 7853 - - 41 26 14-Mar-2020 - 7881 - - 28 27 15-Mar-2020 - 7901 - - 20 28 16-Mar-2020 - 7914 - - 13 29 17-Mar-2020 - 7923 - - 9
Comparing this with Italy, we can see that milan’s model is estimating the rapid rise will continue for awhile longer.
fitVirus03(@getDataItaly);
**** Estimation of epidemy size for Italy Initial guess K = 15178.9 r = 3.3881 A = 680.978 Regression parameters for complet data set mdl = Nonlinear regression model: y ~ fitVirus03/fun(b,X) Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ K 29124 4017.3 7.2498 1.9414e-06 r 0.26146 0.011355 23.027 1.0785e-13 A 150.53 11.185 13.459 3.8388e-10 Number of observations: 19, Error degrees of freedom: 16 Root Mean Squared Error: 166 R-Squared: 0.998, Adjusted R-Squared 0.998 F-statistic vs. zero model: 5.97e+03, p-value = 1.35e-24 Evaluation of model parameters for Italy day date C K r C0 Tau end dCdt tpeak peak R2 (cases) (cases) (1/day) (cases) (day) (c/day) (day) 10 02-Mar-2020 2036 4970 0.394 99 10 11-Mar-2020 490 9 02-Mar-2020 0.996 11 03-Mar-2020 2502 4574 0.403 96 9 11-Mar-2020 461 9 02-Mar-2020 0.998 12 04-Mar-2020 3089 5399 0.381 105 10 13-Mar-2020 514 10 03-Mar-2020 0.998 13 05-Mar-2020 3858 7463 0.343 124 11 15-Mar-2020 639 11 04-Mar-2020 0.998 14 06-Mar-2020 4636 8999 0.325 135 12 17-Mar-2020 730 12 05-Mar-2020 0.998 15 07-Mar-2020 5883 15152 0.287 166 13 23-Mar-2020 1086 15 08-Mar-2020 0.998 16 08-Mar-2020 7382 28837 0.261 193 15 31-Mar-2020 1881 19 12-Mar-2020 0.998 17 09-Mar-2020 9172 49198 0.248 209 16 04-Apr-2020 3054 21 14-Mar-2020 0.998 18 10-Mar-2020 10149 23859 0.273 175 14 27-Mar-2020 1628 17 10-Mar-2020 0.998 19 11-Mar-2020 12462 29124 0.261 192 15 31-Mar-2020 1903 19 12-Mar-2020 0.998 Short-term forecasting for Italy day date actual predict error % c./day act. c./day pred. error % 14 06-Mar-2020 4636 4831 4.21 778 964 23.91 15 07-Mar-2020 5883 5978 1.61 1247 1147 8.02 16 08-Mar-2020 7382 7316 0.89 1499 1338 10.74 17 09-Mar-2020 9172 8839 3.63 1790 1523 14.92 18 10-Mar-2020 10149 10525 3.70 977 1686 72.57 19 11-Mar-2020 12462 12338 1.00 2313 1813 21.62 20 12-Mar-2020 - 14224 - - 1886 21 13-Mar-2020 - 16122 - - 1898 22 14-Mar-2020 - 17968 - - 1846 23 15-Mar-2020 - 19704 - - 1736 24 16-Mar-2020 - 21288 - - 1584 25 17-Mar-2020 - 22693 - - 1405
The current state of Italy also compares well to the current state of the whole world outside of China.
fitVirus03(@getDataWorld);
**** Estimation of epidemy size for outside of China ***Warning: Fail to calculate initial quess. Use default. Initial guess K = 45411 r = 0.5 A = 45411 Regression parameters for complet data set mdl = Nonlinear regression model: y ~ fitVirus03/fun(b,X) Estimated Coefficients: Estimate SE tStat pValue __________ _________ ______ __________ K 1.1398e+05 8373.7 13.611 2.2411e-17 r 0.20839 0.0042262 49.31 3.774e-40 A 18334 1653.8 11.086 2.525e-14 Number of observations: 46, Error degrees of freedom: 44 Root Mean Squared Error: 311 R-Squared: 0.999, Adjusted R-Squared 0.999 F-statistic vs. zero model: 4.04e+04, p-value = 1.53e-72 Evaluation of model parameters for outside of China day date C K r C0 Tau end dCdt tpeak peak R2 (cases) (cases) (1/day) (cases) (day) (c/day) (day) 23 17-Feb-2020 896 2952775 0.105 86 37 11-Aug-2020 77719 99 04-May-2020 0.994 24 18-Feb-2020 999 3724881 0.106 85 37 13-Aug-2020 98804 100 05-May-2020 0.995 25 19-Feb-2020 1124 3933032 0.107 84 37 13-Aug-2020 105326 100 05-May-2020 0.996 26 20-Feb-2020 1212 3622161 0.110 79 36 07-Aug-2020 99347 97 02-May-2020 0.996 27 21-Feb-2020 1385 1939550 0.107 84 37 30-Jul-2020 51957 93 28-Apr-2020 0.998 28 22-Feb-2020 1715 3615812 0.112 76 35 03-Aug-2020 101504 95 30-Apr-2020 0.994 29 23-Feb-2020 2055 2982829 0.120 65 33 22-Jul-2020 89482 89 24-Apr-2020 0.990 30 24-Feb-2020 2429 3167110 0.127 57 31 16-Jul-2020 100206 86 21-Apr-2020 0.988 31 25-Feb-2020 2764 4075977 0.131 51 30 14-Jul-2020 133744 85 20-Apr-2020 0.990 32 26-Feb-2020 3332 1908412 0.139 42 28 26-Jun-2020 66549 76 11-Apr-2020 0.990 33 27-Feb-2020 4288 1421367 0.152 30 26 14-Jun-2020 53853 70 05-Apr-2020 0.986 34 28-Feb-2020 5373 2776810 0.165 21 24 16-Jun-2020 114571 71 06-Apr-2020 0.985 35 29-Feb-2020 6789 7273608 0.180 13 22 20-Jun-2020 327757 73 08-Apr-2020 0.986 36 01-Mar-2020 8564 9574865 0.194 9 20 16-Jun-2020 464267 71 06-Apr-2020 0.989 37 02-Mar-2020 10298 33497614 0.199 7 20 26-Jun-2020 1664896 76 11-Apr-2020 0.992 38 03-Mar-2020 12751 8758570 0.203 6 19 12-Jun-2020 443969 69 04-Apr-2020 0.995 39 04-Mar-2020 14907 50617907 0.199 7 20 30-Jun-2020 2516184 78 13-Apr-2020 0.996 40 05-Mar-2020 17855 753574 0.198 8 20 19-May-2020 37234 57 23-Mar-2020 0.997 41 06-Mar-2020 21393 188240 0.204 6 19 05-May-2020 9599 50 16-Mar-2020 0.998 42 07-Mar-2020 25408 147511 0.207 6 19 01-May-2020 7631 48 14-Mar-2020 0.999 43 08-Mar-2020 29255 103948 0.214 5 18 27-Apr-2020 5564 46 12-Mar-2020 0.999 44 09-Mar-2020 33627 91962 0.218 4 18 25-Apr-2020 5015 45 11-Mar-2020 0.999 45 10-Mar-2020 38169 87077 0.221 4 18 25-Apr-2020 4801 45 11-Mar-2020 0.999 46 11-Mar-2020 45411 113974 0.208 6 19 29-Apr-2020 5937 47 13-Mar-2020 0.999 Short-term forecasting for outside of China day date actual predict error % c./day act. c./day pred. error % 41 06-Mar-2020 21393 21120 1.28 3538 3353 5.23 42 07-Mar-2020 25408 24943 1.83 4015 3823 4.78 43 08-Mar-2020 29255 29240 0.05 3847 4297 11.70 44 09-Mar-2020 33627 33994 1.09 4372 4754 8.74 45 10-Mar-2020 38169 39164 2.61 4542 5170 13.83 46 11-Mar-2020 45411 44680 1.61 7242 5516 23.83 47 12-Mar-2020 - 50450 - - 5770 48 13-Mar-2020 - 56359 - - 5909 49 14-Mar-2020 - 62282 - - 5923 50 15-Mar-2020 - 68091 - - 5809 51 16-Mar-2020 - 73670 - - 5579 52 17-Mar-2020 - 78920 - - 5250
As for some subtle things to make this easier for milan:
- The data are being entered in the MATLAB *.m files themselves using a construct we call “data as code”. It might make more sense to just store the data in a CSV file and read that in with readtable. All data could be stored in one file and the corresponding variable extracted as necessary. I think this would make updating it easier too.
- Since milan is keeping this current(!) it might make sense to link the repository to GitHub so a simple git commit/push would do the update rather than having to go through the File Exchange. It would also allow anyone to go to a previous state and see the record from that time.
Comments
Give it a try and let us know what you think here or leave a comment for milan.
Published with MATLAB® R2020a
- Category:
- Picks
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.