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))
Beispiel #2
0
    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))
Beispiel #3
0
    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))
Beispiel #4
0
# 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',