使用来自正态分布的小样本,您是否使用 at 分布进行模拟?

机器算法验证 采样 模拟 t分布
2022-04-17 12:37:58

我想模拟一些“假设”计算的温度数据。问题是,我只有 10 个实际温度数据值的时间序列。我想使用温度作为模拟的输入,所以我需要一种方法来生成大量与原始 10 个值一致的温度值。假设它们来自正态分布可能是可以的,但我不知道均值或方差。

我无法证明这一点,但我怀疑这 10 个值是否能很好地代表整个温度范围。如果我使用该sample函数进行模拟,如下所示,我只能取回原始值。那看起来不太对劲。如果我使用该rnorm函数,我知道我不知道方差,所以我认为这也不对。所以,我只剩下rt函数(t 分布)了。

下面是一个问题的模型。

ori <- rnorm(n=10, mean=65, sd=5) #original 10 data points

num.sam <- sample(x=ori, size=100, replace = TRUE) #simulation using sample
num.tdis <- mean(ori) + (rt(n=100, df=10) * sd(ori)) #simulation using a t distribution

hist(ori, breaks=40:90) 
hist(num.sam, breaks=40:90) 
hist(num.tdis, breaks=40:90) 

我的问题是,

  1. 当我只有数据(均值和方差未知),并且可以合理地假设数据来自正态分布时,是否可以使用 t 分布生成模拟数据?

  2. 对于这种情况,我唯一rnorm用于模拟的时间是如果我知道方差(不是从数据估计的方差),对吗?

  3. 如果 t 分布模拟在这些条件下是可以的,是否有任何条件最好只对数据进行采样(例如 100 个原始数据点、200 个等)?

编辑:

  1. 既然我用原始数据来估计均值和方差,那代码第三行(for)的自由度是不是rt(...)应该从10降到9?还是8?
3个回答

使用您的假设,即这些点来自具有未知均值和方差的正态分布,无论您有多少数据点,T 分布都是正确的抽样分布,因为它是模型的后验预测分布。您可能想检查您的公式,因为它看起来比我以前看到的要简单一些。

要回答您的问题,(1)是,(2)是,和(3)不是。

您可以从正态分布(或 t 如果您愿意)生成均值向量,表示均值的不确定性,然后从 a 生成方差向量χ2分布表示您在方差中的不确定性,然后使用您的均值向量和方差向量作为参数从正态生成实际观察值。这将考虑到您提到的额外不确定性。

如果您对您认为平均值和/或方差应该在哪里有一些感觉(但不确切知道),那么您可能想尝试一种贝叶斯方法,您可以在其中使用该先验信息。

我将详细说明 Neil G 和 Greg Snow 的回答如下:

  • 为您的原始文件运行非信息性贝叶斯推理10数据值
  • 使用后验预测分布生成新数据

从非信息性先验派生的后验预测分布正是旨在满足您的需求:一种生成“与原始数据一致”的数据的分布,同时考虑到模型参数的不确定性。

现在,从无信息先验导出的后验预测分布是什么?这取决于非信息先验的选择,但对于正常样本模型,有一个很好的“默认”非信息先验。您也可以稍微“作弊”并使用“贝叶斯频率论”预测分布(有时也称为“频率论预测分布”)。频率预测分布的原理如下。经典的100(1α)%-新观察的预测间隔是y¯±tn1(α/2)σ^1+1n. 然后贝叶斯频率预测分布被取为y¯+Tσ^1+1n在哪里y¯σ^被认为是固定的并且T有学生tn1分配。就这样100(1α)%-频率预测分布的分位数等于通常的100(1α)%-预测上限。

我不完全记得从默认的非信息先验派生的贝叶斯预测分布,但它非常接近频率预测分布(有一些细微的差异,例如tn12代替tn1)。当我找到公式时,我会更新我的答案。

在这里,我问了一个与这些预测分布的性能有关的问题。

我声称常客预测分布源自“小作弊”,因为它并没有真正的理论基础。但我确信可以以常客的方式展示使用此分布的性能。