Agent-almanac generate-statistical-tables
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/de/skills/generate-statistical-tables" ~/.claude/skills/pjt222-agent-almanac-generate-statistical-tables-496d5e && rm -rf "$T"
i18n/de/skills/generate-statistical-tables/SKILL.mdStatistische Tabellen generieren
Publikationsreife statistische Tabellen fuer Berichte und Manuskripte erstellen.
Wann verwenden
- Deskriptive Statistiktabellen erstellen
- Regressions- oder ANOVA-Ausgaben formatieren
- Korrelationsmatrizen aufbauen
- APA-konforme Tabellen fuer akademische Arbeiten produzieren
- Tabellen fuer Quarto/R-Markdown-Dokumente generieren
Eingaben
- Erforderlich: Statistische Analyseergebnisse (Modellobjekte, Zusammenfassungsdaten)
- Erforderlich: Ausgabeformat (HTML, PDF, Word)
- Optional: Stilrichtlinie (APA, zeitschriftenspezifisch)
- Optional: Tabellennummerierungsschema
Vorgehensweise
Schritt 1: Tabellenpaket waehlen
| Paket | Optimal fuer | Formate |
|---|---|---|
| HTML, Allzweck | HTML, PDF, Word |
| LaTeX/PDF-Dokumente | PDF, HTML |
| Word-Dokumente | Word, PDF, HTML |
| Klinische/statistische Zusammenfassungen | Alle via gt/flextable |
Erwartet: Ein Tabellenpaket basierend auf dem Ausgabeformat und Anwendungsfall ausgewaehlt. Das gewaehlte Paket ist installiert und ladbar.
Bei Fehler: Wenn das benoetigte Paket nicht installiert ist,
install.packages("gt") (oder das entsprechende Paket) ausfuehren. Fuer gtsummary muessen sowohl gt als auch gtsummary installiert sein.
Schritt 2: Deskriptive Statistiktabelle
library(gt) descriptives <- data |> group_by(group) |> summarise( n = n(), M = mean(score, na.rm = TRUE), SD = sd(score, na.rm = TRUE), Min = min(score, na.rm = TRUE), Max = max(score, na.rm = TRUE) ) gt(descriptives) |> tab_header( title = "Table 1", subtitle = "Descriptive Statistics by Group" ) |> fmt_number(columns = c(M, SD), decimals = 2) |> fmt_number(columns = c(Min, Max), decimals = 1) |> cols_label( group = "Group", n = md("*n*"), M = md("*M*"), SD = md("*SD*") )
Erwartet: Ein
gt-Tabellenobjekt mit formatierten Mittelwerten, Standardabweichungen und Haeufigkeiten nach Kategorie gruppiert. Spaltenkoepfe verwenden korrekte statistische Notation (kursiv M, SD, n).
Bei Fehler: Wenn
group_by() unerwartete Ergebnisse liefert, sicherstellen, dass die Gruppierungsvariable existiert und die erwarteten Stufen hat. Wenn fmt_number() einen Fehler wirft, sicherstellen, dass die Zielspalten numerische Daten enthalten.
Schritt 3: Regressionsergebnis-Tabelle
model <- lm(outcome ~ predictor1 + predictor2 + predictor3, data = data) library(gtsummary) tbl_regression(model) |> bold_p() |> add_glance_source_note( include = c(r.squared, adj.r.squared, nobs) ) |> modify_header(label = "**Predictor**") |> modify_caption("Table 2: Regression Results")
Erwartet: Eine
gtsummary-Regressionstabelle mit fett gedruckten p-Werten, Modellanpassungsstatistiken (R-Quadrat, N) in einer Quellnotiz und einer beschreibenden Ueberschrift.
Bei Fehler: Wenn
tbl_regression() fehlschlaegt, sicherstellen, dass die Eingabe ein Modellobjekt ist (z.B. lm, glm). Wenn add_glance_source_note() Fehler wirft, pruefen, ob broom das Modell verarbeiten kann: broom::glance(model).
Schritt 4: Korrelationsmatrix
library(gt) cor_matrix <- cor(data[, c("var1", "var2", "var3", "var4")], use = "pairwise.complete.obs") # Format lower triangle cor_matrix[upper.tri(cor_matrix)] <- NA as.data.frame(cor_matrix) |> tibble::rownames_to_column("Variable") |> gt() |> fmt_number(decimals = 2) |> sub_missing(missing_text = "") |> tab_header(title = "Table 3", subtitle = "Correlation Matrix")
Erwartet: Eine Korrelationsmatrix mit unterem Dreieck als
gt-Tabelle mit ausgeblendetem oberen Dreieck, zwei Dezimalstellen und einer klaren Ueberschrift.
Bei Fehler: Wenn
sub_missing() das obere Dreieck nicht ausblendet, ueberpruefen, ob NA-Werte korrekt mit cor_matrix[upper.tri(cor_matrix)] <- NA gesetzt wurden. Wenn Variablen nicht-numerisch sind, wird cor() fehlschlagen; zuerst auf numerische Spalten filtern.
Schritt 5: ANOVA-Tabelle
aov_result <- aov(score ~ group * condition, data = data) library(gtsummary) tbl_anova <- broom::tidy(aov_result) |> gt() |> fmt_number(columns = c(sumsq, meansq, statistic), decimals = 2) |> fmt_number(columns = p.value, decimals = 3) |> cols_label( term = "Source", df = md("*df*"), sumsq = md("*SS*"), meansq = md("*MS*"), statistic = md("*F*"), p.value = md("*p*") ) |> tab_header(title = "Table 4", subtitle = "ANOVA Results")
Erwartet: Eine formatierte ANOVA-Tabelle mit Quelle, df, SS, MS, F und p-Spalten. Interaktionsterme sind klar beschriftet und p-Werte auf drei Dezimalstellen formatiert.
Bei Fehler: Wenn
broom::tidy(aov_result) unerwartete Spalten liefert, sicherstellen, dass das Modell ein aov-Objekt ist. Fuer Typ-III-Quadratsummen car::Anova(model, type = 3) statt Basis-aov() verwenden.
Schritt 6: Tabellen speichern
# Save as HTML gtsave(my_table, "table1.html") # Save as Word gtsave(my_table, "table1.docx") # Save as PNG image gtsave(my_table, "table1.png") # For LaTeX/PDF (kableExtra) kableExtra::save_kable(kable_table, "table1.pdf")
Erwartet: Tabelle im angegebenen Dateiformat gespeichert (HTML, Word, PNG oder PDF). Die Ausgabedatei oeffnet sich korrekt in der entsprechenden Anwendung.
Bei Fehler: Wenn
gtsave() fuer das Word-Format fehlschlaegt, sicherstellen, dass das webshot2-Paket installiert ist. Fuer PDF-Ausgabe ueber kableExtra sicherstellen, dass eine LaTeX-Distribution (TinyTeX oder MiKTeX) installiert ist.
Schritt 7: In Quarto-Dokument einbetten
```{r} #| label: tbl-descriptives #| tbl-cap: "Descriptive Statistics by Group" gt(descriptives) |> fmt_number(columns = c(M, SD), decimals = 2) ``` See @tbl-descriptives for summary statistics.
Erwartet: Die Tabelle wird inline im Quarto-Dokument mit einem querverweis-faehigen Label (
@tbl-*) und einer korrekten Ueberschrift gerendert. Die Tabelle passt sich automatisch an das Ausgabeformat des Dokuments an.
Bei Fehler: Wenn die Tabelle nicht gerendert wird, ueberpruefen, ob das Chunk-Label fuer Quarto-Querverweise mit
tbl- beginnt. Wenn die Formatierung in PDF verloren geht, von gt auf kableExtra fuer LaTeX-basierte Ausgabe wechseln.
Validierung
- Tabelle rendert korrekt im Zielformat (HTML, PDF, Word)
- Zahlen sind konsistent formatiert (Dezimalstellen, Ausrichtung)
- Statistische Notation folgt der Stilrichtlinie (kursiv, korrekte Symbole)
- Tabelle hat eine klare Ueberschrift und Nummerierung
- Spaltenkoepfe sind aussagekraeftig
- Anmerkungen/Fussnoten erklaeren Abkuerzungen oder Signifikanzmarker
Haeufige Fehler
- gt in PDF: gt hat eingeschraenkte PDF-Unterstuetzung. kableExtra fuer LaTeX-lastige Dokumente verwenden.
- Rundungsinkonsistenz: Immer
(gt) oderfmt_number()
stattformat()
fuer die Anzeige verwendenround() - Anzeige fehlender Werte: Mit
in gt odersub_missing()
konfigurierenoptions(knitr.kable.NA = "") - Breite Tabellen in PDF: Tabellen, die die Seitenbreite ueberschreiten, benoetigen
oder Schriftgroessenreduzierunglandscape() - APA-Zahlenformatierung: Keine fuehrende Null fuer Werte, die durch 1 begrenzt sind (p-Werte, Korrelationen): ".03" nicht "0.03"
Verwandte Skills
- Tabellen in APA-Manuskriptenformat-apa-report
- Tabellen in Berichte einbettencreate-quarto-report
- Tabellen, die sich an Parameter anpassenbuild-parameterized-report