library(umx)
# ====================================
# = Mendelian randomization analysis =
# ====================================
# Note: in practice: many more subjects are desireable - this just to let example run fast
df = umx_make_MR_data(1000)
m1 = umxTwoStage(Y ~ X, instruments = ~ qtl, data = df)
coef(m1)
plot(m1)
# Errant analysis using ordinary least squares regression (WARNING this result is CONFOUNDED!!)
m1 = lm(Y ~ X , data = df); coef(m1) # incorrect .35 effect of X on Y
m1 = lm(Y ~ X + U, data = df); coef(m1) # Controlling U reveals the true 0.1 beta weight
#
#
## Not run:
# df = umx_make_MR_data(1e5)
# m1 = umxTwoStage(Y ~ X, instruments = ~ qtl, data = df)
#
# # ======================
# # = now with sem::tsls =
# # ======================
# # library(sem) # will require you to install X11
# m2 = sem::tsls(formula = Y ~ X, instruments = ~ qtl, data = df)
# coef(m1)
# coef(m2)
# m3 = tsls(formula = Y ~ X, instruments = ~ qtl, data = (df[1,"qtl"] = NA))
# ## End(Not run)
Run the code above in your browser using DataLab