虚假相关的期望值

机器算法验证 相关性 正态分布 期望值 极值 虚假相关
2022-03-04 05:48:23

我们独立于正态分布个样本,每个样本的大小为Nn(μ,σ2)

然后,我们从个样本中选择彼此之间具有最高(绝对)Pearson 相关性的 2 个样本。N

这种相关性的期望值是多少?

谢谢 [PS 这不是作业]

2个回答

我找到了以下文章,解决了这个问题:Jiang, Tiefeng (2004)。样本相关矩阵的最大条目的渐近分布。应用概率年鉴, 14(2),865-880

姜显示统计量, 其中是长度为 (个和第个随机向量之间的相关性, 是Ln=max1i<jN|ρij|ρijijnij

limnPr[nLn24logn+log(log(n))y]=exp(1a28πexp(y/2)),
其中假设存在于论文中,a=limnn/NNn

显然,此结果适用于任何具有足够数量的有限矩的分布分布(编辑:请参阅下面的@cardinal 评论)。蒋指出,这是一种 I 型极值分布。位置和规模是

σ=2,μ=2log(1a28π).

Type-I EV 分布的期望值为,其中表示欧拉常数。然而,正如评论中所指出的,分布收敛本身并不能保证均值收敛到极限分布。μ+σγγ

如果的渐近期望值将是nLn24logn+log(log(n))

limnE[nLn24logn+log(log(n))]=2log(a28π)+2γ.

请注意,这将给出最大平方相关的渐近期望值,而问题要求最大绝对相关的期望值。所以不是 100%,但很接近。

我做了一些简短的模拟,让我想到 1)我的模拟有问题(可能),2)我的转录/代数有问题(也可能),或者 3)近似值对我使用的值。也许 OP 可以使用这种近似值权衡一些模拟结果?nN

除了@jmtroos 提供的答案之外,以下是我的模拟细节,以及与@jmtroos 对Jiang (2004)的期望推导的比较,即:

E[Ln2]=1n{2log(N2n28π)+2γ+4lognlog(log(n))}

这种期望值似乎高于小的模拟值,低于大的增加,它们似乎略有不同。然而,随着的增加,差异会减小,正如我们所期望的那样,论文声称分布是渐近的。我尝试了各种下面的模拟使用我对 R 很陌生,所以任何使我的代码更好的提示或建议都会受到热烈欢迎。NNNnn[100,500]n=200

set.seed(1)

ns <- 500
# number of simulations for each N

n <- 200
# length of each vector

mu <- 0
sigma <- 1
# parameters for the distribution we simulate from

par(mfrow=c(5,5))
x<-trunc(seq(from=5,to=n, length=20))
#vector of Ns

y<-vector(mode = "numeric")
#vector to store the mean correlations

k<- 1
#index for y

for (N in x) {
# loop over a range of N

    dt <- matrix(nrow=n,ncol=N)

    J <- vector(mode = "numeric")
    # vector to store the simulated largest absolute 
    # correlations for each N

    for (j in 1:ns) {
    # for each N, simulated ns times    

      for (i in 1:N) {
        dt[,i] <- rnorm(n,mu,sigma)
      }
      # perform the simulation

      M<-matrix(cor(dt),nrow=N,ncol=N)
      m <- M
      diag(m) <- NA
      J[j] <- max(abs(m), na.rm=TRUE)   
      # obtain the largest absolute correlation
      # these 3 lines came from stackoverflow
  }

    hist(J,main=paste("N=",N, " n=",n, " N(0,1)", "\nmean=",round(J[j],4))) 
    y[k]<-mean(J)
    k=k+1
}

lm1 <- lm(y~log(x))
summary(lm1)

logx_sq=log(x)^2
lm2<-lm(y~log(x)+logx_sq)
summary(lm2)
# linear models for these simulations

# Jiang 2004 paper, computation:

gamma = 0.5772
yy <- vector(mode = "numeric")
yy <- sqrt((2*log((x^2)/(sqrt(8*pi)*n^2)) + 2*gamma-(-4*log(n)+log(log(n))))/n)


plot(x,yy)
# plot the simulated correlations
points(x,y,col='red')
# add the points using the expectation