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-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.
Alle Mittelwerte werden auf der Modellskala ฮท (linearer Prรคdiktor) eingegeben:
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.
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.
Wenn ein Within-Faktor aktiv ist, entstehen korrelierte Messwiederholungen. Die Korrelationsmatrix (Tab 2) bestimmt, wie stark die Zeitpunkte miteinander zusammenhรคngen.
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.
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 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.
pivot_longer() automatisch repliziert wird.cleanR() sanitiert (Leerzeichen โ Unterstriche, Sonderzeichen entfernt).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).
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.
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 Kovarianzstrukturbase R (rnorm, rbinom, โฆ) fรผr einfache Between-/No-Factor-DesignsMASS::mvrnorm() fรผr korrelierte Random-Effects (ฯโ, ฯโ) und korrelierte KovariablenNicht-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.
๐ฏ Exakte Parameter (Toggle oben): Erzwingt exakte Stichproben-Mittelwerte/SDs statt Zufallsstreuung โ nรผtzlich um z.B. zu prรผfen, ob ein Modell die wahren Populationsparameter exakt zurรผckgewinnt. Nutzt das empirical = TRUE-Prinzip (linear reskalieren, statt neu zu ziehen) und wirkt identisch in der JS-Vorschau/CSV und im generierten R-Code. Gilt vollstรคndig fรผr Gaussian/Student/Lognormal (Kovariablen, Cluster-Random-Effects, Y); bei Gamma/Bernoulli/Beta/Binomial/Poisson/NegBinomial nur fรผr die zugrundeliegende ฮท-/Cluster-Struktur โ die finale Ziehung bleibt dort zufรคllig, da es kein allgemeines exaktes Verfahren fรผr diese Familien gibt. Der Poweranalyse-Codeblock ignoriert den Toggle bewusst (Monte-Carlo-Power braucht echte Stichprobenstreuung).
Pakete (Installation):
install.packages("faux")install.packages("glmmTMB")install.packages("MASS") # meist vorinstalliertinstall.packages("future.apply") # fรผr Power-ParallelisierungAm 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-TestsN_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 TermZwei Testvarianten im Block:
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).anova() โ Likelihood-Ratio-Tests durch Modellvergleich. Statistisch genauer (v.a. bei kleinen N und non-Gaussian), aber ~3โ6ร langsamer. Enthรคlt:
Y ~ 1 + RE)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:
t_family() โ nicht gaussian()!lognormal() โ nicht gaussian(link="log")!Gamma(link = "log")beta_family(link = "logit")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.
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.