---
title: "Attacking a Regression Claim"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Attacking a Regression Claim}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
```

`falsifyr` attacks claims, not whole models. The core question is:

> What would it take to kill this result?

Start with an ordinary fitted model and a term.

```{r}
library(falsifyr)

fit <- lm(score ~ treatment + age + baseline_score, data = fragile_trial)
res <- attack(
  fit,
  term = "treatment",
  attacks = c("row_deletion", "missingness", "noise"),
  intensity = "fast",
  seed = 1
)

res
```

The headline is the smallest kill. In the attack table, `leaderboard_rank`
orders perturbations by lethality and kill distance.

```{r}
res$attacks[, c("leaderboard_rank", "attack_family", "attack_name", "status", "p_value", "explanation")]
```

A killed claim is fragile under that attack. It does not prove that the
original claim is false, and it does not say the perturbed analysis is
preferable.

Reports are static HTML files and can be written to temporary paths in
scripted workflows.

```{r}
report_file <- report(res, file = tempfile(fileext = ".html"))
basename(report_file)
```
