מה המתמטיקה שמאחורי התפשטות מחלות מדבקות?
כפי שרובכם בוודאי יודעים, בימים אלו מתחוללת בארץ מהומה סביב מחלת הפוליו. סקירה טובה של המחלה וההתפרצות הנוכחית בפרט אפשר למצוא בבלוג של קרן לנדסמן כאן וכאן (וזו הזדמנות טובה להגיד תודה ענקית לד"ר לנדסמן שחשפה אותי לכל הנושא המרתק הזה, ענתה לאינספור שאלות מטופשות שלי עליו ובאופן כללי עושה מלאכת קודש בנוגע אליו) אך בכל זאת אסביר בקצרה במה מדובר כי זה יהיה רלוונטי להמשך הפוסט.
פוליו היא מחלה נגיפית שעלולה לגרום לשיתוק ואפילו למוות, וגם עשתה בדיוק את זה ללא הפסקה ברחבי העולם בחצי הראשון של המאה ה-20. בשנים האחרונות היא הוכחדה ממרבית מדינות העולם כמעט לחלוטין, וממשיכה להשתולל רק בשלוש מדינות - ניגריה, פקיסטן ואפגניסטן. איך זה קרה? ובכן, כל מדינות העולם משתמשות בחיסון נגד המחלה למעט שלוש מדינות אלו.
מהו חיסון? ובכן, כנגד מחלות מסויימות הגוף יודע לייצר נוגדנים שמסוגלים להתמודד עם גורמי המחלה ולהשמיד אותם. פוליו היא מחלה כזו. הבעיה מתחילה כשתופסים את הגוף לא מוכן ונגיפי הפוליו פולשים לגוף מבלי שבגוף יהיו נוגדנים. הרעיון בחיסון הוא להקדים תרופה למכה - לגרום לגוף לייצר בצורה כלשהי את הנוגדנים מבלי לגרום להשפעות המזיקות של המחלה עצמה. בשנות ה-50 של המאה ה-20 פותחו שני סוגים שונים של חיסוני פוליו שעושים בדיוק את זה - "החיסון המומת", IPV (קיצור של Inactivated polio vaccine) ו"החיסון המוחלש", OPV (קיצור של Oral polio vaccine). בשניהם הגוף מקבל "דגימה" של נגיף הפוליו, בגרסה שמנטרלת את היכולות המזיקות של הנגיף, וכתוצאה מכך הגוף עשוי לפתח נוגדנים. לא מובטח ב-100 אחוז שיתפתחו נוגדנים ולכן נהוג לתת מספר מנות חיסון בהפרשי זמנים מסויימים, אבל לא ניכנס לפרטים הללו כאן.
יש שני הבדלים עקרוניים בין IPV ובין OPV. כדי להבין את ההבדל הראשון, המהותי, צריך להבין איך נגיף הפוליו פועל: הוא חי ומתרבה במעי של האדם שנושא אותו, ומשם הוא גם מופרש ועשוי להדביק אנשים אחרים. עם זאת, כל עוד הוירוס במעי האדם לא יכול ללקות בשיתוק כתוצאה ממחלת הפוליו; לצורך כך הנגיף צריך לפלוש אל מחזור הדם. שני החיסונים גורמים ליצירת נוגדנים במחזור הדם של האדם ולכן מונעים מנגיף הפוליו לפלוש לשם ולגרום לשיתוק; עם זאת, OPV עושה משהו נוסף - הוא מייצר נוגדנים גם במעי עצמו, ובכך מונע את היכולת של הנגיף להתקיים ולהתרבות שם.
במילים אחרות, מי שחוסן ב-IPV לא יכול ללקות בשיתוק כתוצאה מהמחלה, אבל הוא יכול להדביק אחרים בנגיף, ואם אותם אחרים אינם מחוסנים, הם עלולים להפוך למשותקים. מי לא מחוסנים? בין היתר: ילדים שהוריהם לא חיסנו אותם; אנשים בעלי מחלות קשות שמקבלים תרופות מדכאות חיסון; אנשים בעלי מחלות קשות שפגעו במערכת החיסון שלהם; ואנשים שחוסנו כהלכה נגד המחלה אבל לא התפתחו אצלם נוגדנים. כאשר יש התפרצות של פוליו, האנשים הללו הם היעד מס' 1 של הנגיף: אם הוא מגיע אליהם, הם בצרות. הדרך הטובה ביותר להתמודד עם הנגיף היא למנוע ממנו להגיע אל האנשים הללו מלכתחילה. וכדי לעשות את זה צריך למנוע מהנגיף להפיץ את עצמו. כלומר, צריך חיסון ב-OPV. אז למה בכלל לא לחסן ב-OPV? ניהול סיכונים. בעבר חיסון ה-OPV גרם לתופעות לוואי קשות, עד כדי מחלת הפוליו עצמה. הסיכוי לתופעות הלוואי הללו היה זעום - 1 ל-2.5 מיליון מקרים, בעוד שהנגיף "הרגיל" של פוליו גורם למחלה ב-1 מתוך 1,000 מקרים. עם הזמן התברר שחיסון ב-IPV לפני חיסון ב-OPV מעלים את תופעות הלוואי הללו לחלוטין, ובנוסף גם הסירו מה-OPV את החיסון נגד זן 2 (מתוך שלושה) של הפוליו כי הוא כנראה נכחד מהעולם, וזן זה בחיסון היה אחראי למרבית הבעיות - אבל עדיין, ניהול סיכונים. הגישה הרווחת כעת בעולם היא שכל עוד במדינה אין זכר לנגיף הפוליו האמיתי, לא מומלץ לחסן ב-OPV. בישראל חיסנו בשיטה של IPV-ואז-OPV במשך 15 שנים (מ-1990 עד 2005) מבלי שאיש יחלה בפוליו עקב החיסון, ועדיין הוחלט להפסיק עם זה, כך שילדים שנולדו ב-8 השנים האחרונות לא קיבלו OPV.
מה שקורה אצלנו הוא שעכשיו גילו את הנגיף האמיתי, והמעקב אחריו מראה שהוא הולך ומתפשט, כבר חצי שנה, ולא נעצר. המטרה של מבצע החיסונים הנוכחי היא לעצור אותו.
לכאורה, מדובר על עניין פשוט: לחסן את כל מי שטרם קיבל OPV, וחסל. בפועל, עניין מסובך: מי שלא חוסנו הם ילדים קטנים, והדילמה הלא פשוטה האם לחסן אותם נופלת על ההורים, שמשוללים ברובם השכלה רפואית ורואים (במידת מה של צדק) את הסיטואציה בתור "תסכן את הילד הקטן שלך כדי להגן על שאר האוכלוסיה". כדי להוסיף שמן למדורה ישנם טיפוסים שונים ומשונים שכותבים מניפסטים עמוסים בהבלים (או סתם שקרים) שמטרתם לבלבל את הציבור ולחשוב שעושים ניסוי על הציבור, או שחיסונים זה שקר, או שפוליו בכלל זה שקר, או שמחלות זה שקר (אבל שהומאופתיה זו אמת). מה אומר לכם, מזלי שאני עוסק במתמטיקה: הטרחנים הכפייתיים שלי לכל היותר יגרמו לאנשים להבין לא נכון את מושג האינסוף; הטרחנים הכפייתיים של החיסונים עלולים לגרום לאנשים למות.
אני לא רוצה להיכנס כאן לדיון חיסונים-בעד-או-נגד. אם תשאלו את דעתי הלא מקצועית, אין ספק שבעד, אבל כבר יש מספיק מקומות אחרים ברחבי האינטרנט הישראל שעוסקים בשאלה מדוע בעד, ומנפצים לרסיסים את הקשקשת של מכחישי החיסונים. אני מבהיר מראש שגם אין לי כוונה לקיים בתגובות כאן דיון בעניין ובניגוד למנהגי גם אמחק הודעות בנושא - כי המטרה שלי היא עדיין לדבר על מתמטיקה. ואיך מתמטיקה קשורה לכל הפרשה העגומה הזו?
ובכן, הדיון עד כה מעורר שאלה מטרידה אחת - אם תמיד יהיו באוכלוסיה אנשים שאינם מחוסנים נגד המחלה (למשל, מדוכאי חיסון), איך אפשר יהיה לעצור אותה? האם לא הכרחי להגיע לרמה של 100 אחוזי חיסון כדי שהמחלה תיעצר? התשובה היא שכמובן, לא. אם אחוז גדול מספיק של האוכלוסיה יהיה מחוסן כנגד המחלה, זה הסוף שלה - דינה יהיה להיכחד. השאלה מה האחוז הזה - וכמובן, זה מאוד תלוי במחלה. וכמובן, כשאני אומר "אחוז" אני בעצם מתכוון "ההסתברות שאדם אקראי שנדגם מהאוכלוסיה יהיה מחוסן"; כי אם נחסן את כל המדינה חוץ מעיר אחת אולי רוב המדינה תהיה בסדר, אבל המחלה תמשיך להשתולל בעיר האחת הזו ולא תיכחד ממנה. צריך שהחיסון יהיה אחיד יחסית.
העניין הזה הוא לא סתם שעשוע במספרים; זה נתון שקובע מדיניות כלל עולמית בהתמודדות עם מחלות. עבור אבעבועות שחורות ההערכה הייתה שהאחוז הוא בסביבות ה-80 עד 85 אחוז, ולכן שיש תקווה להכחיד את המחלה לחלוטין מהעולם באמצעות מבצע חיסון כלל-עולמי. מבצע שכזה הוא אתגר לוגיסטי ענק, אבל באופן די מדהים הוא הצליח: מחלת האבעבועות השחורות אכן נכחדה מהעולם. מחלה שהרגה עשרות מיליוני אנשים לאורך ההיסטוריה ובשנות ה-50 של המאה ה-20 פגעה ב-50 מיליון אנשים בשנה - פשוט נכחדה. מחלת הפוליו היא יעד דומה להכחדה שכזו, אך כל עוד קיימות בעולם מדינות שנמנעות באופן גורף מחיסון, הכחדה שכזו היא בלתי אפשרית.
בואו נעבור עכשיו לדבר על האופן שבו מבחינה מתמטית אנו מנסים להבין התפשטות של מחלות כדוגמת פוליו או אבעבועות שחורות. נתחיל באבחנה הפשוטה הבאה - רפואה זה עניין מורכב. המציאות זה עניין מורכב. נסיון לתיאור מדויק של התפשטות מחלה באמצעיים מתמטיים הוא קשה ביותר עד בלתי אפשרי, ולכן לא עושים את זה. מה שכן עושים הוא לבנות מודל שמתאר את התפשטות המחלה - מודל שהוא הפשטה מתמטית. מודלים הם אף פעם לא מדויקים; הם תמיד נותנים רק קירוב, או הערכה, של המצב האמיתי. רק שלעתים קרובות ההערכה הזו היא טובה מאוד ומאפשרת לנו לקבל מידע מועיל.
בפוסט הזה אני הולך להציג מודל שהוא פשטני מאוד, פשוט כי זה מה שקל להציג; בפועל עובדים עם מודלים יותר מתוחכמים, שמרחיבים את הרעיונות הבסיסיים שאציג כאן. לכן אני אפילו לא מתיימר להיות מסוגל להפיק נתונים מספריים נכונים מתוך המודל; מה שאני כן רוצה לראות הוא את ההתנהגות של המודל ולראות האם היא מתארת התנהגות שאכן אופיינית למחלות.
במודל שאציג, אפשר לחלק את האוכלוסיה לשלוש קבוצות: אנשים שפגיעים למחלה (Susceptible), אנשים שחולים במחלה ולכן הם מדבקים (Infectious), ואנשים שכבר אינם פגיעים למחלה או מעבירים אותה, ולכן הם הוסרו מרשימת האנשים הרלוונטית למחלה (Removed). "הסרה" כמובן כוללת את המקרה המורבידי של אנשים שמתו מהמחלה, אבל היא גם כוללת את המקרה המשמח של אנשים שהחלימו ללא פגע והנוגדנים שנוצרו בגופם עקב המחלה מגינים עליהם מהידבקות מחודשת (וישנם גם מקרים משמחים הרבה פחות של אנשים ששרדו את המחלה ופיתחו נוגדנים אבל המחלה גרמה להם לנזק לכל החיים - פוליו היא מחלה ידועה לשמצה מהבחינה הזו). התהליך שהמחלה מעבירה את האוכלוסיה הוא מהקבוצה S של הפגיעים, לקבוצה I של המדבקים, ומשם לקבוצה R של המוסרים, ולכן המודל נקרא מודל SIR. אפשר לדבר גם על מודלים שונים שמתארים מחלות שונות; למשל, מחלות הנגרמות על ידי בקטריות הן לרוב מסוג SIS, כלומר לאחר שאדם הפסיק להיות מדבק הוא חוזר להיות פגיע ולא מפתח חיסון. אני הולך לדבר רק על SIR (שהוא המודל של פוליו).
בואו נניח בינתיים שיש לנו אוכלוסיה בעלת גודל קבוע, \( N \). נסמן ב-\( S\left(t\right),I\left(t\right),R\left(t\right) \) את מספר האנשים בכל אחת משלוש הקבוצות בכל נקודת זמן \( t \); זה מגדיר לנו שלוש פונקציות \( S,I,R \) שמקיימות \( S+I+R=N \) (כלומר, סכום שלוש הפונקציות הללו הוא פונקציה קבועה שמחזירה את המספר \( N \) לכל ערך). עכשיו, מה שמעניין אותנו הוא ההשתנות על פני זמן של שלוש הפונקציות הללו; הכלי המתמטי הסטנדרטי לחקירה של שינוי כזה הוא החשבון הדיפרנציאלי. מה שאני רוצה למצוא הוא תיאור של הנגזרות של \( S,I,R \) (חשבו על זה כך: אם \( f \) היא פונקציה שמתארת מיקום של כדור כפונקציה של זמן, הנגזרת שלה היא המהירות של הכדור - קצב השינוי של המיקום שלו).
השאלה הראשונה היא - כמה אנשים מתוך \( S \) צפוי שיידבקו על ידי אנשים מתוך \( I \) בכל יחידת זמן?
אנחנו מניחים פיזור אחיד של כל האוכלוסיות (הנחה פשטנית - המודל פשטני). עכשיו, בואו נתמקד בנשא יחיד של המחלה. הוא חי לו את חייו ומסתובב ברחוב ויוצר קשר עם אנשים וברוב המקרים כנראה ששום דבר לא קורה. אבל בחלק מהמקרים הוא יוצר קשר עם אנשים בצורה שתדביק אותם, בהינתן שהם שייכים ל-\( S \). במקרה של פוליו, הקשר הזה יכול לבוא לידי ביטוי בכך שהוא נוגע עם ידיים מלוכלכות (לא נגיד מלוכלכות במה...) בחפץ כלשהו שאחר כך נוגעים בו אנשים אחרים, לא מנקים את הידיים ואז נוגעים איתן באוכל. במקרה של מחלה כמו איידס, הקשר הזה לרוב מתבטא ביחסי מין לא מוגנים. כפי שאנחנו רואים, טיב הקשר יכול להיות שונה ומשונה, אבל זה לא הולך לעניין אותנו כאן - אנחנו נכניס לתמונה איזה פרמטר \( \beta \) שהוא משהו שמאפיין את המחלה, ואומר שבממוצע נשא של המחלה, כשהוא באוכלוסיה בגודל \( N \), יוצר מגע שמסוגל להדביק עם \( \beta N \) מהאוכלוסיה בכל יחידת זמן.
עכשיו, עם כמה אנשים ב-\( S \) הנשא יצור מגע-שגורם-להדבקה ביחידת זמן? תחת הנחת הפיזור האחיד החלק היחסי של \( S \) באוכלוסיה שהנשא פוגש הוא \( \frac{S}{N} \), ולכן המספר הוא, \( \beta N\cdot\frac{S}{N}=\beta S \). עכשיו צריך להכפיל את זה ב-\( I \) נשאים, ומקבלים שבכל יחידת זמן, \( \beta SI \) מהאנשים יעברו מהקבוצה \( S \) לקבוצה \( I \).
מה שעוד קורה בזמן הזה הוא שאנשים יוצאים מ-\( I \) ועוברים ל-\( R \) - בין אם בנסיבות משמחות ובין אם לאו. גם כאן, הקצב שבו זה קורה הוא פרמטר כלשהו של המחלה; נסמן ב-\( \alpha \) את הפרמטר שמתאר את הסיכוי של מישהו ב-\( I \) לעבור ל-\( R \) בכל יחידת זמן (שוב, יש כאן הנחת פיזור אחיד כלשהי - מה?). נקבל ש-\( I \) מאבדים בכל יחידת זמן \( \alpha I \) חברים, שעוברים ל-\( R \).
עם נגזרות זה מתואר בשלוש המשוואות הבאות:
\( S^{\prime}=-\beta SI \)
\( I^{\prime}=\beta SI-\alpha I=\left(\beta S-\alpha\right)I \)
\( R^{\prime}=\alpha I \)
זה המודל: מערכת של משוואות דיפרנציאליות. אבל מה אנחנו לומדים ממנו? בדרך כלל כשאומרים "משוואות" אנחנו חושבים על משהו שכל המטרה שלנו היא לפתור אותו, אבל כאן לא ברור אם יש דרך הצגה יפה עבור פתרונות של מערכת המשוואות הזו; מה שמעניין אותנו הוא לא לפתור את המשוואות, אלא להבין איך הפתרונות מתנהגים.
למערכת המשוואות שלעיל יש פתרון יחיד בהינתן תנאי התחלה מסויימים: אם \( S_{0},I_{0},R_{0} \) הם קבועים כלשהם אז קיימת בדיוק שלשה אחת של פונקציות \( S,I,R \) שמקיימות את המשוואות הדיפרנציאליות וכמו כן \( S\left(0\right)=S_{0},I\left(0\right)=I_{0} \) ו-\( R\left(0\right)=R_{0} \). מכיוון שאנחנו רוצים למדל התפרצות של מגיפה, אפשר להניח ש-\( S_{0},I_{0} \) שניהם חיוביים בזמן ש-\( R_{0}=0 \).
כעת, מה אנחנו רואים? ראשית, שכל עוד \( I,S \) הם חיוביים, אז \( S \) היא פונקציה יורדת כי הנגזרת שלה שלילית. כמו כן \( R \) היא פונקציה עולה כל עוד \( I \) חיובי. ההתנהגות המעניינת היא של \( I \) עצמו. מכיוון ש-\( I \) ו-\( S \) חיוביים, הערך של \( I^{\prime} \) יהיה חיובי כל עוד \( \beta S-\alpha>0 \), כלומר כל עוד \( S>\frac{\alpha}{\beta} \). במילים אחרות, מספר האנשים באוכלוסיה שעדיין פגיעים למחלה חייב להיות גדול מקבוע כלשהו, שמאפיין את המחלה, כדי שהמחלה תוסיף להתפשט. ברגע ש-\( S \) נהיה קטן יותר מהסף הקריטי הזה, כמות החולים באוכלוסייה מתחילה לרדת. כל זה נשמע די מובן מאליו כשחושבים על זה בהגיון גם בלי מתמטיקה, אבל זה כבר מעודד שהמודל הפשוט שלנו מספק תוצאות הגיוניות; כך אפשר להרגיש שיש בסיס לבנות עליו את ההמשך.
ועכשיו בואו נפנה את מבטנו לרגע אל הזמן \( t=0 \). המגיפה בדיוק התחילה להשתולל - יש לנו כמות חיובית \( I \) כלשהי של אנשים שנושאים את המחלה (למשל, נוסעים מחו"ל). האם המחלה תתפרץ בתור מגיפה? ובכן, אם \( S_{0}>\frac{\alpha}{\beta} \) אז מספר החולים יתחיל לעלות עד שיגיע לשיא כלשהו; אם \( S_{0}\le\frac{\alpha}{\beta} \) מספר החולים רק יקטן ולא תהיה לנו מגיפה. זה מוביל אותנו להגדרה הבאה: \( \mathcal{R}_{0}=\frac{\beta S_{0}}{\alpha} \) הוא מספר שנקרא ה-Basic reproduction number של המחלה. אם הוא גדול מ-1, אז המחלה תתפשט; אם הוא קטן מ-1, היא תגווע. אפשר לחשוב על המספר הזה כמייצג את התשובה לשאלה הבאה: נניח שאנחנו לוקחים אוכלוסיה שכולה מורכבת מאנשים שפגיעים למחלה, מניחים בתוכה אדם שזה עתה הפך לנגוע במחלה ומחכים לראות מה קורה - מה יהיה (בממוצע) מספר האנשים שאותו אדם ידביק לפני שיעבור מ-\( I \) אל \( R \)? שימו לב; לא מדובר כאן על "ביחידת זמן" אלא לאורך כל "מחזור החיים" של המחלה בתוך אותו אדם.
המודל שלנו אמנם פשטני, אבל המספר \( \mathcal{R}_{0} \) הזה (אני כותב אותו באופן מסולסל כדי לא לבלבל אותו עם ה-\( R \) שכבר יש לנו כאן - אלו דברים שונים) הוא מושג קיים באפידימיולוגיה ומככב גם במודלים מורכבים יותר. כמובן שבהינתן מחלה מסויימת אין לה ערך \( \mathcal{R}_{0} \) יחיד שמאפיין אותה - זה תלוי בסביבה שבה המחלה מתפרצת - אבל עדיין יש טווח ערכים סטנדרטי שבו \( \mathcal{R}_{0} \) עשוי להימצא עבור המחלה הזו. כך למשל עבור פוליו או אבעבועות שחורות מדובר על ערך של 5-7 לערך; עבור איידס על 2-5; ועבור חצבת מדובר על 12-18 (וכאן המקום להזכיר שחצבת היא מחלה קטלנית ומסוכנת ומדבקת מאוד, שבזכות העובדה שקיים לה חיסון נראית לחלקנו היום בתור "מחלת ילדות קלה").
בואו נסתכל עכשיו על \( S+I \), כלומר על הפונקציה שמתארת את המספר הכולל של אנשים באוכלוסיה שהמחלה עדיין רלוונטית לגביהם בכל רגע נתון. אנחנו רוצים לדעת מה יקרה איתם בטווח הארוך, כלומר כאשר \( t \) שואף לאינסוף. שוב, להסתכל על הנגזרת יהיה אינפורמטיבי:
\( \left(S+I\right)^{\prime}=S^{\prime}+I^{\prime}=-\alpha I \)
כלומר, המספר הזה יורד כל הזמן, אבל מצד שני הוא נשאר אי-שלילי (כי אין משמעות עבורנו לכמות שלילית של אנשים). זה אומר שאם קיים פתרון למשוואות שאכן נותר אי-שלילי, אז בפרט הנגזרת שלו צריכה לשאוף לאפס (למה? זה תרגיל בחדו"א: אם הנגזרת שלילית תמיד ולא שואפת לאפס אז הפונקציה בהכרח שואפת למינוס אינסוף - נסו להוכיח את זה, למשל, באמצעות משפט הערך הממוצע של לגראנז'). מכיוון שהנגזרת היא קבוע כפול \( I \), אנחנו מקבלים ש-\( \lim_{t\to\infty}I=0 \). כמו כן, מכיוון ש-\( S+I \) היא פונקציה מונוטונית וחסומה היא מתכנסת (שוב, למה?) ולכן אפשר לסמן \( \lim_{t\to\infty}S+I=S_{\infty} \). הערך של \( S_{\infty} \) הוא כמות ה"שורדים" שלא נפגעו כלל מהמחלה.
עד עכשיו הכל נראה די טריוויאלי, לפחות עבורי (וזה לא מפתיע, הרי המודל מאוד פשוט), אבל בואו תראו קסם: בואו ניקח את המשוואה \( S^{\prime}=-\beta SI \) ונחלק אותה ב-\( S \). נקבל \( \frac{S^{\prime}}{S}=-\beta I \). עכשיו, למי שקצת משופשף בחדו"א, ביטוי כמו \( \frac{S^{\prime}}{S} \) (פונקציה חלקי הנגזרת שלה) נראה קורץ מאוד - זה מה שמקבלים כשגוזרים את הלוגריתם הטבעי של פונקציה:
\( \left[\ln\left(f\left(x\right)\right)\right]^{\prime}=\frac{f^{\prime}\left(x\right)}{f\left(x\right)} \) (זה נובע מכך ש-\( \left(\ln x\right)^{\prime}=\frac{1}{x} \) ומכלל השרשרת שאומר ש-\( g\left(f\left(x\right)\right)^{\prime}=g^{\prime}\left(f\left(x\right)\right)f^{\prime}\left(x\right) \)). לכן המשוואה \( \frac{S^{\prime}}{S}=-\beta I \) נראית כמו משהו שכדאי לבצע לו אינטגרציה (הפעולה ה"הפוכה" מגזירה). אני רוצה לחשב אינטגרל מסויים, שהוא מעין סכימה משוקללת של ערכי הפונקציה על גבי תחום מסויים - במקרה שלנו, הזמן מ-0 עד אינסוף.
בואו נזכיר איך עושים את זה בתכל'ס: אם יש לי פונקציה \( f\left(x\right) \) שהיא גזירה עם נגזרת \( f^{\prime}\left(x\right) \), אז האינטגרל המסויים \( \int_{0}^{\infty}f^{\prime}\left(x\right)dx \) (שימו לב! האינטגרל של הנגזרת של \( f \)) שווה ל-\( f\left(\infty\right)-f\left(0\right) \), כאשר \( f\left(\infty\right) \) הוא סימון מוזר ל-\( \lim_{x\to\infty}f\left(x\right) \). לתוצאה הזו קוראים המשפט היסודי של החשבון הדיפרנציאלי והאינטגרלי (כי היא מצביעה על הקשר שבין חשבון דיפרנציאלי - נגזרות - ובין חשבון אינטגרלי - אינטגרלים).
אם כן, מצד אחד
\( \int_{0}^{\infty}\frac{S^{\prime}\left(t\right)}{S\left(t\right)}dt=\ln\left(S\left(\infty\right)\right)-\ln\left(S\left(0\right)\right)=\ln S_{\infty}-\ln S_{0}=\ln\frac{S_{\infty}}{S_{0}} \)
(כאן אני משתמש בתכונה לפיה \( \ln a-\ln b=\ln\frac{a}{b} \) - לוגריתם הוא בדיוק הפונקציה שהופכת חיבור וחיסור לכפל וחילוק).
מצד שני, בואו נזכור שראינו ש-\( \left(S+I\right)^{\prime}=-\alpha I \), כלומר \( I=-\frac{1}{\alpha}\left(S+I\right)^{\prime} \), ולכן:
\( \int_{0}^{\infty}-\beta I\left(t\right)dt=-\beta\int_{0}^{\infty}I\left(t\right)dt=\frac{\beta}{\alpha}\int_{0}^{\infty}\left(S+I\right)^{\prime}dt=\frac{\beta}{\alpha}\left(S_{\infty}+I_{\infty}-S_{0}-I_{0}\right)=\frac{\beta}{\alpha}\left(S_{\infty}-N\right) \)
כאן השתמשתי בכך ש-\( I_{\infty}=0 \) (זוכרים? כי ראינו ש-\( \lim_{t\to\infty}I=0 \)) וש-\( N=S_{0}+I_{0} \) (כי בהתחלה כל האוכלוסיה היא או ב-\( S \) או ב-\( I \)).
קיבלנו ש-\( \ln\frac{S_{\infty}}{S_{0}}=\frac{\beta}{\alpha}\left(S_{\infty}-N\right) \). שני הביטויים הללו הם בבירור שליליים, כי \( S_{\infty}<N \) (האוכלוסיה שלא נפגעה מהמחלה כמובן תהיה קטנה מהאוכלוסיה הכוללת) ו-\( S_{\infty}<S_{0} \) (האוכלוסיה שלא נפגעה מהמחלה כמובן תהיה קטנה מהאוכלוסיה שהייתה פגיעה בהתחלה) ולכן אפשר להכניס מינוס לשני האגפים ולקבל את השוויון השקול:
\( \ln\frac{S_{0}}{S_{\infty}}=\frac{\beta}{\alpha}\left(N-S_{\infty}\right) \)
ועוד להטוט אחד לסיום: כזכור, \( \mathcal{R}_{0}=\frac{\beta}{\alpha}S_{0} \) כאשר \( \mathcal{R}_{0} \) היה המאפיין הבסיסי של התפשטות המחלה שקראנו לו Basic reproduction number. עכשיו, כדי לקבל משוואה נחמדה שמערבת אותו נבצע את הפשע המתמטי החמור ביותר - הזנחה. נניח שבתחילת התפשטות המחלה מספר החולים הוא נמוך מאוד, ולכן \( N\approx S_{0} \) ולכן \( \mathcal{R}_{0}\approx\frac{\beta}{\alpha}N \). נציב במשוואה את זה, ונקבל אחרי פישוט אלגברי:
\( \ln\frac{S_{0}}{S_{\infty}}\approx\mathcal{R}_{0}\left(1-\frac{S_{\infty}}{N}\right) \)
למשוואה הזו קוראים ה-final size relation של המחלה. אחד הדברים המעניינים בה הוא שאת הערכים של \( S_{0},S_{\infty} \) אפשר לדעת, סטטיסטית, על ידי בחינת האוכלוסיה לפני ואחרי התפרצות המחלה, ואז ניתן להשתמש במשוואה כדי לקבל הערכה ל-\( \mathcal{R}_{0} \) של המחלה. המודל הזה הוא, כאמור, פשטני מאוד ולכן גם ההערכה היא פשטנית ובפועל מתבצעת עם מודלים מורכבים יותר, אבל עדיין יפה שאפשר לקבל את המידע הזה כבר מהמודל הפשוט הנוכחי.
אני רוצה לעבור ולהציג עכשיו בזריזות מודל מורכב קצת יותר. הבעיה העיקרית במודל ה-SIR שבגללו הוא לא יכול לתאר בצורה נכונה את מחלת הפוליו, הוא ההנחה ש-\( S \) לא גדלה עם הזמן (או ליתר דיוק - שהמגפה מתקדמת כל כך מהר שהגידול שכן יש ב-\( S \) הוא זניח). אם תסלחו לי על האנלוגיה, זה דומה לאש שחומר הבעירה שלה רק הולך ואוזל - ברור שהיא תיכבה בסוף. אבל במחלות "איטיות" יותר, חומר הבעירה הולך ומתחדש עם הזמן, כשילדים חדשים נולדים ומהגרים חדשים מצטרפים לאוכלוסיה. אז אנחנו רוצים לדבר על מודל יותר מורכב - כזה שבו \( S \) גדלה עם הזמן - ולראות איך המחלה תתנהג בתוך מודל כזה.
אני הולך להיות מאוד פשטני ולבצע רק שינוי אחד במודל - להוסיף גידול קבוע בגודל של \( S \), כלומר המשוואות שלי עכשיו ייראו כך:
\( S^{\prime}=-\beta SI+\lambda \)
\( I^{\prime}=\left(\beta S-\alpha\right)I \)
בפועל הגידול לא קבוע אלא תלוי בגודל האוכלוסיה הכוללת (לידות...) וצריך גם לקחת תמותה טבעית בחשבון, ועושים את זה; אבל אני מציג כאן משהו פשטני ורוצה לראות רק מה יהיה השינוי שייגרם בגללו.
ובכן, כמו קודם אנחנו רואים שיש גודל ספציפי של \( S \) שהוא מה שמכריע בין התפשטות של המחלה ובין היעצרות שלה: \( S_{e}=\frac{\alpha}{\beta} \). כאשר \( S_{e} \) נמצא מעל הסף הזה, \( I \) גדל; ככל ש-\( I \) גדל, כך \( S^{\prime} \) הופך לקטן יותר, ולכן \( S \) קטן; לבסוף \( S \) יהיה קטן יותר מ-\( S_{e} \) ואז \( I \) יתחיל לקטון, עד שבסופו של דבר נקבל ש-\( \lambda>\beta SI \) ואז \( S \) יתחיל לגדול שוב; ואז \( S \) יעבור את \( \frac{\alpha}{\beta} \); ואז המחלה תתפרץ שוב.
ואיך עוצרים מגפה? ובכן, אפשר להקטין את הפרמטרים שמאפיינים את התפשטות המחלה: הקפדה רצינית על היגיינה תקטין מאוד את הפצת הפוליו, והקפדה רצינית על יחסי מין בטוחים תקטין מאוד את הפצת האיידס. עם זאת, האמצעי האפקטיבי ביותר לעצירת המגפה הוא חיסון. בזמן שהקפדה על היגיינה וכדומה מצמצמים את הקבוע \( \mathcal{R}_{0} \) של המחלה, ולכן מגדילים את \( S_{e} \) - הרף של האוכלוסיה בסיכון שנדרש כדי שהמגפה תתפשט, הרי שחיסון מקטין את \( S \) עצמה, וחיסון מסיבי של האוכלוסיה מקטין את \( S \) דרסטית (אבל קריטי שהחיסון יהיה מפוזר באופן אחיד באוכלוסיה - אם יש קבוצה אחידה שמסרבת להתחסן, המחלה תשתמר בתוכה אם היא גדולה מספיק). אם נניח ש-\( p \) הוא החלק היחסי של האוכלוסיה שמחוסנת, כאשר \( 0\le p\le1 \), וש-\( S_{0} \) הוא גודל האוכלוסיה הפגיעה או המחוסנת בהתחלה, הרי שרק \( \left(1-p\right)S_{0} \) מהאוכלוסיה פגיעה; ואנחנו רוצים שיתקיים \( \left(1-p\right)S_{0}\le S_{e}=\frac{S_{0}}{\mathcal{R}_{0}} \), כלומר אנחנו רוצים שיתקיים \( 1-p\le\frac{1}{\mathcal{R}_{0}} \), ואחרי העברת אגפים נקבל שאנחנו רוצים שיתקיים \( p\ge1-\frac{1}{\mathcal{R}_{0}} \). זה מה שנקרא רף חסינות העדר של המחלה; אם ה"עדר" שחלקו היחסי באוכלוסיה הוא \( p \) התחסן, אז המחלה לא תצליח להתפשט למרות שיש עדיין אנשים לא מחוסנים (כדוגמת מדוכאי מערכת החיסון שפשוט אינם יכולים להיות מחוסנים נגד המחלה), והיא תגווע ותיעלם. זה מה שקרה לאבעבועות השחורות - החיסון העולמי הצליח להעלות את כמות המחוסנים בעולם אל מעל לרף חסינות העדר.
הנה גרף שמציג את איך שהתנהגות פתרונות למשוואות הדיפרנציאליות שלעיל נראית. הקו הצהוב הוא הגודל של \( S \), הקו הכחול הוא הגודל של \( I \) והקו האדום הוא \( S_e \) כדי שיהיה כיף, הגרף הוא אינטראקטיבי - אפשר לשנות את הפרמטרים השונים והמשונים של הגדלים של \( S,I \) בהתחלה (\( S_{0},I_{0} \)), כמו גם של הפרמטרים \( \alpha,\beta,\lambda \), אם כי במקרה של \( \alpha,\beta \) הערכים שאותם מכניסים הם לא הערכים האבסולוטיים, אלא למעשה הערכים של \( \beta S_{0}I_{0} \) (כלומר, כמה אנשים יחלו אחרי יחידת הזמן הראשונה) ושל \( \alpha I_{0} \) (כלומר, כמה חולים יעברו לקבוצה \( R \) שכולה טוב ולא מוצגת כאן אחרי יחידת הזמן הראשונה). השינויים בגודל האוכלוסיה הם דיסקרטיים ולא רציפים, אבל זה לא משנה יותר מדי.
S_0: | |
I_0: | |
Beta: | |
Alpha: | |
Lambda: | |
Steps: |
שימו לב לצורה הטיפוסית של הגרף - \( S \) עולה ויורדת בגלים, כשכל גל כזה מייצג התפרצות מגיפה ואז התאוששות של האוכלוסיה ממנה. בגרף של \( I \) אפשר לראות איך בכל התפרצות מספר החולים מטפס למקסימום עד ש-\( S \) יורד מתחת ל-\( S_{e} \), ואז הוא קטן שוב עד לרמה שבה הוא כמעט בלתי נראה, ו"מחכה להזדמנות הבאה" שלו להתפרץ. האוכלוסיה עצמה לא מיוצגת בצורה ריאליסטית - המספרים הם מספרים ממשיים, לא שלמים, כך שיש לנו פה ושם \( 0.033\dots \) "חולים" - אבל כמובן, אפשר להכפיל את המספרים הללו בקבוע מתאים וזה יסתדר.
גרפים זה נחמד, אבל הכי נחמד זה לראות בעיניים איך זה קורה, אז הכנתי משחק שהולך כך: יש לנו הרבה ריבועים שנעים אקראית באיזה שטח מלבני. חלק מהריבועים "בריאים", חלק "נגועים" וחלק "מחוסנים". כשריבוע "נגוע" פוגע בריבוע "בריא" הוא עשוי להדביק אותו. ריבוע נגוע הולך ודועך לאיטו עד שהוא או "מת" ומוסר לגמרי, או הופך למחוסן. רציתי לעשות כך שאפשר יהיה לשלוט על הפרמטרים השונים - כמה בריאים, נגועים ומחוסנים יהיו, מה תהיה המהירות שלהם (מהירות גדולה יותר - יותר התנגשויות) ותוך כמה זמן נגוע דועך לגמרי, אבל בפועל לא היה לי מעולם כוח להשלים את זה (אתם כמובן מוזמנים לקחת את הקוד שנמצא שם ולעשות זאת בעצמכם)
המשחקים הללו שאני עושה, כשמם כן הם - משחקים. בפועל מידול של מחלות הוא מורכב הרבה יותר - נכתבו על הנושא ספרים רבים - והתיאוריה תמיד נלקחת במידת מה של זהירות עם הקפדה על בדיקה של הנתונים בפועל. עם זאת, חשוב להבין שזה עובד. עם ההצלחה של התחום קשה להתווכח. טוב, האמת שקל להתווכח, בדיוק כמו שלטרחנים מתמטיים קל לטעון שקנטור טעה.
נהניתם? התעניינתם? אם תרצו, אתם מוזמנים לתת טיפ: