# Time To Event Methods

> Survival analysis methods including weighted logrank, MaxCombo, RMST, and milestone tests. Use when analyzing TTE data or choosing analysis methods for non-proportional hazards.

- Skill: `choxos/time-to-event-methods` (Agent Skill)
- Install (CLI): `npx skillmds@latest add choxos/time-to-event-methods`
- Raw SKILL.md: https://api.skillmd.com/api/skills/choxos/time-to-event-methods/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: choxos (https://skillmd.com/u/choxos)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/choxos/time-to-event-methods

---


# Time-to-Event Methods

## When to Use This Skill

- Selecting appropriate analysis methods for survival endpoints
- Handling non-proportional hazards scenarios
- Implementing weighted logrank tests
- Designing MaxCombo tests
- Using RMST or milestone endpoints

## Analysis Methods Overview

### Standard Logrank Test

**When Optimal:**
- Proportional hazards assumption holds
- Treatment effect constant over time

**Formula:**
```
Z = Σ(O_trt - E_trt) / √(Var)
```

**simtrial Implementation:**
```r
data |> wlr(weight = fh(rho = 0, gamma = 0))
```

### Fleming-Harrington Weighted Logrank

**Weight Function:**
```
w(t) = S(t)^ρ × (1 - S(t))^γ
```

**Parameter Effects:**

| ρ | γ | Emphasis | Best For |
|---|---|----------|----------|
| 0 | 0 | Uniform (standard LR) | Proportional hazards |
| 0 | 0.5 | Moderate late | Moderate delayed effect |
| 0 | 1 | Strong late | Strong delayed effect |
| 1 | 0 | Early | Early divergence |
| 0.5 | 0.5 | Balanced | Crossing hazards |

**simtrial Implementation:**
```r
# Late emphasis
data |> wlr(weight = fh(rho = 0, gamma = 0.5))

# Early emphasis
data |> wlr(weight = fh(rho = 1, gamma = 0))
```

### Magirr-Burman (MB) Weights

**Design:** Zero weight before delay, then increasing weight.

**Parameters:**
- `delay`: Time before weights increase
- `w_max`: Maximum weight cap

**Formula:**
```
w(t) = min(w_max, S(min(t, τ*))^(-1))
```

**When to Use:**
- Known delay in treatment effect
- Clear scientific rationale for delay period

**simtrial Implementation:**
```r
# 4-month delay, max weight 2
data |> wlr(weight = mb(delay = 4, w_max = 2))

# Unlimited weight growth
data |> wlr(weight = mb(delay = 6, w_max = Inf))
```

### Early Zero Weights (Xu et al., 2017)

**Design:** Exactly zero weight for early period, then standard logrank.

**When to Use:**
- Want to completely ignore early period
- Regulatory acceptance of early exclusion

**simtrial Implementation:**
```r
# Zero weight for first 6 months
data |> wlr(weight = early_zero(early_period = 6))
```

### MaxCombo Test

**Concept:** Combine multiple weighted logrank tests, take maximum Z-score.

**Advantages:**
- Robust across NPH patterns
- Maintains power under uncertainty
- Single pre-specified p-value

**Common Combinations:**

| Combo | Tests | Use Case |
|-------|-------|----------|
| 2-test | FH(0,0) + FH(0,1) | Unknown late effect |
| 3-test | FH(0,0) + FH(0,0.5) + FH(0.5,0.5) | Comprehensive |
| Custom | FH(0,0) + FH(0,1) + FH(1,1) | Maximum robustness |

**simtrial Implementation:**
```r
# Two-test MaxCombo
data |> maxcombo(rho = c(0, 0), gamma = c(0, 1))

# Three-test MaxCombo
data |> maxcombo(rho = c(0, 0, 0.5), gamma = c(0, 0.5, 0.5))
```

**Correlation Handling:**
MaxCombo accounts for correlation between tests using multivariate normal distribution.

### Restricted Mean Survival Time (RMST)

**Definition:** Area under survival curve up to time τ.

**Formula:**
```
RMST(τ) = ∫₀^τ S(t) dt
```

**Advantages:**
- Interpretable (expected survival time)
- Valid under non-PH
- No proportionality assumption

**Considerations:**
- Choice of τ is critical
- τ must be within follow-up
- Less powerful than logrank under PH

**simtrial Implementation:**
```r
data |> rmst(tau = 24)  # RMST at 24 months
```

### Milestone Analysis

**Definition:** Compare survival probability at fixed time point.

**Test Statistic:**
```
Z = (S_trt(t*) - S_ctrl(t*)) / SE
```

**Advantages:**
- Easy to interpret
- Clinically meaningful time point
- Valid under non-PH

**simtrial Implementation:**
```r
data |> milestone(ms_time = 12, test_type = "naive")
```

## Non-Proportional Hazards Patterns

### Delayed Treatment Effect

**Pattern:** HR = 1 initially, then HR < 1

**Analysis Recommendations:**
1. Primary: FH(0, γ) with γ > 0 or MaxCombo
2. Sensitivity: Standard logrank
3. Alternative: RMST with appropriate τ

**Simulation Setup:**
```r
fail_rate <- data.frame(
  stratum = rep("All", 4),
  period = rep(1:2, 2),
  treatment = c(rep("control", 2), rep("experimental", 2)),
  duration = c(4, 100, 4, 100),  # 4-month delay
  rate = log(2) / c(12, 12, 12, 18)  # HR=1 then HR=0.67
)
```

### Crossing Hazards

**Pattern:** Early benefit reverses over time

**Analysis Recommendations:**
1. Consider if crossing is clinically meaningful
2. FH(0.5, 0.5) may be appropriate
3. MaxCombo provides robustness
4. RMST with carefully chosen τ

### Diminishing Effect

**Pattern:** Strong early effect that wanes

**Analysis Recommendations:**
1. FH(ρ, 0) with ρ > 0
2. Early milestone analysis
3. Consider if effect is clinically durable

### Cure Model

**Pattern:** Proportion of patients cured (never event)

**Analysis Recommendations:**
1. Standard logrank often adequate
2. Long-term milestone helpful
3. Consider cure fraction estimation

## Method Selection Algorithm

```
START
  │
  ├─ Is proportional hazards expected?
  │   ├─ Yes → Standard logrank FH(0,0)
  │   └─ No → Continue
  │
  ├─ Is delayed effect expected?
  │   ├─ Yes, delay known → MB weights
  │   ├─ Yes, delay uncertain → FH(0, 0.5) or MaxCombo
  │   └─ No → Continue
  │
  ├─ Is crossing possible?
  │   ├─ Yes → RMST or FH(0.5, 0.5)
  │   └─ No → Continue
  │
  ├─ Maximum robustness needed?
  │   ├─ Yes → MaxCombo
  │   └─ No → FH(0, γ) based on expected pattern
  │
END
```

## Power Comparison Under Different Scenarios

### Proportional Hazards (HR = 0.7)

| Method | Relative Power |
|--------|---------------|
| Logrank FH(0,0) | 100% (optimal) |
| FH(0, 0.5) | ~95% |
| MaxCombo | ~98% |
| RMST | ~90% |

### Delayed Effect (3-month delay, HR = 0.6 after)

| Method | Relative Power |
|--------|---------------|
| Logrank FH(0,0) | 70% |
| FH(0, 0.5) | 90% |
| MB(delay=3) | 95% |
| MaxCombo | 92% |

### Crossing Hazards

| Method | Relative Power |
|--------|---------------|
| Logrank FH(0,0) | Variable |
| FH(0.5, 0.5) | Better |
| RMST | Depends on τ |
| MaxCombo | Robust |

## Practical Considerations

### Regulatory Acceptance

- FDA generally accepts weighted logrank with justification
- Pre-specification is critical
- MaxCombo gaining acceptance
- RMST as sensitivity analysis

### Pre-specification Requirements

1. Analysis method must be specified before unblinding
2. Weight parameters (ρ, γ) must be fixed
3. MaxCombo test components must be defined
4. τ for RMST must be justified

### Sample Size Implications

- Weighted tests may require larger sample under PH
- MaxCombo has slight efficiency loss
- Consider this in planning

## Best Practices

1. **Primary Analysis**: Choose method aligned with expected NPH pattern
2. **Sensitivity Analyses**: Include standard logrank and alternatives
3. **Justification**: Document scientific rationale for method choice
4. **Simulation**: Validate power across plausible scenarios
5. **Pre-specification**: Lock method before any data review

