Introduction This analysis compares two health state modeling approaches:
Structure 1: Direct Risk Computation (stored in m_States)
Structure 2: Composite Risk (stored in m_States_risk)
Both models simulate health state trajectories for 100,000 individuals over 61 cycles (cycles 0-60), with states including:
NE: No event (healthy)
MI: Myocardial infarction
ST: Stroke
PS: Post-stroke state
PM: Post-MI state
D: Death
# Load the datasets
load('/Users/jamesoguta/Documents/James Oguta/My PhD Folder-2023-2025/Trainings/KenyaCVDModel/data/m_States.rda') # No intervention
load('/Users/jamesoguta/Documents/James Oguta/My PhD Folder-2023-2025/Trainings/KenyaCVDModel/data/m_States_risk.rda') # No intervention
# Check the structure of the datasets
str(m_States)## chr [1:100000, 1:61] "NE" "NE" "NE" "NE" "NE" "NE" "NE" "NE" "NE" "NE" ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:100000] "ind_1" "ind_2" "ind_3" "ind_4" ...
## ..$ : chr [1:61] "cycle_0" "cycle_1" "cycle_2" "cycle_3" ...
## chr [1:100000, 1:61] "NE" "NE" "NE" "NE" "NE" "NE" "NE" "NE" "NE" "NE" ...
## - attr(*, "dimnames")=List of 2
## ..$ : chr [1:100000] "ind_1" "ind_2" "ind_3" "ind_4" ...
## ..$ : chr [1:61] "cycle_0" "cycle_1" "cycle_2" "cycle_3" ...
## ========== 1. BASIC STRUCTURE COMPARISON ==========
## Structure 1 (Direct Risk Computation):
## Dimensions: 100000 x 61
##
## Structure 2 (Composite Risk):
## Dimensions: 100000 x 61
##
## Same dimensions: TRUE
states_struct1 <- unique(as.vector(m_States))
states_struct2 <- unique(as.vector(m_States_risk))
cat("States in Structure 1 (Direct Risk):\n")## States in Structure 1 (Direct Risk):
## [1] "D" "MI" "NE" "PM" "PS" "ST"
##
## States in Structure 2 (Composite Risk):
## [1] "D" "MI" "NE" "PM" "PS" "ST"
common_states <- intersect(states_struct1, states_struct2)
only_struct1 <- setdiff(states_struct1, states_struct2)
only_struct2 <- setdiff(states_struct2, states_struct1)
cat(sprintf("\nCommon states: %d\n", length(common_states)))##
## Common states: 6
## States only in Structure 1: 0
## States only in Structure 2: 0
# Define time points to analyze
time_points <- c(1, 2, 5, 10, 20, 30, 61) # cycle_0, cycle_1, cycle_4, etc.
time_points <- time_points[time_points <= ncol(m_States)]
# Store results for plotting
dist_results <- list()
for(t in time_points) {
cycle_name <- colnames(m_States)[t]
cycle_num <- t - 1
cat(sprintf("\n### Cycle %d (%s)\n", cycle_num, cycle_name))
dist_struct1 <- prop.table(table(m_States[, t]))
dist_struct2 <- prop.table(table(m_States_risk[, t]))
# Create comparison table
all_states <- sort(union(names(dist_struct1), names(dist_struct2)))
comp_df <- data.frame(
State = all_states,
Structure1 = sapply(all_states, function(s) ifelse(s %in% names(dist_struct1), dist_struct1[s], 0)),
Structure2 = sapply(all_states, function(s) ifelse(s %in% names(dist_struct2), dist_struct2[s], 0))
)
comp_df$Difference <- comp_df$Structure1 - comp_df$Structure2
comp_df <- comp_df[order(comp_df$State), ]
cat("\n**State Proportions:**\n\n")
print(create_table(comp_df, paste("Cycle", cycle_num, "State Distribution")))
# Store for plotting
dist_results[[as.character(cycle_num)]] <- comp_df
}##
## ### Cycle 0 (cycle_0)
##
## **State Proportions:**
##
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Cycle 0 State Distribution</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1 </th>
## <th style="text-align:right;"> Structure2 </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:right;"> 1 </td>
## <td style="text-align:right;"> 1 </td>
## <td style="text-align:right;"> 0 </td>
## </tr>
## </tbody>
## </table>
## ### Cycle 1 (cycle_1)
##
## **State Proportions:**
##
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Cycle 1 State Distribution</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1 </th>
## <th style="text-align:right;"> Structure2 </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:right;"> 0.0167 </td>
## <td style="text-align:right;"> 0.0175 </td>
## <td style="text-align:right;"> -0.0008 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:right;"> 0.0013 </td>
## <td style="text-align:right;"> 0.0069 </td>
## <td style="text-align:right;"> -0.0056 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:right;"> 0.9800 </td>
## <td style="text-align:right;"> 0.9675 </td>
## <td style="text-align:right;"> 0.0126 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:right;"> 0.0020 </td>
## <td style="text-align:right;"> 0.0082 </td>
## <td style="text-align:right;"> -0.0062 </td>
## </tr>
## </tbody>
## </table>
## ### Cycle 4 (cycle_4)
##
## **State Proportions:**
##
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Cycle 4 State Distribution</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1 </th>
## <th style="text-align:right;"> Structure2 </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:right;"> 0.0727 </td>
## <td style="text-align:right;"> 0.0785 </td>
## <td style="text-align:right;"> -0.0058 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:right;"> 0.0018 </td>
## <td style="text-align:right;"> 0.0077 </td>
## <td style="text-align:right;"> -0.0059 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:right;"> 0.9152 </td>
## <td style="text-align:right;"> 0.8715 </td>
## <td style="text-align:right;"> 0.0436 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:right;"> 0.0031 </td>
## <td style="text-align:right;"> 0.0151 </td>
## <td style="text-align:right;"> -0.0121 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:right;"> 0.0046 </td>
## <td style="text-align:right;"> 0.0187 </td>
## <td style="text-align:right;"> -0.0141 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:right;"> 0.0027 </td>
## <td style="text-align:right;"> 0.0084 </td>
## <td style="text-align:right;"> -0.0057 </td>
## </tr>
## </tbody>
## </table>
## ### Cycle 9 (cycle_9)
##
## **State Proportions:**
##
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Cycle 9 State Distribution</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1 </th>
## <th style="text-align:right;"> Structure2 </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:right;"> 0.1826 </td>
## <td style="text-align:right;"> 0.1985 </td>
## <td style="text-align:right;"> -0.0159 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:right;"> 0.0031 </td>
## <td style="text-align:right;"> 0.0086 </td>
## <td style="text-align:right;"> -0.0054 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:right;"> 0.7900 </td>
## <td style="text-align:right;"> 0.7168 </td>
## <td style="text-align:right;"> 0.0732 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:right;"> 0.0083 </td>
## <td style="text-align:right;"> 0.0293 </td>
## <td style="text-align:right;"> -0.0210 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:right;"> 0.0122 </td>
## <td style="text-align:right;"> 0.0384 </td>
## <td style="text-align:right;"> -0.0261 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:right;"> 0.0037 </td>
## <td style="text-align:right;"> 0.0084 </td>
## <td style="text-align:right;"> -0.0047 </td>
## </tr>
## </tbody>
## </table>
## ### Cycle 19 (cycle_19)
##
## **State Proportions:**
##
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Cycle 19 State Distribution</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1 </th>
## <th style="text-align:right;"> Structure2 </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:right;"> 0.4501 </td>
## <td style="text-align:right;"> 0.4832 </td>
## <td style="text-align:right;"> -0.0331 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:right;"> 0.0051 </td>
## <td style="text-align:right;"> 0.0069 </td>
## <td style="text-align:right;"> -0.0018 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:right;"> 0.5047 </td>
## <td style="text-align:right;"> 0.4325 </td>
## <td style="text-align:right;"> 0.0722 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:right;"> 0.0137 </td>
## <td style="text-align:right;"> 0.0301 </td>
## <td style="text-align:right;"> -0.0164 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:right;"> 0.0208 </td>
## <td style="text-align:right;"> 0.0400 </td>
## <td style="text-align:right;"> -0.0192 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:right;"> 0.0056 </td>
## <td style="text-align:right;"> 0.0073 </td>
## <td style="text-align:right;"> -0.0017 </td>
## </tr>
## </tbody>
## </table>
## ### Cycle 29 (cycle_29)
##
## **State Proportions:**
##
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Cycle 29 State Distribution</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1 </th>
## <th style="text-align:right;"> Structure2 </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:right;"> 0.7233 </td>
## <td style="text-align:right;"> 0.7500 </td>
## <td style="text-align:right;"> -0.0267 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:right;"> 0.0045 </td>
## <td style="text-align:right;"> 0.0039 </td>
## <td style="text-align:right;"> 0.0006 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:right;"> 0.2386 </td>
## <td style="text-align:right;"> 0.2073 </td>
## <td style="text-align:right;"> 0.0312 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:right;"> 0.0121 </td>
## <td style="text-align:right;"> 0.0148 </td>
## <td style="text-align:right;"> -0.0026 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:right;"> 0.0165 </td>
## <td style="text-align:right;"> 0.0205 </td>
## <td style="text-align:right;"> -0.0039 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:right;"> 0.0049 </td>
## <td style="text-align:right;"> 0.0036 </td>
## <td style="text-align:right;"> 0.0013 </td>
## </tr>
## </tbody>
## </table>
## ### Cycle 60 (cycle_60)
##
## **State Proportions:**
##
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Cycle 60 State Distribution</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1 </th>
## <th style="text-align:right;"> Structure2 </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:right;"> 1 </td>
## <td style="text-align:right;"> 1 </td>
## <td style="text-align:right;"> 0 </td>
## </tr>
## </tbody>
## </table>
3.1 Visualizing Distributions Over Time
# Prepare data for plotting
plot_data <- data.frame()
for(cycle in names(dist_results)) {
df <- dist_results[[cycle]]
df$Cycle <- as.numeric(cycle)
plot_data <- rbind(plot_data, df)
}
# Plot proportions over time - Structure 1
p1 <- ggplot(plot_data, aes(x = Cycle, y = Structure1, color = State)) +
geom_line(size = 1.2) +
geom_point(size = 2) +
labs(title = "Structure 1 (Direct Risk): State Proportions Over Time",
x = "Cycle", y = "Proportion") +
theme_minimal() +
theme(legend.position = "bottom")
print(p1)# Plot proportions over time - Structure 2
p2 <- ggplot(plot_data, aes(x = Cycle, y = Structure2, color = State)) +
geom_line(size = 1.2) +
geom_point(size = 2) +
labs(title = "Structure 2 (Composite Risk): State Proportions Over Time",
x = "Cycle", y = "Proportion") +
theme_minimal() +
theme(legend.position = "bottom")
print(p2)# Plot differences
p3 <- ggplot(plot_data, aes(x = Cycle, y = Difference, color = State)) +
geom_line(size = 1.2) +
geom_point(size = 2) +
geom_hline(yintercept = 0, linetype = "dashed", color = "gray50") +
labs(title = "Difference in State Proportions (Structure 1 - Structure 2)",
x = "Cycle", y = "Difference") +
theme_minimal() +
theme(legend.position = "bottom")
print(p3)
4. Individual Trajectory Comparison
n_examples <- min(10, nrow(m_States))
trajectory_results <- data.frame()
for(i in 1:n_examples) {
cat(sprintf("\n### Individual %s\n", rownames(m_States)[i]))
traj_struct1 <- m_States[i, ]
traj_struct2 <- m_States_risk[i, ]
# Show first 30 cycles
cat("\n**Structure 1 (Direct Risk) (first 30 cycles):**\n")
cat(paste(traj_struct1[1:min(30, length(traj_struct1))], collapse = " "), "\n")
cat("\n**Structure 2 (Composite Risk) (first 30 cycles):**\n")
cat(paste(traj_struct2[1:min(30, length(traj_struct2))], collapse = " "), "\n")
# Find differences
diff_positions <- which(traj_struct1 != traj_struct2)
if(length(diff_positions) > 0) {
cat(sprintf("\n**Different cycles:** %d (%.1f%%)\n",
length(diff_positions), 100 * length(diff_positions) / length(traj_struct1)))
cat("\n**First 10 differences:**\n")
diff_df <- data.frame(
Cycle = diff_positions[1:min(10, length(diff_positions))] - 1,
Structure1 = traj_struct1[diff_positions[1:min(10, length(diff_positions))]],
Structure2 = traj_struct2[diff_positions[1:min(10, length(diff_positions))]]
)
print(create_table(diff_df, paste("Differences for Individual", i)))
} else {
cat("\n**Trajectories are IDENTICAL**\n")
}
cat("\n---\n")
}##
## ### Individual ind_1
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D D D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE
##
## **Different cycles:** 7 (11.5%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 1</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_27 </td>
## <td style="text-align:right;"> 27 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_28 </td>
## <td style="text-align:right;"> 28 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_29 </td>
## <td style="text-align:right;"> 29 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_30 </td>
## <td style="text-align:right;"> 30 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_31 </td>
## <td style="text-align:right;"> 31 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_32 </td>
## <td style="text-align:right;"> 32 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_33 </td>
## <td style="text-align:right;"> 33 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_2
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D D D D D D D D D D D
##
## **Different cycles:** 21 (34.4%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 2</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_19 </td>
## <td style="text-align:right;"> 19 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_20 </td>
## <td style="text-align:right;"> 20 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_21 </td>
## <td style="text-align:right;"> 21 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_22 </td>
## <td style="text-align:right;"> 22 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_23 </td>
## <td style="text-align:right;"> 23 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_24 </td>
## <td style="text-align:right;"> 24 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_25 </td>
## <td style="text-align:right;"> 25 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_26 </td>
## <td style="text-align:right;"> 26 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_27 </td>
## <td style="text-align:right;"> 27 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_28 </td>
## <td style="text-align:right;"> 28 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_3
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D D D D D D D D D D D D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE D D D D D D D D D D D D D D D D D
##
## **Different cycles:** 5 (8.2%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 3</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_13 </td>
## <td style="text-align:right;"> 13 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_14 </td>
## <td style="text-align:right;"> 14 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_15 </td>
## <td style="text-align:right;"> 15 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_16 </td>
## <td style="text-align:right;"> 16 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_17 </td>
## <td style="text-align:right;"> 17 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_4
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE ST D D D D D D D D D D D D D D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE D D D D D D D D D D D D D D D D D D D D D D
##
## **Different cycles:** 8 (13.1%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 4</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_8 </td>
## <td style="text-align:right;"> 8 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_9 </td>
## <td style="text-align:right;"> 9 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_10 </td>
## <td style="text-align:right;"> 10 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_11 </td>
## <td style="text-align:right;"> 11 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_12 </td>
## <td style="text-align:right;"> 12 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_13 </td>
## <td style="text-align:right;"> 13 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_14 </td>
## <td style="text-align:right;"> 14 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_15 </td>
## <td style="text-align:right;"> 15 </td>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:left;"> D </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_5
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D D D D D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE
##
## **Different cycles:** 15 (24.6%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 5</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_25 </td>
## <td style="text-align:right;"> 25 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_26 </td>
## <td style="text-align:right;"> 26 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_27 </td>
## <td style="text-align:right;"> 27 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_28 </td>
## <td style="text-align:right;"> 28 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_29 </td>
## <td style="text-align:right;"> 29 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_30 </td>
## <td style="text-align:right;"> 30 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_31 </td>
## <td style="text-align:right;"> 31 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_32 </td>
## <td style="text-align:right;"> 32 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_33 </td>
## <td style="text-align:right;"> 33 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_34 </td>
## <td style="text-align:right;"> 34 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_6
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D D D D D D D D D D D D D
##
## **Different cycles:** 19 (31.1%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 6</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_17 </td>
## <td style="text-align:right;"> 17 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_18 </td>
## <td style="text-align:right;"> 18 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_19 </td>
## <td style="text-align:right;"> 19 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_20 </td>
## <td style="text-align:right;"> 20 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_21 </td>
## <td style="text-align:right;"> 21 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_22 </td>
## <td style="text-align:right;"> 22 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_23 </td>
## <td style="text-align:right;"> 23 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_24 </td>
## <td style="text-align:right;"> 24 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_25 </td>
## <td style="text-align:right;"> 25 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_26 </td>
## <td style="text-align:right;"> 26 </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> D </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_7
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE D D D D D D D D D D D D D D D D D D D D D D D D D D D D D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D D D D D D D D D D D D D D
##
## **Different cycles:** 15 (24.6%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 7</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_1 </td>
## <td style="text-align:right;"> 1 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_2 </td>
## <td style="text-align:right;"> 2 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_3 </td>
## <td style="text-align:right;"> 3 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_4 </td>
## <td style="text-align:right;"> 4 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_5 </td>
## <td style="text-align:right;"> 5 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_6 </td>
## <td style="text-align:right;"> 6 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_7 </td>
## <td style="text-align:right;"> 7 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_8 </td>
## <td style="text-align:right;"> 8 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_9 </td>
## <td style="text-align:right;"> 9 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_10 </td>
## <td style="text-align:right;"> 10 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_8
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE
##
## **Different cycles:** 9 (14.8%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 8</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_29 </td>
## <td style="text-align:right;"> 29 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_30 </td>
## <td style="text-align:right;"> 30 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_31 </td>
## <td style="text-align:right;"> 31 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_32 </td>
## <td style="text-align:right;"> 32 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_33 </td>
## <td style="text-align:right;"> 33 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_34 </td>
## <td style="text-align:right;"> 34 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_35 </td>
## <td style="text-align:right;"> 35 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_36 </td>
## <td style="text-align:right;"> 36 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_37 </td>
## <td style="text-align:right;"> 37 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_9
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE MI PM PM PM PM PM D D D D D D D D D D D D D D D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE
##
## **Different cycles:** 28 (45.9%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 9</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_9 </td>
## <td style="text-align:right;"> 9 </td>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_10 </td>
## <td style="text-align:right;"> 10 </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_11 </td>
## <td style="text-align:right;"> 11 </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_12 </td>
## <td style="text-align:right;"> 12 </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_13 </td>
## <td style="text-align:right;"> 13 </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_14 </td>
## <td style="text-align:right;"> 14 </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_15 </td>
## <td style="text-align:right;"> 15 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_16 </td>
## <td style="text-align:right;"> 16 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_17 </td>
## <td style="text-align:right;"> 17 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_18 </td>
## <td style="text-align:right;"> 18 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## </tbody>
## </table>
## ---
##
## ### Individual ind_10
##
## **Structure 1 (Direct Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE D D D D D D D D D D D D
##
## **Structure 2 (Composite Risk) (first 30 cycles):**
## NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE NE MI PM PM PM
##
## **Different cycles:** 14 (23.0%)
##
## **First 10 differences:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Differences for Individual 10</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:right;"> Cycle </th>
## <th style="text-align:left;"> Structure1 </th>
## <th style="text-align:left;"> Structure2 </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> cycle_18 </td>
## <td style="text-align:right;"> 18 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_19 </td>
## <td style="text-align:right;"> 19 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_20 </td>
## <td style="text-align:right;"> 20 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_21 </td>
## <td style="text-align:right;"> 21 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_22 </td>
## <td style="text-align:right;"> 22 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_23 </td>
## <td style="text-align:right;"> 23 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_24 </td>
## <td style="text-align:right;"> 24 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_25 </td>
## <td style="text-align:right;"> 25 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> NE </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_26 </td>
## <td style="text-align:right;"> 26 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> MI </td>
## </tr>
## <tr>
## <td style="text-align:left;"> cycle_27 </td>
## <td style="text-align:right;"> 27 </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> PM </td>
## </tr>
## </tbody>
## </table>
## ---
dead_state <- "D"
# Time to death function
time_to_event <- function(mat, state) {
apply(mat, 1, function(row) {
idx <- which(row == state)[1]
ifelse(is.na(idx), ncol(mat) + 1, idx)
})
}
ttd_struct1 <- time_to_event(m_States, dead_state)
ttd_struct2 <- time_to_event(m_States_risk, dead_state)
# Create summary table
death_summary <- data.frame(
Model = c("Structure 1 (Direct Risk)", "Structure 2 (Composite Risk)"),
Mean_Time_to_Death = c(mean(ttd_struct1), mean(ttd_struct2)),
Median_Time_to_Death = c(median(ttd_struct1), median(ttd_struct2)),
SD_Time_to_Death = c(sd(ttd_struct1), sd(ttd_struct2))
)
death_summary$Difference <- c(NA, death_summary$Mean_Time_to_Death[1] - death_summary$Mean_Time_to_Death[2])
cat("\n**Time to Death Summary:**\n\n")##
## **Time to Death Summary:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>Time to Death Statistics</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> Model </th>
## <th style="text-align:right;"> Mean_Time_to_Death </th>
## <th style="text-align:right;"> Median_Time_to_Death </th>
## <th style="text-align:right;"> SD_Time_to_Death </th>
## <th style="text-align:right;"> Difference </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> Structure 1 (Direct Risk) </td>
## <td style="text-align:right;"> 22.7897 </td>
## <td style="text-align:right;"> 22 </td>
## <td style="text-align:right;"> 11.9525 </td>
## <td style="text-align:right;"> NA </td>
## </tr>
## <tr>
## <td style="text-align:left;"> Structure 2 (Composite Risk) </td>
## <td style="text-align:right;"> 22.0025 </td>
## <td style="text-align:right;"> 21 </td>
## <td style="text-align:right;"> 11.9984 </td>
## <td style="text-align:right;"> 0.7872 </td>
## </tr>
## </tbody>
## </table>
5.1.1-Visualize time to death using survival curves
# Survival curves
survival_struct1 <- sapply(1:ncol(m_States), function(t) mean(ttd_struct1 > t))
survival_struct2 <- sapply(1:ncol(m_States), function(t) mean(ttd_struct2 > t))
# Plot survival
plot(0:(ncol(m_States)-1), survival_struct1, type = "l", col = "blue",
ylim = c(0, 1), xlab = "Cycle", ylab = "Survival Probability",
main = "Survival Comparison (Death State D)", lwd = 2)
lines(0:(ncol(m_States)-1), survival_struct2, col = "red", lwd = 2)
legend("topright", legend = c("Structure 1 (Direct Risk)", "Structure 2 (Composite Risk)"),
col = c("blue", "red"), lty = 1, lwd = 2)
grid()
5.2 Time to MI
mi_state <- "MI"
ttmi_struct1 <- time_to_event(m_States, mi_state)
ttmi_struct2 <- time_to_event(m_States_risk, mi_state)
ever_mi_struct1 <- ttmi_struct1 <= ncol(m_States)
ever_mi_struct2 <- ttmi_struct2 <= ncol(m_States_risk)
# Create MI summary table
mi_summary <- data.frame(
Model = c("Structure 1 (Direct Risk)", "Structure 2 (Composite Risk)"),
Ever_MI_Percent = c(100 * mean(ever_mi_struct1), 100 * mean(ever_mi_struct2)),
Mean_Time_to_MI = c(mean(ttmi_struct1[ever_mi_struct1]), mean(ttmi_struct2[ever_mi_struct2])),
Median_Time_to_MI = c(median(ttmi_struct1[ever_mi_struct1]), median(ttmi_struct2[ever_mi_struct2]))
)
mi_summary$Difference_Percent <- c(NA, mi_summary$Ever_MI_Percent[2] - mi_summary$Ever_MI_Percent[1])
mi_summary$Difference_Time <- c(NA, mi_summary$Mean_Time_to_MI[1] - mi_summary$Mean_Time_to_MI[2])
cat("\n**MI Event Summary:**\n\n")##
## **MI Event Summary:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>MI Event Statistics</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> Model </th>
## <th style="text-align:right;"> Ever_MI_Percent </th>
## <th style="text-align:right;"> Mean_Time_to_MI </th>
## <th style="text-align:right;"> Median_Time_to_MI </th>
## <th style="text-align:right;"> Difference_Percent </th>
## <th style="text-align:right;"> Difference_Time </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> Structure 1 (Direct Risk) </td>
## <td style="text-align:right;"> 12.214 </td>
## <td style="text-align:right;"> 24.2286 </td>
## <td style="text-align:right;"> 24 </td>
## <td style="text-align:right;"> NA </td>
## <td style="text-align:right;"> NA </td>
## </tr>
## <tr>
## <td style="text-align:left;"> Structure 2 (Composite Risk) </td>
## <td style="text-align:right;"> 14.857 </td>
## <td style="text-align:right;"> 15.5061 </td>
## <td style="text-align:right;"> 14 </td>
## <td style="text-align:right;"> 2.643 </td>
## <td style="text-align:right;"> 8.7225 </td>
## </tr>
## </tbody>
## </table>
5.2.1-Visualize time to MI using survival curves
# MI-free survival
mi_free_struct1 <- sapply(1:ncol(m_States), function(t) mean(ttmi_struct1 > t))
mi_free_struct2 <- sapply(1:ncol(m_States), function(t) mean(ttmi_struct2 > t))
# Plot MI-free survival
plot(0:(ncol(m_States)-1), mi_free_struct1, type = "l", col = "blue",
ylim = c(0, 1), xlab = "Cycle", ylab = "MI-Free Probability",
main = "MI-Free Survival", lwd = 2)
lines(0:(ncol(m_States)-1), mi_free_struct2, col = "red", lwd = 2)
legend("bottomright", legend = c("Structure 1 (Direct Risk)", "Structure 2 (Composite Risk)"),
col = c("blue", "red"), lty = 1, lwd = 2)
grid()5.3 Time to ST
st_state <- "ST"
ttst_struct1 <- time_to_event(m_States, st_state)
ttst_struct2 <- time_to_event(m_States_risk, st_state)
ever_st_struct1 <- ttst_struct1 <= ncol(m_States)
ever_st_struct2 <- ttst_struct2 <= ncol(m_States_risk)
# Create ST summary table
st_summary <- data.frame(
Model = c("Structure 1 (Direct Risk)", "Structure 2 (Composite Risk)"),
Ever_ST_Percent = c(100 * mean(ever_st_struct1), 100 * mean(ever_st_struct2)),
Mean_Time_to_ST = c(mean(ttst_struct1[ever_st_struct1]), mean(ttst_struct2[ever_st_struct2])),
Median_Time_to_ST = c(median(ttst_struct1[ever_st_struct1]), median(ttst_struct2[ever_st_struct2]))
)
st_summary$Difference_Percent <- c(NA, st_summary$Ever_ST_Percent[2] - st_summary$Ever_ST_Percent[1])
st_summary$Difference_Time <- c(NA, st_summary$Mean_Time_to_ST[1] - st_summary$Mean_Time_to_ST[2])
cat("\n**ST Event Summary:**\n\n")##
## **ST Event Summary:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>ST Event Statistics</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> Model </th>
## <th style="text-align:right;"> Ever_ST_Percent </th>
## <th style="text-align:right;"> Mean_Time_to_ST </th>
## <th style="text-align:right;"> Median_Time_to_ST </th>
## <th style="text-align:right;"> Difference_Percent </th>
## <th style="text-align:right;"> Difference_Time </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> Structure 1 (Direct Risk) </td>
## <td style="text-align:right;"> 15.253 </td>
## <td style="text-align:right;"> 23.0366 </td>
## <td style="text-align:right;"> 23 </td>
## <td style="text-align:right;"> NA </td>
## <td style="text-align:right;"> NA </td>
## </tr>
## <tr>
## <td style="text-align:left;"> Structure 2 (Composite Risk) </td>
## <td style="text-align:right;"> 17.829 </td>
## <td style="text-align:right;"> 15.6108 </td>
## <td style="text-align:right;"> 14 </td>
## <td style="text-align:right;"> 2.576 </td>
## <td style="text-align:right;"> 7.4258 </td>
## </tr>
## </tbody>
## </table>
5.3.1-Visualize time to ST using survival curves
# ST-free survival
st_free_struct1 <- sapply(1:ncol(m_States), function(t) mean(ttst_struct1 > t))
st_free_struct2 <- sapply(1:ncol(m_States), function(t) mean(ttst_struct2 > t))
# Plot ST-free survival
plot(0:(ncol(m_States)-1), st_free_struct1, type = "l", col = "blue",
ylim = c(0, 1), xlab = "Cycle", ylab = "ST-Free Probability",
main = "ST-Free Survival", lwd = 2)
lines(0:(ncol(m_States)-1), st_free_struct2, col = "red", lwd = 2)
legend("topright", legend = c("Structure 1 (Direct Risk)", "Structure 2 (Composite Risk)"),
col = c("blue", "red"), lty = 1, lwd = 2)
grid()
6. State Occupancy Analysis
occupancy_struct1 <- sapply(states_struct1, function(state) {
rowSums(m_States == state, na.rm = TRUE)
})
occupancy_struct2 <- sapply(states_struct2, function(state) {
rowSums(m_States_risk == state, na.rm = TRUE)
})
occupancy_summary <- data.frame(
State = states_struct1,
Structure1_Mean = sapply(states_struct1, function(s) mean(occupancy_struct1[, s])),
Structure1_Pct = sapply(states_struct1, function(s) 100 * mean(occupancy_struct1[, s]) / ncol(m_States)),
Structure2_Mean = sapply(states_struct1, function(s) mean(occupancy_struct2[, s])),
Structure2_Pct = sapply(states_struct1, function(s) 100 * mean(occupancy_struct2[, s]) / ncol(m_States))
)
occupancy_summary$Difference_Mean <- occupancy_summary$Structure1_Mean - occupancy_summary$Structure2_Mean
occupancy_summary$Difference_Pct <- occupancy_summary$Structure1_Pct - occupancy_summary$Structure2_Pct
cat("\n**Mean Cycles Spent in Each State:**\n\n")##
## **Mean Cycles Spent in Each State:**
## <table class="table table-striped table-hover table-condensed" style="color: black; margin-left: auto; margin-right: auto;">
## <caption>State Occupancy Statistics</caption>
## <thead>
## <tr>
## <th style="text-align:left;"> </th>
## <th style="text-align:left;"> State </th>
## <th style="text-align:right;"> Structure1_Mean </th>
## <th style="text-align:right;"> Structure1_Pct </th>
## <th style="text-align:right;"> Structure2_Mean </th>
## <th style="text-align:right;"> Structure2_Pct </th>
## <th style="text-align:right;"> Difference_Mean </th>
## <th style="text-align:right;"> Difference_Pct </th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:left;"> NE </td>
## <td style="text-align:right;"> 20.4794 </td>
## <td style="text-align:right;"> 33.5728 </td>
## <td style="text-align:right;"> 18.7118 </td>
## <td style="text-align:right;"> 30.6751 </td>
## <td style="text-align:right;"> 1.7676 </td>
## <td style="text-align:right;"> 2.8977 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> D </td>
## <td style="text-align:left;"> D </td>
## <td style="text-align:right;"> 39.2103 </td>
## <td style="text-align:right;"> 64.2792 </td>
## <td style="text-align:right;"> 39.9975 </td>
## <td style="text-align:right;"> 65.5697 </td>
## <td style="text-align:right;"> -0.7872 </td>
## <td style="text-align:right;"> -1.2905 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:left;"> ST </td>
## <td style="text-align:right;"> 0.1776 </td>
## <td style="text-align:right;"> 0.2911 </td>
## <td style="text-align:right;"> 0.2245 </td>
## <td style="text-align:right;"> 0.3680 </td>
## <td style="text-align:right;"> -0.0469 </td>
## <td style="text-align:right;"> -0.0769 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:left;"> MI </td>
## <td style="text-align:right;"> 0.1632 </td>
## <td style="text-align:right;"> 0.2676 </td>
## <td style="text-align:right;"> 0.2292 </td>
## <td style="text-align:right;"> 0.3757 </td>
## <td style="text-align:right;"> -0.0659 </td>
## <td style="text-align:right;"> -0.1081 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:left;"> PS </td>
## <td style="text-align:right;"> 0.5689 </td>
## <td style="text-align:right;"> 0.9326 </td>
## <td style="text-align:right;"> 1.0521 </td>
## <td style="text-align:right;"> 1.7248 </td>
## <td style="text-align:right;"> -0.4832 </td>
## <td style="text-align:right;"> -0.7922 </td>
## </tr>
## <tr>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:left;"> PM </td>
## <td style="text-align:right;"> 0.4006 </td>
## <td style="text-align:right;"> 0.6567 </td>
## <td style="text-align:right;"> 0.7849 </td>
## <td style="text-align:right;"> 1.2867 </td>
## <td style="text-align:right;"> -0.3843 </td>
## <td style="text-align:right;"> -0.6300 </td>
## </tr>
## </tbody>
## </table>