Data Creator β€” Hilfe & Dokumentation
Was ist der Data Creator? β–Έ

Der Data Creator erzeugt parametrische BeispieldatensΓ€tze fΓΌr Lehr- und Simulationszwecke. Du legst das Design fest (Between- und/oder Within-Faktoren, Likelihood, Clusterstruktur) und gibst direkt die theoretischen Mittelwerte ein β€” der Code ΓΌbernimmt die Datenerzeugung.

Ergebnis: CSV-Export (Wide & Long), vollstΓ€ndiger R-Code (mit faux::sim_design, glmmTMB, Power-Simulation), und eine interaktive Vorschau.

Der Data Creator ist kein Analysewerkzeug β€” er hilft beim Studiendesign, Poweranalyse und Prior Predictive Checking.

Between vs. Within Faktoren β–Έ

Between-Subject-Faktor: Jede Versuchsperson gehΓΆrt zu genau einer Gruppe (z.B. Kontroll- vs. Experimentalgruppe). Varianz entsteht zwischen Personen.

Within-Subject-Faktor: Dieselbe Person wird mehrfach gemessen (z.B. Zeitpunkte t1, t2, t3). Messwiederholung erzeugt Korrelation zwischen den Levels. Der Data Creator unterstΓΌtzt aktuell einen Within-Faktor.

Die Kombination aus beiden heißt Mixed Design (= Split-Plot). In brms: bf(Y ~ gruppe * time + (1 | id))

Levelnames: Kommagetrennt eingeben, z.B. A, B, C. Leerzeichen werden automatisch in Unterstriche umgewandelt.

Likelihood & Modellskala (Ξ·) β–Έ

Alle Mittelwerte werden auf der Modellskala Ξ· (linearer PrΓ€diktor) eingegeben:

  • Gauß: Ξ· = E[Y] direkt (Identity-Link)
  • Poisson / NegBin: Ξ· = log(E[Y]) β†’ E[Y] = exp(Ξ·)
  • Bernoulli / Beta / Binomial: Ξ· = logit(p) β†’ p = 1/(1+exp(βˆ’Ξ·))
  • Lognormal: Ξ· = E[log(Y)] β†’ Median = exp(Ξ·)
  • Gamma: Ξ· = log(E[Y]), Ο† = Shape (VariabilitΓ€t)
  • Student-t: Ξ· = E[Y], Ξ½ = Freiheitsgrade (kleiner Ξ½ = schwerere SchwΓ€nze)

Der ⇄ Rohskala-Button erlaubt die Eingabe auf der Antwortskala E[Y] β€” intern wird alles auf Ξ· umgerechnet.

Der Scale Converter (unter der Likelihood-Auswahl) zeigt die Umrechnung Ξ· ↔ E[Y] interaktiv fΓΌr beliebige Werte.

Mittelwert-Grid & Standardabweichungen β–Έ

Das Mittelwert-Grid zeigt alle Design-Zellen. FΓΌr ein 2Γ—3-Design (2 Between-Levels Γ— 3 Within-Levels) entstehen 6 Zellen.

Die SD-Zeile legt die Residual-Streuung pro Zelle fest β€” auf der Modellskala (Οƒ fΓΌr Gauß, wird bei anderen Likelihoods intern verwendet).

FΓΌr Nicht-Gauß-Likelihoods steuert Οƒ nicht direkt die Varianz der Zielverteilung, sondern die Varianz der Normalapproximation auf Ξ·-Ebene, aus der dann die Zielverteilung transformiert wird.

Korrelationsmatrix (Within-Design) β–Έ

Wenn ein Within-Faktor aktiv ist, entstehen korrelierte Messwiederholungen. Die Korrelationsmatrix (Tab 2) bestimmt, wie stark die Zeitpunkte miteinander zusammenhΓ€ngen.

  • Compound Symmetry (CS): Alle Off-Diagonal-EintrΓ€ge gleich ρ (einfachstes Modell)
  • AR(1): ρ^|j-k| β€” nahegelegene Zeitpunkte korrelieren stΓ€rker (typisch fΓΌr LΓ€ngsschnitt)
  • Custom: Freie Eingabe jedes Matrixelements (muss positiv-definit sein)

Der rote Rahmen bei Custom zeigt an, dass die Matrix nicht positiv-definit ist und keine gΓΌltige Kovarianzmatrix ergibt.

Bei Nicht-Gauß-Likelihoods: Die Korrelationsstruktur wirkt als Gauß-Approximation auf Ξ·-Ebene β€” das ist bei moderaten Korrelationen vertretbar.

Cluster / Random Effects (Ο„β‚€, τ₁, ρ₀₁) β–Έ

Der Cluster-Toggle fΓΌgt eine Gruppenstruktur hinzu (z.B. SchΓΌler in Klassen). Jede Klasse bekommt einen zufΓ€lligen Intercept uβ‚€β±Ό ~ N(0, Ο„β‚€Β²).

Ο„β‚€ (Random-Intercept-SD): Wie stark unterscheiden sich Klassen im Mittelniveau? Grâßerer Ο„β‚€ = mehr HeterogenitΓ€t zwischen Clustern.

τ₁ (Random-Slope-SD): Wenn τ₁ > 0, bekommt jede Klasse auch einen zufΓ€lligen Slope fΓΌr den gewΓ€hlten PrΓ€diktor. Formel: (1 + Methode | Klasse)

ρ₀₁ (Intercept-Slope-Korrelation): Korrelation zwischen uβ‚€ und u₁. Positiv bedeutet: Klassen mit hohem Basisniveau zeigen auch stΓ€rkere Effekte. Wird ΓΌber Cholesky-Zerlegung erzeugt.

Slope auf: WΓ€hle, welcher PrΓ€diktor den Random Slope bekommt β€” Between- oder Within-Faktor mΓΆglich. Das bestimmt die brms-Formel.

ICC: Intraclass Correlation = Ο„β‚€Β²/(Ο„β‚€Β²+σ²). Typische Werte: Schulen ~0.10–0.20, Familien ~0.15–0.45.

Kovariablen (kontinuierliche PrΓ€diktoren) β–Έ

Kovariablen sind kontinuierliche PrΓ€diktoren, die zusΓ€tzlich zu Between/Within-Faktoren generiert werden (max. 2). Sie erscheinen als Spalten im CSV und in der Formelvorschau.

ΞΌ / Οƒ: Globaler Mittelwert und Standardabweichung der Kovariable.

ΞΌ je Gruppe: Wenn Between-Faktoren vorhanden sind, kann der Mittelwert pro Gruppe variieren β€” das erzeugt eine Konfundierung zwischen Kovariable und Faktor (typischer Anwendungsfall fΓΌr G-Computation).

ρ mit cov1: Wenn 2 Kovariablen definiert sind, kânnen sie über eine Cholesky-Zerlegung korreliert generiert werden. Im R-Code wird MASS::mvrnorm() verwendet.

  • Kovariablen sind immer between-subjects (zeitinvariant): bei Within-Design eine Spalte pro Subjekt, die durch pivot_longer() automatisch repliziert wird.
  • Kovariablen-Namen werden im R-Code durch cleanR() sanitiert (Leerzeichen β†’ Unterstriche, Sonderzeichen entfernt).
Formel & Modellspezifikation β–Έ

Die Formelvorschau (Tab 1) zeigt lme4- und brms-kompatible Formeln. Bei mehreren Faktoren wird automatisch das volle Interaktionsmodell (A * B * W) vorgeschlagen β€” das robusteste Modell bei Messwiederholung.

A * B expandiert zu A + B + A:B (Haupteffekte + Interaktion). A * B * W ergibt alle 2-Wege und die 3-Wege-Interaktion.

Der Random-Effect-Term (1 | Klasse) erscheint automatisch wenn Cluster aktiv. Mit Random Slope: (1 + Zeit | Klasse).

Visualisierung & Plot-Optionen β–Έ

Rohdaten / Mittelwerte: Zeigt Einzelpunkte (subsampelt), Boxplots (Between) oder Mittelwertslinien (Within) + Spaghetti-Linien pro Cluster.

Effektplot: Zeigt Median (50. Pct.) + Band von 16. bis 84. Pct. (~Β±1 SD bei Normalverteilung). Klarer, aber ohne Rohdaten.

Gruppen-Selektor: Bei mehreren Between-Faktoren kannst du auswΓ€hlen, welcher Faktor die Farben/Linien bestimmt. "Alle Kombinationen" zeigt alle Zellen gleichzeitig.

