Skip to content

Instantly share code, notes, and snippets.

@johnmyleswhite
Last active April 26, 2017 23:14
Show Gist options
  • Select an option

  • Save johnmyleswhite/681120b16b4f8b5e14db74ba1bf904d8 to your computer and use it in GitHub Desktop.

Select an option

Save johnmyleswhite/681120b16b4f8b5e14db74ba1bf904d8 to your computer and use it in GitHub Desktop.
non_robust_correlations.R
n <- 100000L
x <- rnorm(n, 0, 1)
y <- -x
cor(x, y)
for (z in c(10, 100, 1000, 10000, 100000)) {
rho <- cor(c(-z, x, z), c(-z, y, z))
print(paste0("z = ", z, "; rho = ", rho))
}
# [1] "z = 10; rho = -0.996002903776044"
# [1] "z = 100; rho = -0.666312532886097"
# [1] "z = 1000; rho = 0.904877424566746"
# [1] "z = 10000; rho = 0.999001772006972"
# [1] "z = 1e+05; rho = 0.999990012785159"
n <- 100000L
x <- rnorm(n, 0, 1)
y <- rnorm(n, 0, 1)
cor(x, y)
for (z in c(10, 100, 1000, 10000, 100000)) {
rho <- cor(c(-z, x, z), c(-z, y, z))
print(paste0("z = ", z, "; rho = ", rho))
}
# [1] "z = 10; rho = 0.00376657938871808"
# [1] "z = 100; rho = 0.168606844273084"
# [1] "z = 1000; rho = 0.952616981340804"
# [1] "z = 10000; rho = 0.999502805310329"
# [1] "z = 1e+05; rho = 0.999995025600232"
using Distributions
function two_views(a, b)
rho = cor(a, b)
n1 = sum( (a .> mean(a)) & (b .> mean(b)) )
n2 = sum( (a .> mean(a)) )
p = n1 / n2
return rho, p
end
n = 10_000
a = rand(Beta(1.0, 1.0), n);
b = rand(Beta(1.0, 1.0), n);
two_views(a, b)
# (0.015660398444906496,0.5133239831697055)
a = rand(Beta(0.01, 10000.0), n);
b = rand(Beta(0.01, 10000.0), n);
two_views(a, b)
# (-0.0007933918288009543,0.0379746835443038)
a = rand(Beta(10000.0, 0.01), n);
b = rand(Beta(10000.0, 0.01), n);
two_views(a, b)
# (-0.00812362128868224,0.9585589337775927)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment