Bagaimana cara mensimulasikan data untuk menunjukkan efek campuran dengan R (lme4)?
10
Sebagai bagian dari posting ini , saya bekerja pada simulasi data dengan variabel kontinu, meminjamkan diri untuk intersep dan lereng berkorelasi.
Meskipun ada posting bagus tentang topik ini di situs , dan di luar situs , saya mengalami kesulitan dalam menemukan contoh awal-ke-akhir dengan data simulasi yang paralel dengan skenario sederhana, kehidupan nyata.
Jadi pertanyaannya adalah bagaimana mensimulasikan data ini, dan "mengujinya" dengan lmer. Tidak ada yang baru bagi banyak orang, tetapi mungkin bermanfaat bagi banyak orang lain yang mencari untuk memahami model campuran.
Jika Anda lebih suka format artikel blog, model linear hierarki dan lmer adalah artikel yang saya tulis yang menampilkan simulasi dengan kemiringan dan penyadapan acak. Berikut kode simulasi yang saya gunakan:
rm(list = ls())
set.seed(2345)
N <-30
unit.df <- data.frame(unit = c(1:N), a = rnorm(N))
head(unit.df,3)
unit.df <- within(unit.df,{
E.alpha.given.a <-1-0.15* a
E.beta.given.a <-3+0.3* a})
head(unit.df,3)
library(mvtnorm)
q =0.2
r =0.9
s =0.5
cov.matrix <- matrix(c(q^2, r * q * s, r * q * s, s^2), nrow =2,
byrow =TRUE)
random.effects <- rmvnorm(N, mean = c(0,0), sigma = cov.matrix)
unit.df$alpha <- unit.df$E.alpha.given.a + random.effects[,1]
unit.df$beta <- unit.df$E.beta.given.a + random.effects[,2]
head(unit.df,3)
J <-30
M = J * N #Total number of observations
x.grid = seq(-4,4, by =8/J)[0:30]
within.unit.df <- data.frame(unit = sort(rep(c(1:N), J)), j = rep(c(1:J),
N), x =rep(x.grid, N))
flat.df = merge(unit.df, within.unit.df)
flat.df <- within(flat.df, y <- alpha + x * beta +0.75* rnorm(n = M))
simple.df <- flat.df[, c("unit","a","x","y")]
head(simple.df,3)
library(lme4)
my.lmer <- lmer(y ~ x +(1+ x | unit), data = simple.df)
cat("AIC =", AIC(my.lmer))
my.lmer <- lmer(y ~ x + a + x * a +(1+ x | unit), data = simple.df)
summary(my.lmer)
Ben, Terima kasih atas jawaban Anda! Saya benar-benar sibuk sekarang, tetapi saya akan memeriksanya dengan hati-hati segera setelah saya mendapat kesempatan. + kredit :-)
Antoni Parellada
1
Data ini sepenuhnya fiksi dan kode yang saya gunakan untuk menghasilkannya dapat ditemukan di sini .
Idenya adalah bahwa kita akan melakukan pengukuran pada glucose concentrationskelompok 30athletespada saat penyelesaian 15racessehubungan dengan konsentrasi make-up amino acid A( AAA) dalam darah atlet ini.
Ada kemiringan efek tetap (konsentrasi glukosa ~ asam amino A); Namun, lereng juga bervariasi antara atlet yang berbeda dengan mean = 0dan sd = 0.5, sementara penyadapan untuk atlet yang berbeda tersebar efek acak di sekitar 0dengan sd = 0.2. Selanjutnya ada korelasi antara intersep dan slope 0,8 dalam atlet yang sama.
Efek acak ini ditambahkan ke yang dipilih intercept = 1untuk efek tetap, dan slope = 2.
alpha + AAA * beta + 0.75 * rnorm(observations)1 + random effects changes in the intercept+AAA∗2 + random effect changes in slopes for each athlete+noiseϵsd = 0.75
Tingkat glukosa yang tidak realistis, tetapi masih ...
Ringkasan kembali:
Random effects:
Groups Name Variance Std.Dev. Corr
athletes (Intercept)0.0060450.07775
AAA 0.2044710.452181.00
Residual 0.5456510.73868
Number of obs:450, groups: athletes,30
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)(Intercept)1.311460.35845401.900003.6590.000287***
AAA 1.937850.0828629.0000023.386<2e-16***---
Signif. codes:0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Korelasi efek acak 1bukannya 0.8. Untuk sd = 2variasi acak dalam intersep ditafsirkan sebagai 0.07775. Deviasi standar 0.5untuk perubahan acak pada lereng di antara atlet dihitung sebagai 0.45218. Kebisingan yang diatur dengan standar deviasi 0.75dikembalikan sebagai 0.73868.
Mencegah efek tetap seharusnya 1, dan kami mendapatkannya 1.31146. Untuk lereng seharusnya 2, dan perkiraannya adalah 1.93785.
Data ini sepenuhnya fiksi dan kode yang saya gunakan untuk menghasilkannya dapat ditemukan di sini .
Idenya adalah bahwa kita akan melakukan pengukuran pada
glucose concentrations
kelompok30
athletes
pada saat penyelesaian15
races
sehubungan dengan konsentrasi make-upamino acid A
(AAA
) dalam darah atlet ini.Modelnya adalah:
lmer(glucose ~ AAA + (1 + AAA | athletes)
Ada kemiringan efek tetap (konsentrasi glukosa ~ asam amino A); Namun, lereng juga bervariasi antara atlet yang berbeda dengan
mean = 0
dansd = 0.5
, sementara penyadapan untuk atlet yang berbeda tersebar efek acak di sekitar0
dengansd = 0.2
. Selanjutnya ada korelasi antara intersep dan slope 0,8 dalam atlet yang sama.Efek acak ini ditambahkan ke yang dipilih
intercept = 1
untuk efek tetap, danslope = 2
.alpha + AAA * beta + 0.75 * rnorm(observations)
1 + random effects changes in the intercept
AAA
2 + random effect changes in slopes for each athlete
noise
sd = 0.75
Jadi datanya terlihat seperti:
Tingkat glukosa yang tidak realistis, tetapi masih ...
Ringkasan kembali:
Korelasi efek acak
1
bukannya0.8
. Untuksd = 2
variasi acak dalam intersep ditafsirkan sebagai0.07775
. Deviasi standar0.5
untuk perubahan acak pada lereng di antara atlet dihitung sebagai0.45218
. Kebisingan yang diatur dengan standar deviasi0.75
dikembalikan sebagai0.73868
.Mencegah efek tetap seharusnya
1
, dan kami mendapatkannya1.31146
. Untuk lereng seharusnya2
, dan perkiraannya adalah1.93785
.Cukup dekat!
sumber