Webinar – Infectious Disease Modeling

okay great so I want to first I want to thank you all for joining me today we're this is part of a series of webinars that we we plan to present monthly to try to bring people or familiarize people with some of the features of triage Pro that they may not be aware of or if they're aware of them they may not have much experience with them now this isn't going to be a full training course where we we spend a very long time we should be done within half an hour but but it's more an introduction to the techniques involved so that you know that you can do them and if you really need to do them for you know for a project you can ask questions through support and if you really need more help than that you can get some short-term consulting time with us to help you with the model overall our our webinar series is available on our website under training and then treat fro webinars and you see just fill out this form to register for one of them and we'll be sure to I mean obviously you know this because you've done this before we'll be sure to make sure we invite you to the next webinar now let's get back to the topic of this one I'm muting everyone's microphones but please feel free to use the chat window in the go-to meeting control panel to submit questions which I'll try to take a treasonable breaking points within the presentation so without further ado let's talk about infectious disease models now infectious disease models really differ significantly from from a typical Trias pro model in three ways starting with a traditional treated pro model it typically will have multiple treatments and you're comparing treatments and what you're really looking for is the average cost and average effectiveness of some kind of health outcome to use those to generate icers and compare strategies with an infectious disease model there are some significant differences there the first being you can't you probably don't want to look at an average cost and average effect is per patient you probably want to look at at more population dynamics so we're not going to have a cohort of size one we have a cohort of the size of the population that could be affected by this infectious disease model so that's the first significant difference that the second one is we need to be able to add people to the model there's going to be new people that become infected or become susceptible to infection so not only as a cohort gonna start with a size that's not one we're going to dynamically change it with time and then the third thing is that we want to be able to use the the components or the membership in the states to have an impact on the likelihood of infection so specifically we'll get into the more details this infection probability here is going to be affected by the where the you know the the the way that cohort is right now the health status of the cohort in general so you may maybe have never created a model where an individual's experience within the model is actually affected by the other people in the model and that makes the model you know one level more complicated than your typical model so that's just a kind of a summary of what we're going to do and now we can we can get into more the details so you know what's an infectious disease model so you know it's a pandemic you know whether that's a flu or SARS or something like that some kind of issue where we're worried about infection spreading through the population and and the membership within the states becomes very important and and and we're gonna the model were specifically net is this one right here dynamic cohort infectious disease it comes with your software so you're not gonna have this downloads that's mine but you're gonna have example example models here in the projects view if you don't see the projects for you you can always open it from here view projects and then example models healthcare and we scroll down and we're specifically looking at this model so if you have updated to the most recent software these two dynamic cohort models were added with that so if you don't see this you probably need to update your software and pretend refresh the the example models in within the within the context of the software and if you have any trouble with that please feel free to contact me through support at triage comm some time after this got the conclusion of this of this seminar so so that's the model we're gonna look at and now let's look at some of the things that are that are unique about this model the first thing to look at is the cohort size now typically for a regular Markov model these would all be fractions let's ignore this one for the start these would all be fractions so this might you might have you know a prevalence here everyone else here nobody immune and and dead here but they'd all be fractions of one so that you have a cohort of size one in this case we don't have that if we look at these initial variable values so I'm just making I'm gonna hide this for now to give us more space but if we look at the variable properties for those initial variables I'm using the filter here to only look at the variables that match this you see we're starting with 10 people infected and everyone at the total populations a thousand and everyone else is going to be uninfected in this particular example so we'll have 10 people or 10 people here 990 people here and nobody in these two states and that will be our starting point now how do you do that well most models will give you an error if you if you enter values at either a Markov node or branches of the Markov node or a chance node if you enter values that don't sum to one tree as prote will by default throw an error and it should because most of your model is you do want those probabilities to be coherent but this is an exception to that so what we allow you to do and you'll see this little red flag here saying that I've already done it but when you right click on either a Markov node or or a chance node you'll see change coherence and you see that this one's already set to allow probabilities to not sum to 100% so this this particular node within the context of the model has been allowed to for tube has been freed from the restriction to be some to 100% so I'm able to enter counts of people here rather than fractions that is also true here where I'm gonna use this to add new people and this I think believe this is about 10 people the numbers don't necessarily matter that much but the concept is the same that this month this node right here also has coherent set to not be 100% so that I can add a new another account of person of people here rather than a fraction of a person so you never want to do this for your whole bottle although there is a way to do that through true preferences you really want to allow it only at specific nodes where that makes sense and that's where the non coherence comes in at specific nodes to allow the cohort to expand beyond fractions of o of 1 so that's the first thing the second thing is the in this model it's that's kind of unique to things they haven't done before is this entry node you see this arrow here so this entry node was also was added in triage for 2018 to allow to allow you to add new people to the cohort but not have trees Pro think this is a real estate so this add new people will be executed every cycle and in this case we're gonna add new uninfected people and although I could add people to any states if I wanted to but but the key to the new feature to the new feature is it's not considered a state so you don't get the slight miss counts in the model where this is considered to be a person that's up here where I used to have to have this be a chance node with a 1 before 2018 so you always had your cohort slightly off because you had this fake person being used to add people into the model and so now you have the capability to use an entry node and you see it over here if I wanted to add it entry node to facilitate the addition to your cohort without having trees Pro interpret that as being an actual health state so it's a pseudo health state specifically being used to add new people into the model ok so it's the second thing now the third thing is the is the the the effect that the overall coherent has on probabilities and them all specifically probabilities but it could be on anything and that really comes down to the details behind this probability of infection so I want to look a little bit at the probabilities of the variables that they comprise that so that you can see how this would be done so I'm gonna show my variables again and I'm gonna start by just looking at the prob in fact right here and if we look at probability of infection first starting with the rate to prom this just converts a rate to a probability and this one over cycles per year has to do with what's the time period for this transition probability I'm not really too concerned with the cycles per year right now I really want to focus in here so this is a rate this would be some kind of parameter right that that is what is related to the disease how fast that disease progresses so different diseases would have different rates but this proportion infected what we're doing here is that's calculating the proportion of the overall cohort that's alive that is infected so if you know let's say you had 10 people infected 10 people not in susceptible but not dead and 10 people recovered an immune that would be 30 total people alive ten of whom would be infected this proportion would be 1/3 and that 1/3 would contribute to the probability that affects your probability of infection so in essence what we're trying to do is tie what we've done here is tie this probability of infection to the membership in these three states specifically the percentage of infected relative to all of the alive states now we need to look a little deeper because you don't need to necessarily believe that that product that prom in fact is is ready to go as is so specifically how did we get this proportion affected that's the next thing we want to look at so if I use this filter again and look at proportion affected now now we can see a little bit more details into this and you see what we've got two more variables count infected count a la / count alive now count infected needs to be the percentage of people in this state count alive needs to be the sum of the people in all three of these states so let's see how we how we reach that point so I'm going to clear this and look at the count variables and you see this state prob at command here now that this dysfunction has been in software for a very long time but not very many people know about it or use it and what state prob does is it really is it returns the the percentage or in this case the count of people in the states and the index to 3 & 4 it just counts down from the top so uninfected that if you this is one here's 2 so this state prob 2 is going to return the count of people in the uninfected state state property can't affect is going to return the count of people in the infected state and stay prompt for is gonna give back the count of people in the recovered immune state and the sum of the three of those is the count to life so if we went back to the proportion it was discount infected how many people are in this state divided by the sum of the people in all three of these states so now we have the proportion of people of the of the non dead people who are alive people assuming I said that wrong the proportion of people who are infected relative to the portion of the number of people who are actually alive and that informs this probability now it's may seem a little bit you know complex because it was two or three variables deep but that's because when we build models we'd like to break down complex calculations into a series of smaller calculations each of which is it's much simpler so we start with the counts then we get the total count then we bring that into the proportion infected and then finally we end up with the probability of infection by moving in smaller steps to achieve something that's more complicated now that really is all the elements of the model that are that are unique to this kind of I'm just gonna check to see if there's any questions in the chat window I don't see any yet so I'm gonna continue forward by actually analyzing this model okay so what I want to do analyze this model is I don't only have one strategy so I'm not gonna worry about decision analysis cost-effectiveness analysis what I really just want to do is look at this infectious disease portion of the Markov model and see how it's calculated and I'm gonna do that by selecting the Markov node and then choosing this option in the analyse and the analyze perspective to run the the verbose extended Markov cohort report and and so now we can see that the fruits of the of the efforts gone that went into that model specifically these are not proportions of one right like I said I'm starting with ten infected people there was a total population of a thousand that means everyone else was uninfected at the beginning now obviously that's gonna change as infections develop and and people recover so this the flow is very similar to what you've seen in in a typical model but what's particularly this model is the counts here that they're counts and not fractions the second thing that we looked at was the addition of new people that's happening here right notice knows no cohort here cuz it's not a real estate but we are adding new infected people based on a rate of birth rate which I didn't show you earlier but it's a birth rate based on the alive count so this this number came from birth rate and where did they go well they're gonna go into the uninfected so let's make sure that works so we take the uninfected these this 976 people now you'll see fractional people because cohort analysis has done based on probabilities so you know obviously there are no real fractional people in the world but when you do this kind of analysis you will see fractional people so of the 990 who started uninfected 976 remained uninfected we got approximately seven new people and so when we go down to stage one we have nine seventy six plus seven nine hundred eighty three people uh so this is showing you that we had the counts and this part is showing you that we added new people into them into the cohort and that happens every cycle right now we're adding a different number of people because we're using a rate based on who's already in the in the cohort but in essence you know that that's going to be executed every cycle it would be possible to not execute this by making the logic node or some something here before you add people say I only I don't want to add people for the first ten years or whatever that is so you could have more control than we've elected to put in this model but in this model we're using a rate times the rate applied to the to the people who are alive and that becomes the new people born into the model now meet by meanwhile there will be people dying off so that people will be added to the cohort up here and they will be dying which will which will then change the you know change the cohort size because some people are dying as other people are living now someone asked me to to make their presenter I really can't do that right now but if you want to follow up after the presentation that we could we could look at your computer at a future time but I need to move forward with with the whole group for now any other questions before we we move move forward okay so let's look a little bit deeper at this results and yes there's costs and stuff being accumulated but that's not really the point of what we're doing here we're calculating costs for the affected people we really are focusing more on the flows but the accumulation of cost and utility etc would be the same as other any other model except that it's multiplied times a cohort counts rather than cohort percentages now the summary report that would just kind of give you the same data from the cohort but in in a two dimensional grid if you wanted to dump this to excel or you wanted to get a count of cost for budget impact reasons this would be a good option for that this because exporting this to excel is messy with all the groupings but if you simplify the report into a two dimensional grid that's a much easier one to deal with a post export and what I really want to look at here is the state problem and this is showing you the graphically the flow of patients in the model so you can see I start with uninfected that goes down as people become infected and eventually immune then it goes up as you have people new cases developing faster than people are recovering from them and it starts to stabilize eventually now I can't say that every model like this would stabilize but this one kind of does whereas other other states are behaving differently so the infected for example goes up as the infections are happening faster then goes down as people recovering faster and it will tend it happens to stabilize as well meanwhile the immune it has also gone up and kind of stabilizes at a fairly high number now dead is clearly rising with time now we ran this for a very long time period so that's why you're seeing a lot of dead so we had new people coming in and people dying off so the dead is increasing so this this state program is showing you the counts in the states now a typically in a typical model they'd be fractions but not in this one obviously because we have a larger cohort size but this can be quite illuminating in terms of what's what's happening to your to your cohort as this potential infectious disease outbreak continues into the future okay that's that's the most of what I was gonna do for the main model and now I'm going to show you what you'd have to do if we were gonna run it as a individual patient simulation model because this same kind of modeling technique can be done with individual patients now there's no reason that we would need to run individual patients through this specific model because in essence we have no elements of the model that require patient level data like heterogeneity for example or some kind of scenario where be covering immune was not as simple as just moving this way yeah I did maybe you can have the disease twice before you become immune if you had some kind of scenario where we needed either heterogeneity or event tracking or patient data become critical became critical then we want to run patients through the model rather than a cohort analysis now to run the patients through the model takes a very long time and so I'm not going to run it right now because you know we'd be sitting here waiting for the results why would it take a long time well we have a lot of patients we have new patients coming in through every year we've got to process all those patients and we have to process all those patients at the same time right we wouldn't be able to just run one patient to the end because we would lose the ability for this probability of infection to be based on the status of the rest of the cohort so when you run microsimulation on a model like this which we're not going to run but I'm going to show you what you did if we were gonna run it you would first of all you'd want this set to some right because we were looking at summary that and we don't want average but second secondly you'll notice we you don't have the option to change the number of patients because this isn't controlling the patients these non fit non-standard noncoherent counts are controlling the patients so we're running one pseudo patient here because we know this is going to be 10 and 990 here post new patients coming in here so we don't we don't specifically run the number of people because the number of people is handled within the model within the pseudo probabilities within the model the other thing we would need to do is we'd need to run parallel and you notice that you have to again if that's very much associated with this probability of infection and we would need to actually we need to have them running in a synchronized manner with time in order for this probability of infection to accurately be based on the the membership in these states so those are the things that would run differently if we were running a micro-sim relation now I saw a couple of questions come up so let me try to address those the first one was how do you address heterogeneity among different subgroups there are a couple of things to do but typically what people do is they they will assign characteristics to individuals as they enter the model and that can be done via distributions so you could have a distribution that assigned gender let's say to each person or as aged to each person etc etc that's typically what people do to assign those characteristics another way to do is through bootstrapping so if you have individual patient data that you know like real patients you can assign the characteristics of our simulated patients with the characteristics that actually existed in in real patients that you've seen in real life so those are two ways to to assign characteristics now you wouldn't do that unless you were going to use those characteristics as part of the of the movement through the model so let's say if the probability of infection was different both based on this product these product these percentages but also based on gender then you you'd want gender in the model and you would use that to make this probability a little bit more complicated I know David has a question on social social contract structure I'm not sure I don't really understand that question so I can't really address it so maybe we could take that one offline and discuss that um after the the presentation so now I know I can't run this because it will take too long but what I have done is I've run it in advance so I'm just gonna open up this and just opening the results it takes a little while because there's so much data although that was nice and fast I'm one thing I did forget to say is that if I were going to run the patient simulation and I wanted to get those cohort level details I would also want to be setting time reporting on so I would enable time reporting and I would record the payoffs there are no distributions of trackers in this model and and what this would do is basically record each patient at every node first of all what node they were at and secondarily how did that affect the the accumulation of value in the cost and effectiveness payoffs and any trackers you could include this as well so time reporting allows you to see what each individual it happens to them like what movements they want did they go to this node and then this node and then this node and not just that but what happened to the data as they as they how did they accumulate cost as they move through that now that's really why the model takes so long to because it's storing an enormous amount of data every patient every node every impact on every value so it takes a lot of data so your your result set is very large and it takes time to generate it but this is the pre run results I'm not really worried about this I'm not going to do decision analysis but I do want to show you that we can get the same look of cohort report from the individual patients that we got from the cohort analysis now when you run core analysis its natural that's the way it's analyzed that's the way the data is generated but with the code with with the individual patient simulation what we're basically doing is taking that huge amount of data and reconstructing the cohort analysis output based on what happened to the individual patients and that's why it takes take some time because it's literally taking hundreds of thousands of data records and combining them back into one report so we'll just have to wait wait for that to finish up and there it is okay notice the same thing 990 patients uninfected ten in fact it just like before you notice all of these are now round numbers right they're not fractions because they're now people there now individuals being sent through the model so you're gonna see these as non fractional value because you can't have half of a simulated patient so but everything else in here is basically the same as what you saw before so I'm basically sure I'm trying to show you that you could run into individuals through this model even though we didn't run it real time and even though we didn't really need to for this model because there was no patient care patient characteristics that affected any kind of cost effectiveness a probability but you can if there were those elements and those were critical to the model and again we could run the state prob from that and the results aren't exactly the same because there's gonna be some noise with a cohort size that's only a thousand it's not that big to get perfection the way you get with a cohort analysis but you see the same trends right a stability with time dead going up etc so I just want to make the point that you can run basically any Markov model with micro simulation so when it comes time and you say oh I've got a piece of data that's critical to patience and I need that you don't have to rebuild the model you just integrate that element into the model and run it a different way so I think that brings me to the end of everything that I wanted to talk about today I'm gonna take any more questions that that have come up any other questions before we before we finish please feel free to contact us in the future with any questions that you may have and I hope that you're able to join us for more another webinar sometime in the future as we try to try to address more and more things that we'd like to see people using the in the in the software we will be doing one specifically going through these kinds of reports that's the next one and eventually we're gonna do another one on dynamic trials we're running four trials in a in a parallel manner that takes advantage of that through resource constraints so anyway that's that's all I have for today thank you all for joining me wish you the best in the future and maybe we'll we'll see you again for a webinar sometime in the near future thank you

Leave a Reply

(*) Required, Your email will not be published