sim {arm} | R Documentation |
This generic function gets posterior simulations of sigma and beta from a lm
object, or
simulations of beta from a glm
object, or
simulations of beta from a mer
object
sim(object, ...) ## S4 method for signature 'lm': sim(object, n.sims = 100) ## S4 method for signature 'glm': sim(object, n.sims = 100) ## S4 method for signature 'mer': sim(object, n.sims = 100, ranef=TRUE)
object |
the output of a call to lm with n data points and k predictors. |
... |
further arguments passed to or from other methods. |
n.sims |
number of independent simulation draws to create. |
ranef |
default is TRUE , which will return simulated random effects. |
coef |
matrix (dimensions n.sims x k) of n.sims random draws of coefficients.
Previously, it is called beta . |
fixef |
matrix (dimensions n.sims x k) of n.sims random draws of coefficients
of the fixed effects for the mer objects. Previously, it is called unmodeled . |
sigma |
vector of n.sims random draws of sigma
(for glm 's, this just returns a vector of 1's or else of the
square root of the overdispersion parameter if that is in the model) |
Andrew Gelman gelman@stat.columbia.edu; Yu-Sung Su ys463@columbia.edu
Andrew Gelman and Jennifer Hill. (2006). Data Analysis Using Regression and Multilevel/Hierarchical Models. Cambridge University Press.
#Examples of "sim" set.seed (1) J <- 15 n <- J*(J+1)/2 group <- rep (1:J, 1:J) mu.a <- 5 sigma.a <- 2 a <- rnorm (J, mu.a, sigma.a) b <- -3 x <- rnorm (n, 2, 1) sigma.y <- 6 y <- rnorm (n, a[group] + b*x, sigma.y) u <- runif (J, 0, 3) y123.dat <- cbind (y, x, group) # Linear regression x1 <- y123.dat[,2] y1 <- y123.dat[,1] M1 <- lm (y1 ~ x1) display(M1) M1.sim <- sim(M1) ## to get the uncertainty for the simulated estimates apply(M1.sim$coef, 2, quantile) quantile(M1.sim$sigma) # Logistic regression u.data <- cbind (1:J, u) dimnames(u.data)[[2]] <- c("group", "u") u.dat <- as.data.frame (u.data) y <- rbinom (n, 1, invlogit (a[group] + b*x)) M2 <- glm (y ~ x, family=binomial(link="logit")) display(M2) M2.sim <- sim (M2) # Using lmer: # Example 1 E1 <- lmer (y ~ x + (1 | group)) display(E1) E1.sim <- sim (E1) ## obtain intervals of the estimates t(apply(E1.sim$fixef, 2, quantile, probs = c(0.025, 0.5, 0.975))) # Example 2 u.full <- u[group] E2 <- lmer (y ~ x + u.full + (1 | group)) display(E2) E2.sim <- sim (E2) # Example 3 y <- rbinom (n, 1, invlogit (a[group] + b*x)) E3 <- glmer (y ~ x + (1 | group), family=binomial(link="logit")) display(E3) E3.sim <- sim (E3)