def extract_outcomes(self, simulated_patients): """ extracts outcomes of a simulated cohort :param simulated_patients: a list of simulated patients""" # record patient outcomes for patient in simulated_patients: # survival time if patient.stateMonitor.survivalTime is not None: self.survivalTimes.append(patient.stateMonitor.survivalTime) # time until AIDS if patient.stateMonitor.timeToAIDS is not None: self.timesToAIDS.append(patient.stateMonitor.timeToAIDS) # discounted cost and discounted utility self.costs.append( patient.stateMonitor.costUtilityMonitor.totalDiscountedCost) self.utilities.append( patient.stateMonitor.costUtilityMonitor.totalDiscountedUtility) # summary statistics self.statSurvivalTime = Stat.SummaryStat(name='Survival time', data=self.survivalTimes) self.statTimeToAIDS = Stat.SummaryStat(name='Time until AIDS', data=self.timesToAIDS) self.statCost = Stat.SummaryStat(name='Discounted cost', data=self.costs) self.statUtility = Stat.SummaryStat(name='Discounted utility', data=self.utilities) # survival curve self.nLivingPatients = Path.PrevalencePathBatchUpdate( name='# of living patients', initial_size=len(simulated_patients), times_of_changes=self.survivalTimes, increments=[-1] * len(self.survivalTimes))
def calculate_cohort_outcomes(self, initial_pop_size): """ calculates the cohort outcomes :param initial_pop_size: initial population size """ self.statSurvivalTime = Stat.SummaryStat(name='Survival Time', data=self.survivalTimes) self.statCost = Stat.SummaryStat(name='Discounted cost', data=self.costs) self.statUtility = Stat.SummaryStat(name='Discounted utility', data=self.utilities) self.statNumStrokes = Stat.SummaryStat(name='Total Number of Strokes', data=self.nStrokes) self.nLivingPatients = Path.PrevalencePathBatchUpdate( name='# of living patients', initial_size=initial_pop_size, times_of_changes=self.survivalTimes, increments=[-1] * len(self.survivalTimes))
def extract_outcomes(self, simulated_patients): """ extracts outcomes of a simulated cohort :param simulated_patients: a list of simulated patients""" # record survival time and time until AIDS for patient in simulated_patients: if patient.stateMonitor.survivalTime is not None: self.survivalTimes.append(patient.stateMonitor.survivalTime) if patient.stateMonitor.timeToAIDS is not None: self.timesToAIDS.append(patient.stateMonitor.timeToAIDS) # calculate mean survival time self.meanSurvivalTime = sum(self.survivalTimes) / len( self.survivalTimes) # calculate mean time to AIDS self.meanTimeToAIDS = sum(self.timesToAIDS) / len(self.timesToAIDS) # survival curve self.nLivingPatients = Path.PrevalencePathBatchUpdate( name='# of living patients', initial_size=len(simulated_patients), times_of_changes=self.survivalTimes, increments=[-1] * len(self.survivalTimes))
# record the observations path1.record_increment(1.2, 2) path1.record_increment(2.3, -1) path1.record_increment(5.1, 0) # second sample path with initial size = 1 path2 = Path.PrevalenceSamplePath('Path 2', initial_size=0, sim_rep=1) # record the observations path2.record_increment(0.5, 4) path2.record_increment(1.8, -2) path2.record_increment(5.5, 1) # third sample path with initial size = 1 path3 = Path.PrevalencePathBatchUpdate('Path 3', 0, times_of_changes=[1.5, 2, 5], increments=[2, -1, 0], sim_rep=1) path4 = Path.PrevalencePathBatchUpdate('Path 4', 0, times_of_changes=[0.5, 4, 4.5], increments=[2.5, 1, 1], sim_rep=1) # stats print(path1.stat.get_mean()) # plot path 1 only Path.plot_sample_path(sample_path=path1, title='Plotting a single sample path', x_label='time',