当数据具有高斯分布时,将表征多少个样本?


12

在一维中分布的高斯数据需要两个参数来表征(均值,方差),并且有传言说,大约30个随机选择的样本通常足以以合理的高置信度估计这些参数。但是随着尺寸数量的增加会发生什么?

在二维(例如身高,体重)中,需要5个参数来指定“最佳拟合”椭圆。在三个维度上,这增加了9个参数来描述一个椭球,而在4-D中则增加了14个参数。我想知道估计这些参数所需的样本数量是否也以可比的速度,以较慢的速度或(请!)以较高的速度增加。更好的是,如果有一条被广泛接受的经验法则,建议在给定数量的维度上需要多少个样本来表征高斯分布,那将是一个很好的认识。

更精确地说,假设我们要定义一个以“平均点”为中心的对称“最佳拟合”边界,我们可以确信其中有95%的样本将掉落。我想知道以适当的高置信度(> 95%)查找参数以近似此边界(一维的间隔,二维的椭圆等)可能需要多少个样本,以及该数量如何随置信度的变化而变化。尺寸数量增加。


3
如果没有足够精确的“固定”定义,即使对于单变量高斯,也实际上不可能回答这个问题。
Glen_b-恢复莫妮卡

1
怎么样:至少要有95%的信心才能确定95%的样本(但只有95%的样本)位于定义的时间间隔/椭圆/椭球/超椭球内?
omatai

1
也就是说...所有样本中有95%位于平均值的某个定义距离内。需要多少个样本才能以95%或更高的置信度定义该距离(间隔/椭圆/椭球/等)?
omatai

1
一旦您获得的独立数据值比参数多(因此 d维中的值),您可以在它们周围建立95%的置信度区域。(使用非传统技术甚至可以做得更好。)这是一个答案-这是一个确定的答案-但这可能并不是您想要的。关键是您需要规定一些期望精度的绝对比例,以便获得对此问题的答案。(d+22)d
ub

1
Snedecor&Cochran [ 统计方法,第8版]是抽样机构。他们描述在第4和第6这一过程:“我们假设在:第一,总体标准差 ...是已知的。” 后来,他们写道:“因此,该方法在工作的早期阶段最有用。...例如,先前的小型实验表明,新的处理方法可使处理量增加约20%,σ约为7%。研究者... [希望] SE为± 2%,因此设置σDσ±,给出n=25...这在以后的工作中通常很有帮助。2(7)/n=2n=25
Whuber

Answers:


7

在所有其他条件相同的情况下,估计多维正态分布的参数以达到给定的置信度以指定的精度范围内所需的数据量不会随维度而变化。 因此,您可以将二维的任何经验法则应用于更高维度的问题,而无需进行任何更改。

为什么要这样 参数只有三种:均值,方差和协方差。均值中的估计误差仅取决于方差和数据量。因此,当X 1X 2... X d具有多元正态分布和X 具有方差σ 2 ,则估计ë [ X ]仅取决于σ Ñ。自何处,以达到足够的精度估计所有n(X1,X2,,Xd)Xiσi2E[Xi]σin,我们只需要考虑所需的数据量 X 具有最大 σ 。因此,当我们考虑的问题,估计连续增加尺寸 ð,我们需要考虑的是多少最大 σ 将增加。当这些参数处于上述范围内时,我们得出结论,所需的数据量与维度无关。E[Xi]Xiσidσi

类似的考虑适用于估计方差和协方差σ Ĵ:如果用于估计一定量的数据就足够了的一个协方差(或相关系数),以期望的精确度,那么-提供底层正常分布具有类似的参数值- -相同数量的数据就足以估算任何协方差或相关系数。σi2σij


