Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. require(lme4)
  2. require(plyr)
  3.  
  4. participant <- rep(1:12, 3)
  5. essay <- c(rep(1, 9), rep(2, 9), rep(3, 9), rep(4, 9))
  6. quality <- ifelse(essay == 1 | essay == 2, "high", "low")
  7. race <- c("white", "black", "black", "white", "white", "white", "white", "white", "white",
  8. "white", "white", "white", "white", "white", "white", "white", "black", "black",
  9. "white", "black", "black", "white", "white", "white", "white", "white", "white",
  10. "white", "white", "white", "white", "white", "white", "white", "black", "black")
  11. gender <- c("female", "male", "female", "male", "male", "male", "male", "male", "male",
  12. "male", "male", "male", "male", "male", "male", "female", "male", "female",
  13. "female", "male", "female", "male", "male", "male", "male", "male", "male",
  14. "male", "male", "male", "male", "male", "male", "female", "male", "female")
  15.  
  16. d <- data.frame(participant, essay, quality, race, gender)
  17.  
  18. for(i in 1:35)
  19. {
  20. participant <- participant + 12
  21. essay <- essay + 4
  22. newdat <- data.frame(participant, essay, quality, race, gender)
  23.  
  24. d <- rbind(d, newdat)
  25. }
  26.  
  27. check_var <- function(var)
  28. {
  29. tab <- table(var)
  30. newvar <- character()
  31.  
  32. for(i in var)
  33. {
  34. if(i == names(tab[tab == 1]))
  35. {
  36. newvar <- c(newvar, "different")
  37. } else
  38. {
  39. newvar <- c(newvar, "same")
  40. }
  41. }
  42.  
  43. return(newvar)
  44. }
  45.  
  46. # Mark, for a given participant, which essay is "different"
  47. d <- ddply(d, "participant", mutate, different = check_var(quality))
  48.  
  49. # Make each variable numeric for the purposes of the simulation
  50. d$quality <- ifelse(d$quality == "low", -.5, .5)
  51. d$race <- ifelse(d$race == "black", -.5, .5)
  52. d$gender <- ifelse(d$gender == "female", -.5, .5)
  53. d$different <- ifelse(d$different == "same", -.5, .5)
  54.  
  55. # Random seed
  56. set.seed(2352)
  57.  
  58. # Number of simulations
  59. reps <- 50
  60. # Create a storage space for the effects
  61. effs <- matrix(NA, ncol = 10, nrow = reps)
  62.  
  63. # For each simulation
  64. for(i in 1:reps)
  65. {
  66. # Fixed effects. A quality effect and a contrast effect for quality
  67. d$score <- .5 * d$quality + 1 * d$different * d$quality
  68.  
  69. # Random effects at the participant level
  70. d <- ddply(d, "participant", mutate, r_int = rnorm(1, sd = .5),
  71. r_q = rnorm(1, sd = .5),
  72. score = score + r_int + r_q * quality)
  73.  
  74. # Random effects at the essay level
  75. d <- ddply(d, "essay", mutate, g_int = rnorm(1, sd = .5),
  76. g_r = rnorm(1, sd = .5),
  77. g_g = rnorm(1, sd = .5),
  78. g_r_g = rnorm(1, sd = .5),
  79. score = score + g_int + g_r * race + g_g * gender + g_r_g * race * gender)
  80.  
  81. # Observation-level error
  82. d$score <- d$score + rnorm(dim(d)[1], sd = 1)
  83.  
  84. # Fit the model
  85. mod <- lmer(score ~ race * gender * quality + different * quality + (race * gender | essay) + (quality | participant), data = d)
  86.  
  87. # Store the coefficients
  88. colnames(effs) <- names(fixef(mod))
  89. effs[i, ] <- fixef(mod)
  90.  
  91. # Print the current simulation
  92. print(i)
  93. }
  94.  
  95. # Results
  96. round(colMeans(effs), digits = 2)
  97.  
  98. (Intercept) race gender quality
  99. 0.00 -0.03 0.02 0.50
  100. different race:gender race:quality gender:quality
  101. 0.01 -0.03 0.00 0.03
  102. quality:different race:gender:quality
  103. 0.97 -0.02
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement