> # Inflation of Type I error rate when IVs are measured with error > > ##### Set parameters ##### > > n <- 250 > gamma0 <- 1 ; gamma1 <- 1 ; gamma2 <- 0 > explvar <- 0.75 # Xi1 explains this much of Y > corr <- 0.80 # Between Xi1 and Xi2 > reli1 <- 0.90 # Reliability of x1 (measuring xi1) > reli2 <- .90 # Reliability of x2 (measuring xi2) > #### Compute secondary parameters #### > stdev <- gamma1*sqrt((1-explvar)/explvar) # SD of regression error > sdverr1 <- sqrt((1-reli1)/reli1) # SD of error in Xi1 meas > sdverr2 <- sqrt((1-reli2)/reli2) # SD of error in Xi2 meas > a <- sqrt((1+corr)/2) # Coefficient for making Xi1 and Xi2 correlated > set.seed(9999) > > ##### Generate random data ##### > > Z1 <- rnorm(n); Z2 <- rnorm(n) > Xi1 <- a*Z1 + sqrt(1-a*a)*Z2 > Xi2 <- a*Z1 - sqrt(1-a*a)*Z2 > zeta <- stdev*rnorm(n) > delta1 <- sdverr1*rnorm(n) > delta2 <- sdverr2*rnorm(n) > Y <- gamma0 + gamma1*Xi1 + gamma2*Xi2 + zeta > x1 <- Xi1 + delta1 > x2 <- Xi2 + delta2 > > summary(lm(Y ~ x1+x2)) Call: lm(formula = Y ~ x1 + x2) Residuals: Min 1Q Median 3Q Max -1.643991 -0.382166 0.006572 0.450898 1.582773 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.02052 0.03848 26.523 < 2e-16 *** x1 0.77194 0.05359 14.403 < 2e-16 *** x2 0.17195 0.05311 3.238 0.00137 ** --- Signif. codes: 0 Ô***Õ 0.001 Ô**Õ 0.01 Ô*Õ 0.05 Ô.Õ 0.1 Ô Õ 1 Residual standard error: 0.607 on 247 degrees of freedom Multiple R-Squared: 0.7256, Adjusted R-squared: 0.7234 F-statistic: 326.6 on 2 and 247 DF, p-value: < 2.2e-16 > > summary(lm(Y ~ Xi1+Xi2)) Call: lm(formula = Y ~ Xi1 + Xi2) Residuals: Min 1Q Median 3Q Max -1.39838 -0.33283 0.01543 0.34493 1.22230 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.03403 0.03149 32.835 <2e-16 *** Xi1 1.04490 0.05282 19.781 <2e-16 *** Xi2 -0.02403 0.05308 -0.453 0.651 --- Signif. codes: 0 Ô***Õ 0.001 Ô**Õ 0.01 Ô*Õ 0.05 Ô.Õ 0.1 Ô Õ 1 Residual standard error: 0.4962 on 247 degrees of freedom Multiple R-Squared: 0.8166, Adjusted R-squared: 0.8151 F-statistic: 549.9 on 2 and 247 DF, p-value: < 2.2e-16 > > anova(lm(Y ~ x1+x2)) Analysis of Variance Table Response: Y Df Sum Sq Mean Sq F value Pr(>F) x1 1 236.737 236.737 642.625 < 2.2e-16 *** x2 1 3.862 3.862 10.483 0.001370 ** Residuals 247 90.992 0.368 --- Signif. codes: 0 Ô***Õ 0.001 Ô**Õ 0.01 Ô*Õ 0.05 Ô.Õ 0.1 Ô Õ 1 > anova(lm(Y ~ x1+x2))[2,5] [1] 0.001369597 > anova(lm(Y ~ x1+x2))[2,5]<0.05 [1] TRUE > > nsim <- 20 > for(i in 1:nsim) + { + Z1 <- rnorm(n); Z2 <- rnorm(n) + Xi1 <- a*Z1 + sqrt(1-a*a)*Z2 + Xi2 <- a*Z1 - sqrt(1-a*a)*Z2 + zeta <- stdev*rnorm(n) + delta1 <- sdverr1*rnorm(n) + delta2 <- sdverr2*rnorm(n) + Y <- gamma0 + gamma1*Xi1 + gamma2*Xi2 + zeta + x1 <- Xi1 + delta1 + x2 <- Xi2 + delta2 + print(anova(lm(Y ~ x1+x2))[2,5]<0.05) + } [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] FALSE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] TRUE [1] FALSE [1] TRUE [1] FALSE [1] TRUE >