为了说明这一点并提供实证支持,让我们研究一些模拟。以下内容为指定尺寸的多正态分布创建参数,从该分布中绘制许多独立的,相同分布的向量集,从每个此类样本中估计参数,并根据(1)平均值来总结这些参数估计的结果- -证明它们没有偏见(并且代码正常工作-和(2)它们的标准偏差,这些偏差量化了估计的准确性。(请勿混淆这些标准偏差,这些标准偏差将量化在多个模拟迭代,使用标准偏差定义基本的多态分布!发生变化,但前提是随着 d发生变化,我们不会在基础多重正态分布本身中引入较大的方差。dd

在此模拟中,通过使协方差矩阵的最大特征值等于来控制基础分布的方差大小。随维数的增加,无论这种云的形状如何,都将其概率密度“云”保持在范围之内。通过改变特征值的生成方式,可以简单地创建随着尺寸增加而对系统行为的其他模型的仿真。下面的代码注释掉了一个示例(使用Gamma分布)。1R

我们正在寻找的是验证当尺寸改变时参数估计的标准偏差没有明显改变。因此,我示出了用于两个极端,结果d = 2d = 60使用相同的数据量(30在两种情况下)。 值得注意的是,当d = 60时估计的参数数量等于1890,远远超过了向量的数量(30),甚至超过了整个数据集中的单个数字(30 * 60 = 1800)。dd=2d=6030d=601890303060=1800

让我们从二维开始,。有五个参数:两个方差(此模拟中的标准偏差为0.0970.182),协方差(SD = 0.126)和两个平均值(SD = 0.110.15)。对于不同的模拟(可以通过更改随机种子的起始值来获得),这些模拟会有所不同,但是当样本大小为n = 30时,它们将始终具有可比较的大小。举例来说,在接下来的模拟SDS是0.0140.2630.0430.040.18d=20.0970.1820.1260.110.15n=300.0140.2630.0430.040.18,分别:它们都发生了变化,但是数量级可比。

(这些陈述在理论上可以得到支持,但这里的目的是提供纯粹的经验证明。)

现在我们移至将样本大小保持在n = 30。具体来说,这意味着每个样本包含30个向量,每个向量具有60个分量。除了列出所有1890个标准偏差外,我们仅使用直方图查看它们的图片,以描述其范围。d=60n=3030601890

数字

sigmaσmuμ104此模拟中次迭代。灰色的参考线标志着完全平等的轨迹:显然,估算工作是按预期进行的,并且没有偏见。

0.080.120.040.08d=20.080.13d=2d260

代码如下。

#
# Create iid multivariate data and do it `n.iter` times.
#
sim <- function(n.data, mu, sigma, n.iter=1) {
  #
  # Returns arrays of parmeter estimates (distinguished by the last index).
  #
  library(MASS) #mvrnorm()
  x <- mvrnorm(n.iter * n.data, mu, sigma)
  s <- array(sapply(1:n.iter, function(i) cov(x[(n.data*(i-1)+1):(n.data*i),])), 
        dim=c(n.dim, n.dim, n.iter))
  m <-array(sapply(1:n.iter, function(i) colMeans(x[(n.data*(i-1)+1):(n.data*i),])), 
            dim=c(n.dim, n.iter))
  return(list(m=m, s=s))
}
#
# Control the study.
#
set.seed(17)
n.dim <- 60
n.data <- 30    # Amount of data per iteration
n.iter <- 10^4  # Number of iterations
#n.parms <- choose(n.dim+2, 2) - 1
#
# Create a random mean vector.
#
mu <- rnorm(n.dim)
#
# Create a random covariance matrix.
#
#eigenvalues <- rgamma(n.dim, 1)
eigenvalues <- exp(-seq(from=0, to=3, length.out=n.dim)) # For comparability
u <- svd(matrix(rnorm(n.dim^2), n.dim))$u
sigma <- u %*% diag(eigenvalues) %*% t(u)
#
# Perform the simulation.
# (Timing is about 5 seconds for n.dim=60, n.data=30, and n.iter=10000.)
#
system.time(sim.data <- sim(n.data, mu, sigma, n.iter))
#
# Optional: plot the simulation results.
#
if (n.dim <= 6) {
  par(mfcol=c(n.dim, n.dim+1))
  tmp <- apply(sim.data$s, 1:2, hist)
  tmp <- apply(sim.data$m, 1, hist)
}
#
# Compare the mean simulation results to the parameters.
#
par(mfrow=c(2,2))
plot(sigma, apply(sim.data$s, 1:2, mean), main="Average covariances")
abline(c(0,1), col="Gray")
plot(mu, apply(sim.data$m, 1, mean), main="Average means")
abline(c(0,1), col="Gray")
#
# Quantify the variability.
#
i <- lower.tri(matrix(1, n.dim, n.dim), diag=TRUE)
hist(sd.cov <- apply(sim.data$s, 1:2, sd)[i], main="SD covariances")
hist(sd.mean <- apply(sim.data$m, 1, sd), main="SD means")
#
# Display the simulation standard deviations for inspection.
#
sd.cov
sd.mean

1

对于从标准正态分布创建的30个样本的拟合,然后对单变量高斯拟合,一些简短的数值给出了以下误差分布。

在此处输入图片说明

指示四分位数。假设在多维情况下需要这种变化水平。

我没有时间击败MatLab来获得总体结果,所以我将分享我的“经验法则”。提供30作为经验法则或启发式法则,因此假定启发式法不是不可接受的。

我的启发式方法是使用Pascal的三角形乘以单变量的情况。 在此处输入图片说明

如果我使用的是2d数据,那么我将转到第二行并将其求和,以获得2倍的样本数,即60个样本。对于3d数据,我转到第三行并将其求和以得到4倍的样本数或120个样本。对于5d数据,我转到第5行并对它求和,得出的样本数是16倍,即480个样本。

祝你好运。

编辑:

这是直观的,但是一切都必须在数学上进行辩护。我不能仅仅从具有有限经验的有限元素的多项式形式的制定中获得飞跃。

kth2k

我在此方法的想法是将具有更多样本的高维分布的AIC等同于具有更少样本的降维分布。

AIC=nlog(RSSn)+2kRSSnk

AIC1=AIC2

n1log(RSS1n1)+2k1=n2log(RSS2n2)+2k2

对于我们消除的每个维度,这意味着均值丢失一行,协方差既丢失行又丢失列。我们可以这样说

k(d)=d2+d

k(d+1)k(d)=2d+2

假设每个样本点的误差为常数,则将平方的残余和与样本计数相关,对数项保持恒定。样本数量的差异成为比例常数。

所以我们有:

n1A+2(k2+2d+2)=n2A+2k2

求解随维数增加的样本,得出:

n2n1=(2(k2+2d+2)2k2)A1=(4d+4)A1

A1=5

在此处输入图片说明

在这一点上,我想说的是,试探法起步有点低,但最终大约是所需样本数的2倍。我个人认为,它的最佳实用性范围大约在4个左右。

编辑:

因此,我已阅读@whuber的答案,我喜欢它。它是经验性的,在这种情况下是权威性的。我对他的回答投了赞成票。

在下文中,我试图讨论并希望能够使用超过300个字符,并且希望能够嵌入图片。因此,我正在讨论的范围之内。我希望这可以。

在这一点上,我不确信为此使用AIC或如何使用样本大小和参数大小是不正确的。

下一步:

  • 复制@whuber的结果,凭经验进行确认
  • 至少在某种意义上测试AIC,以确认是否合适
  • 如果适合使用AIC,则尝试使用经验方法来追究推理中的缺陷。

欢迎提出意见和建议。


4
您能为您的启发式方法提供一些理由吗?
whuber

1
您能确认第五行的总和实际上是16吗?
omatai 2013年


1
2d+12d=9549936

1
@whuber,我发现我从错误中学到的东西比正确是要学的更多。出人意料的是,在我知道自己做错之前,做错就像在做对。谢谢。 ted.com/talks/kathryn_schulz_on_being_wrong.html
EngrStudent 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.