######################################################################################## ### MEMA: Measurement Error in Meta-Analysis ### contact: harlan.campbell@stat.ubc.ca ##################### # Fresh start rm(list = ls(all = TRUE)) set.seed(87654321) ##################### # Determine missing packages and load them: required_packages <- c("MCMCvis", "xtable", "RCurl", "runjags", "rjags", "sjstats", "rlist", "tidyverse", "xtable", "MCMCpack", "latex2exp") not_installed <- required_packages[!(required_packages %in% installed.packages()[ , "Package"])] if(length(not_installed)) install.packages(not_installed, type="source") invisible(suppressWarnings(lapply(required_packages, require, character.only = TRUE))) ls() rm("not_installed", "required_packages") ls() # Initial values for MCMC random seeds inits1<- list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = c(123)) inits2<- list(.RNG.name = "base::Super-Duper", .RNG.seed = c(456)) inits3<- list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = c(789)) ################################################################################# ######################## load original schooldata (NELS88) ################################# ### dataset : NELS88 schooldata <- read.csv("https://raw.githubusercontent.com/harlanhappydog/MEMA/master/13schools.csv") n <- X <- y <- list() se_alpha_hat <- se_beta_hat <- beta <- alpha <- alpha_hat <- beta_hat <- sigma_hat <- lambda_hat <- mu_hat <- w <- u <- vector() K <- length(table(schooldata$sch)) for(i in 1:K){ mydat <- schooldata[schooldata$sch==i,] n[[i]] <- dim(mydat)[1] y[[i]] <- mydat$sci X[[i]] <- mydat$rdg mod_i <- lm(y[[i]] ~ X[[i]]) alpha_hat[i] <- coef(mod_i)[1] beta_hat[i] <- coef(mod_i)[2] se_alpha_hat[i] <- coefficients(summary(mod_i))[1,2] se_beta_hat[i] <- coefficients(summary(mod_i))[2,2] sigma_hat[i] <- summary(mod_i)$sigma lambda_hat[i] <- sqrt(var(X[[i]])) mu_hat[i] <- mean(X[[i]]) } # c((sigma_hat[i])/((lambda_hat[i])* sqrt(n[[i]] -1)), se_beta_hat[i]) studyID <- schooldata$sch NELS88_dataframe <- data.frame( "n_i" = paste(as.numeric(table(studyID))), "alpha" = alpha_hat, "beta" = beta_hat, "sigma2" = sigma_hat^2, "mu" = mu_hat, "lambda" = lambda_hat) print(xtable(data.frame( "n_i" = paste(as.numeric(table(studyID))), "beta" = beta_hat, "se_beta" = se_beta_hat, "alpha" = alpha_hat, "se_alpha" = se_alpha_hat, "beta" = beta_hat, "se_beta" = se_beta_hat, "sigma2" = sigma_hat^2), digits=2)) NELS88IPD <-list ( K = length(table(schooldata$sch)), n_per_study = as.numeric(table(schooldata$sch)), alpha_hat = alpha_hat, beta_hat = beta_hat, mu_hat = mu_hat, sigma_hat = sigma_hat, lambda_hat = lambda_hat, y = y, X = X, n = n) invtXX<-list() for(k in 1:K){ solve(t(cbind(1,X[[k]]))%*%cbind(1,X[[k]])) x11<-(lambda_hat[k]^2+mu_hat[k]^2)/(lambda_hat[k]^2 * (NELS88IPD$n_per_study[k]-1)) x22<-1/(lambda_hat[k]^2* (NELS88IPD$n_per_study[k]-1)) x12<-(-mu_hat[k])/(lambda_hat[k]^2* (NELS88IPD$n_per_study[k]-1)) invtXX[[k]] <- matrix(c(x11,x12,x12,x22),2,2)} NELS88 <-list ( K = length(table(schooldata$sch)), kprime = length(table(schooldata$sch)), n_per_study = as.numeric(table(schooldata$sch)), alpha_hat = alpha_hat, beta_hat = beta_hat, mu_hat = mu_hat, sigma_hat = sigma_hat, lambda_hat = lambda_hat, se_alpha_hat = se_alpha_hat, se_beta_hat = se_beta_hat) rm(alpha, alpha_hat, beta, beta_hat, i, K, lambda_hat, mod_i, mu_hat, mydat, n, schooldata, sigma_hat, studyID, u, w, X, y, se_alpha_hat, se_beta_hat) ################################################################################# ##### load schooldata with added measurement error in K-kprime schools (NELS88_star) ### ### dataset : NELS88_star kprime <- 5 schooldata <- read.csv("https://raw.githubusercontent.com/harlanhappydog/MEMA/master/13schools.csv") schooldata_me <- schooldata K <- length(table(schooldata_me$sch)) PHI_ <- rep(0,K) PHI_[1:kprime] <- 0 if(kprime