Init
options(
digits = 2
)
library(kirkegaard)
## Loading required package: tidyverse
## ── Attaching packages ────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2 ✓ purrr 0.3.4
## ✓ tibble 3.0.3 ✓ dplyr 1.0.0
## ✓ tidyr 1.1.0 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ───────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## Loading required package: weights
## Loading required package: Hmisc
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
##
## src, summarize
## The following objects are masked from 'package:base':
##
## format.pval, units
## Loading required package: gdata
## gdata: read.xls support for 'XLS' (Excel 97-2004) files ENABLED.
##
## gdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED.
##
## Attaching package: 'gdata'
## The following objects are masked from 'package:dplyr':
##
## combine, first, last
## The following object is masked from 'package:purrr':
##
## keep
## The following object is masked from 'package:stats':
##
## nobs
## The following object is masked from 'package:utils':
##
## object.size
## The following object is masked from 'package:base':
##
## startsWith
## Loading required package: mice
##
## Attaching package: 'mice'
## The following objects are masked from 'package:base':
##
## cbind, rbind
## Loading required package: assertthat
##
## Attaching package: 'assertthat'
## The following object is masked from 'package:tibble':
##
## has_name
## Loading required package: magrittr
##
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
##
## set_names
## The following object is masked from 'package:tidyr':
##
## extract
## Loading required package: psych
##
## Attaching package: 'psych'
## The following object is masked from 'package:Hmisc':
##
## describe
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
## Loading required package: metafor
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
## Loading 'metafor' package (version 2.4-0). For an overview
## and introduction to the package please type: help(metafor).
##
## Attaching package: 'kirkegaard'
## The following object is masked from 'package:psych':
##
## rescale
## The following object is masked from 'package:assertthat':
##
## are_equal
## The following objects are masked from 'package:purrr':
##
## is_logical, is_numeric
## The following object is masked from 'package:base':
##
## +
library(patchwork)
theme_set(theme_bw())
Simulation
#make normal IQ data
set.seed(1)
d = tibble(
IQ = rnorm(10e3, mean = 100, sd = 15)
) %>% mutate(
SAT = (standardize(IQ) + rnorm(n(), sd = .7)) %>% standardize(),
SAT_observed = (SAT + rnorm(n(), sd = .3)) %>% standardize()
)
#cors
cor(d)
## IQ SAT SAT_observed
## IQ 1.00 0.82 0.79
## SAT 0.82 1.00 0.96
## SAT_observed 0.79 0.96 1.00
#plots
ggplot(d, aes(IQ)) +
geom_histogram() +
ggtitle("True IQ before IQ selection") +
ggplot(d %>% filter(IQ > 120), aes(IQ)) +
geom_histogram() +
ggtitle("True IQ after IQ threshold selection") +
ggplot(d %>% filter(IQ > 120), aes(SAT)) +
geom_histogram() +
ggtitle("True SAT after IQ threshold selection") +
ggplot(d %>% filter(IQ > 120), aes(SAT_observed)) +
geom_histogram() +
ggtitle("Observed SAT after IQ threshold selection")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