X-Achse-Selektor (Between-only, β‰₯2 Between-Faktoren): Welcher Faktor geht auf die X-Achse? Der Gruppen-Selektor bestimmt dann die Farb-Gruppierung.

R-Code Export & faux::sim_design() β–Έ

Der generierte R-Code ist vollstΓ€ndig reproduzierbar und nutzt:

  • faux::sim_design() (DeBruine & Barr 2021) fΓΌr Within-Designs β€” erzeugt korrelierte Normalverteilungen mit der angegebenen Kovarianzstruktur
  • base R (rnorm, rbinom, …) fΓΌr einfache Between-/No-Factor-Designs
  • MASS::mvrnorm() fΓΌr korrelierte Random-Effects (Ο„β‚€, τ₁) und korrelierte Kovariablen

Nicht-Gauß-Likelihoods: sim_design() erzeugt immer normalverteilte Ξ·-Werte. Diese werden danach via mutate(across(...)) in die Zielverteilung transformiert (z.B. rbinom(n(), 1, plogis(eta)) fΓΌr Bernoulli). Das ist eine Gauß-Approximation auf Ξ·-Ebene β€” fΓΌr moderate Korrelationen und nicht zu extreme Verteilungsparameter gut geeignet.

Wide β†’ Long: Within-Designs erzeugen dat_wide (eine Spalte pro Zeitpunkt). pivot_longer() macht daraus dat_long β€” das Format, das brms/lme4 erwartet. Kovariablen (between-subjects) werden dabei automatisch repliziert.

empirical = TRUE: Wenn exakte Stichprobenkennwerte statt Zufallsziehung gewΓΌnscht werden β€” nΓΌtzlich wenn JS-Visualisierung und R-Code ΓΌbereinstimmen sollen.

Pakete (Installation):

  • install.packages("faux")
  • install.packages("glmmTMB")
  • install.packages("MASS") # meist vorinstalliert
  • install.packages("future.apply") # fΓΌr Power-Parallelisierung
Power-Simulation (auskommentierter Block) β–Έ

Am Ende jedes generierten R-Codes befindet sich ein vollstΓ€ndiger, auskommentierter Power-Simulations-Block. Die #-Zeichen entfernen und der Block ist direkt in R ausfΓΌhrbar.

Aufbau des Blocks:

  • library(glmmTMB) + library(car) β€” Pakete fΓΌr GLMMs und Omnibus-Tests
  • N_sim <- 500 β€” Simulationswiederholungen (500–1000 fΓΌr stabile SchΓ€tzung)
  • sim_data_one(seed) β€” erzeugt einen Datensatz mit deinen Parametern; bei Within-Design mit (1|id)
  • fit_and_test(seed) β€” fittet Vollmodell, gibt benannten logischen Vektor zurΓΌck (ein Wert pro Term)
  • sapply() β†’ Matrix (Zeilen = Terme, Spalten = Sims); rowMeans() = Power pro Term

Zwei Testvarianten im Block:

  • Option A (Standard): car::Anova(type="II") β€” Wald-Omnibus-Tests fΓΌr alle Terme in einem Modell-Fit. Schnell, ein Fit pro Sim. Gibt Power pro Term aus. Wenn Interaktionen vorhanden sind und Haupteffekte konditional interpretiert werden sollen: options(contrasts = c("contr.sum", "contr.poly")) + type="III" (Kommentar im Code).
  • Option B (am Ende, auskommentiert): LRT via anova() β€” Likelihood-Ratio-Tests durch Modellvergleich. Statistisch genauer (v.a. bei kleinen N und non-Gaussian), aber ~3–6Γ— langsamer. EnthΓ€lt:
    • Interaktionstest: Vollmodell vs. Additiv
    • Typ-II-Haupteffekte: Additiv vs. Additiv-ohne-X (kontrolliert fΓΌr alle anderen)
    • Jeder Faktor vs. Nullmodell (Y ~ 1 + RE)
    • Additives Modell vs. Null (alle Haupteffekte kombiniert)

Within-Design und ID-Variable: Bei Within-Faktoren enthΓ€lt die Power-Formel immer (1 | id), damit die wiederholten Messungen korrekt modelliert werden. Das id stammt aus faux::sim_design() und ΓΌberlebt den pivot_longer()-Schritt.

