R (lme4) के साथ मिश्रित प्रभावों को प्रदर्शित करने के लिए डेटा का अनुकरण कैसे करें?


10

इस पोस्ट के प्रतिपक्ष के रूप में , मैंने निरंतर चर के साथ डेटा का अनुकरण करने पर काम किया, खुद को सहसंबद्ध अंतर्विरोधों और ढलानों को उधार दिया।

यद्यपि साइट पर इस विषय पर महान पोस्ट हैं , और साइट के बाहर , मुझे एक सरल, वास्तविक जीवन परिदृश्य को समेटने वाले सिम्युलेटेड डेटा के साथ शुरुआत से अंत तक आने में कठिनाइयां थीं।

तो सवाल यह है कि इन आंकड़ों का अनुकरण कैसे किया जाए, और इसके साथ "परीक्षण" करें lmer। कई लोगों के लिए कुछ भी नया नहीं है, लेकिन मिश्रित मॉडल को समझने के लिए खोज करने वाले कई अन्य लोगों के लिए संभवतः उपयोगी है।

जवाबों:


8

यदि आप एक ब्लॉग लेख प्रारूप पसंद करते हैं, तो पदानुक्रमित रैखिक मॉडल और lmer एक लेख है जो मैंने लिखा था कि यादृच्छिक ढलानों और अवरोधों के साथ एक सिमुलेशन की सुविधा है। यहाँ सिमुलेशन कोड मैंने उपयोग किया है:

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)

1
बेन, आपके उत्तर के लिए धन्यवाद! मैं वास्तव में अभी व्यस्त हूं, लेकिन मौका मिलते ही मैं इसे ध्यान से देखूंगा। + क्रेडिट पर :-)
एंटोनी परेलाडा

1

डेटा पूरी तरह से काल्पनिक है और जो कोड मैंने इसे जेनरेट करने के लिए इस्तेमाल किया था वह यहां पाया जा सकता है

विचार यह है कि हम इन एथलीटों के रक्त में निर्मित ( ) की एकाग्रता के संबंध में पूरा होने के glucose concentrationsएक समूह पर माप लेंगे ।30 athletes15 racesamino acid AAAA

मॉडल है: lmer(glucose ~ AAA + (1 + AAA | athletes)

एक निश्चित प्रभाव ढलान है (ग्लूकोज ~ एमिनो एसिड एक एकाग्रता); हालाँकि, ढलान भी अलग-अलग एथलीटों के बीच भिन्न होते हैं mean = 0और sd = 0.5, जबकि विभिन्न एथलीटों के लिए इंटरसेप्ट्स के 0साथ एक यादृच्छिक प्रभाव फैलता है sd = 0.2। इसके अलावा एक ही एथलीट के भीतर 0.8 के अंतर और ढलान के बीच संबंध है।

इन यादृच्छिक प्रभावों को intercept = 1निश्चित प्रभावों के लिए चुना जाता है, और 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

तो डेटा जैसा दिखता है:

      athletes races      AAA   glucose
    1        1     1  51.79364 104.26708
    2        1     2  49.94477 101.72392
    3        1     3  45.29675  92.49860
    4        1     4  49.42087 100.53029
    5        1     5  45.92516  92.54637
    6        1     6  51.21132 103.97573
    ...

ग्लूकोज का अवास्तविक स्तर, लेकिन फिर भी ...

सारांश रिटर्न:

Random effects:
 Groups   Name        Variance Std.Dev. Corr
 athletes (Intercept) 0.006045 0.07775      
          AAA         0.204471 0.45218  1.00
 Residual             0.545651 0.73868      
Number of obs: 450, groups:  athletes, 30

Fixed effects:
             Estimate Std. Error        df t value Pr(>|t|)    
(Intercept)   1.31146    0.35845 401.90000   3.659 0.000287 ***
AAA           1.93785    0.08286  29.00000  23.386  < 2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

यादृच्छिक प्रभाव सहसंबंध के 1बजाय है 0.8sd = 2अवरोध में यादृच्छिक विभिन्नता के लिए के रूप में व्याख्या की है 0.077750.5एथलीटों के बीच ढलानों में यादृच्छिक परिवर्तनों के लिए मानक विचलन की गणना की जाती है 0.45218। मानक विचलन के साथ स्थापित शोर 0.75को वापस लौटा दिया गया 0.73868

निश्चित प्रभावों का अवरोधन होना चाहिए था 1, और हमें मिल गया 1.31146। ढलान के लिए यह होना चाहिए था 2, और अनुमान था 1.93785

काफी हद तक निकट!


एन(0,1)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.