glmmTMB-Familien β€” Unterschied zu brms/lme4:

  • Student-t: t_family() β€” nicht gaussian()!
  • Lognormal: lognormal() β€” nicht gaussian(link="log")!
  • Gamma: Gamma(link = "log")
  • Beta: beta_family(link = "logit")
  • Neg. Binomial: nbinom2(link = "log") (NB2-Parametrisierung)

Parallelisierung: library(future.apply); plan(multisession) β†’ future_sapply() statt sapply(). Speedup ~3–6Γ— je nach Rechner.

Interpretation: Power von 80 % = in 80 von 100 Replikationen des Experiments wΓ€re der Effekt bei deinen gewΓ€hlten Parametern signifikant nachweisbar.

HΓ€ufige Fragen & Fallstricke β–Έ

Warum stimmen JS-Simulation und R-Code nicht exakt ΓΌberein?
JS nutzt mulberry32 als PRNG, R den Mersenne Twister. Gleicher Seed β†’ Γ€hnliche, aber nicht identische Zufallszahlen. FΓΌr exakte Übereinstimmung: empirical = TRUE in faux::sim_design() β€” dann entsprechen die Stichprobenkennwerte exakt den eingestellten Werten.

Warum erscheinen Faktornamen im R-Code anders als eingegeben?
Namen mit Leerzeichen oder Sonderzeichen (z.B. "Reaktions Zeit (ms)") werden automatisch bereinigt: Leerzeichen/Bindestriche β†’ Unterstriche, ΓΌbrige Sonderzeichen werden entfernt. Im CSV-Header und in der Formelvorschau werden ebenfalls die bereinigten Namen verwendet.

Kovariablen in Within-Designs (Wide β†’ Long):
Kovariablen sind between-subjects und erscheinen daher im Wide-Format als eine Spalte. Nach pivot_longer() wird die Kovariable automatisch fΓΌr jede Messung repliziert β€” das ist das korrekte Long-Format fΓΌr brms/lme4.

Nicht-Gauß-Likelihoods und Korrelationsmatrix:
faux::sim_design() erzeugt intern immer normalverteilte η-Werte (linearer PrÀdiktor). Die Korrelationsstruktur (Tab 2) wirkt auf dieser η-Ebene. Nach der Transformation in die Zielverteilung (z.B. Poisson, Beta) ist die Pearson-Korrelation zwischen den Within-Levels niedriger als ρ. Bei starker Nicht-NormalitÀt (z.B. Bernoulli mit extremen ps) kann der Unterschied erheblich sein.

Gamma-Parametrisierung:
Im Data Creator wird Gamma(ΞΌ, Ο†) mit Log-Link verwendet: ΞΌ = exp(Ξ·), Shape = Ο†, Rate = Ο†/ΞΌ. Das entspricht brms' Gamma(link="log")-Parametrisierung. Die Varianz ist ΞΌΒ²/Ο† β€” je grâßer Ο†, desto kleiner die relative VariabilitΓ€t.

Beta-Parametrisierung:
Beta(ΞΌ, Ο†) mit ΞΌ = logit⁻¹(Ξ·), Ξ± = ΞΌΒ·Ο†, Ξ² = (1-ΞΌ)Β·Ο†. Ο† ist der PrΓ€zisionsparameter: grâßeres Ο† = schmalere Verteilung um ΞΌ. Typischer Wertebereich fΓΌr Ο† in Likert-Daten: 5–20.

ICC berechnen:
ICC = Ο„β‚€Β² / (Ο„β‚€Β² + σ²). FΓΌr Gauß-Design: Ο„β‚€ = 0.5, Οƒ = 1 β†’ ICC β‰ˆ 0.20. Typische Richtwerte: Schulen ~0.10–0.20, Familien ~0.20–0.40, Messungen an Personen ~0.50–0.70.

Mittelwerte auf Antwortskala eingeben (inverse Link)
FΓΌge Faktoren hinzu, um die Mittelwert-Matrix zu konfigurieren.
Kein Within-Faktor definiert. Korrelationsmatrix nicht verfΓΌgbar.
Cluster-Struktur nicht aktiviert.
Modellformel-Vorschau
lme4:Y ~ 1
brms:Y ~ 1