高度偏斜数据的t检验


18

我有一个包含成千上万次医疗费用数据观察值的数据集。该数据向右偏斜,并且有很多零。对于两组人来说看起来像这样(在这种情况下,这两个年龄段每个> 3000 obs):

 Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.0      0.0      0.0   4536.0    302.6 395300.0 
Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.0      0.0      0.0   4964.0    423.8 721700.0 

如果我对此数据执行Welch的t检验,我会得到一个结果:

Welch Two Sample t-test

data:  x and y
t = -0.4777, df = 3366.488, p-value = 0.6329
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2185.896  1329.358
sample estimates:
mean of x mean of y 
 4536.186  4964.455 

我知道在此数据上使用t检验是不正确的,因为它非常不正常。但是,如果我使用均值差异的置换检验,那么我始终会得到几乎相同的p值(随着迭代次数的增加,p值会越来越接近)。

在R和permTS中使用带有精确蒙特卡洛的perm包

    Exact Permutation Test Estimated by Monte Carlo

data:  x and y
p-value = 0.6188
alternative hypothesis: true mean x - mean y is not equal to 0
sample estimates:
mean x - mean y 
      -428.2691 

p-value estimated from 500 Monte Carlo replications
99 percent confidence interval on p-value:
 0.5117552 0.7277040 

为什么排列检验统计数据如此接近t.test值?如果我记录数据的日志,那么我得到的t.test p值为0.28,并且与置换测试的结果相同。我认为t检验值比我在这里得到的要多。我喜欢这样的其他许多数据集也是如此,并且想知道为什么t检验在不应该使用时似乎可以工作。

我在这里担心的是,个人成本不是独立的。有许多具有不同成本分布的人群(女性与男性,慢性病等)似乎破坏了中央极限定理的独立要求,或者我不应该担心关于那个?


数据的最小值中位数都为零怎么办?
Alecos Papadopoulos

超过一半的值是零,表明那年一半的人没有医疗。
克里斯(Chris

您为什么认为置换检验应该不同?(如果两组均具有类似的非正态分布)
FairMiles 2013年

请记住,iid是两个独立的假设。首先是“独立”。第二个是“相同地分布”。您似乎暗示观察结果不是“相同分布”的。这应该不会影响到目前为止提供的答案,因为我们仍然可以假设所有观察值都来自分布的一大混合。但是,如果您认为观察结果不是独立的,那就是一个截然不同且可能更困难的问题。
zkurtz13年

Answers:


29

t检验和置换检验都没有很大的能力来识别两个这样的异常偏态分布之间的均值差异。 因此,它们都给出了一点也不表示显着性的止痛药p值。问题不在于他们似乎同意。这是因为他们很难检测到任何差异,因此他们根本不能不同意!


出于某种直觉,请考虑如果一个数据集中单个值发生变化,将会发生什么情况。例如,假设在第二个数据集中没有出现最大721,700的情况。平均值将下降约721700/3000,约为240。然而,平均值的差异仅为4964-4536 = 438,甚至没有两倍大。这表明(尽管没有证明)手段的任何比较都不会发现差异显着。

但是,我们可以验证t检验是否适用。 让我们生成一些具有相同统计特征的数据集。为此,我创建了混合物,其中

  • 5/8
  • 其余数据具有对数正态分布。
  • 布置该分布的参数以再现观察到的均值和第三四分位数。

在这些模拟结果中,最大值也与所报告的最大值相距不远。

让我们将第一个数据集复制10,000次并跟踪其平均值。(当我们对第二个数据集执行此操作时,结果将几乎相同。)这些均值的直方图估计均值的采样分布。当该分布近似于正态分布时,t检验有效。它偏离正态性的程度表示学生t分布的错误程度。因此,作为参考,我也绘制了(红色)符合这些结果的正态分布PDF。

直方图1

我们看不到太多细节,因为有一些巨大的异常值。(这就是我提到的手段的敏感性。)其中有123种,占1.23%,在10,000以上。让我们集中讨论其余部分,以便我们可以看到详细信息,因为这些离群值可能是由假设的分布的对数正态性导致的,原始数据集不一定是这种情况。

直方图2

3000/4282=50


这是R产生这些数字的代码。

#
# Generate positive random values with a median of 0, given Q3,
# and given mean. Make a proportion 1-e of them true zeros.
#
rskew <- function(n, x.mean, x.q3, e=3/8) {
  beta <- qnorm(1 - (1/4)/e)
  gamma <- 2*(log(x.q3) - log(x.mean/e))
  sigma <- sqrt(beta^2 - gamma) + beta
  mu <- log(x.mean/e) - sigma^2/2
  m <- floor(n * e)
  c(exp(rnorm(m, mu, sigma)), rep(0, n-m))
}
#
# See how closely the summary statistics are reproduced.
# (The quartiles will be close; the maxima not too far off;
# the means may differ a lot, though.)
#
set.seed(23)
x <- rskew(3300, 4536, 302.6)
y <- rskew(3400, 4964, 423.8)
summary(x)
summary(y)
#
# Estimate the sampling distribution of the mean.
#
set.seed(17)
sim.x <- replicate(10^4, mean(rskew(3367, 4536, 302.6)))
hist(sim.x, freq=FALSE, ylim=c(0, dnorm(0, sd=sd(sim.x))))
curve(dnorm(x, mean(sim.x), sd(sim.x)), add=TRUE, col="Red")
hist(sim.x[sim.x < 10000], xlab="x", freq=FALSE)
curve(dnorm(x, mean(sim.x), sd(sim.x)), add=TRUE, col="Red")
#
# Can a t-test detect a difference with more data?
#
set.seed(23)
n.factor <- 50
z <- replicate(10^3, {
  x <- rskew(3300*n.factor, 4536, 302.6)
  y <- rskew(3400*n.factor, 4964, 423.8)
  t.test(x,y)$p.value
})
hist(z)
mean(z < .05) # The estimated power at a 5% significance level

1
用于高度偏斜的数据集,其中t检验然而的一个例子适用(由于数据量很大的),请参阅stats.stackexchange.com/questions/110418/...。这两种情况共同表明,这个问题没有一个干脆的答案:在确定t检验是否有意义和准确时,必须同时考虑数据的分布和数据量。
ub

3
我喜欢这个问题,希望能够在面对认为n = 30或n = 300足以继续假设样本均值正态分布(依此类推)的人们时再次找到它。我有很好的模拟示例,但很高兴地证明这也是真实数据的问题。
Glen_b-恢复莫妮卡

1
+1,但我想知道在这种情况下您的实用建议会是什么。是否应该尝试使用基于其他统计量而不是均值(也许有些高分位数)的置换检验?在该方法上进行标准测试之前,是否应该尝试进行一些转换?还是应该放弃在两个样本之间检测出显着差异的希望?
变形虫说莫妮卡

@amoeba如果要测试均值的差异,那么排列检验将无济于事:您不会在这里发现明显的差异。如果您测试其他一些统计信息,那么您就不在测试均值(这与成本数据特别相关!),因此是否可以建议取决于目标。
ub

4

当n大时(例如300,甚至远小于3000),t检验与z检验基本相同。也就是说,t检验仅是中心极限定理的应用,它表示两组的均值几乎完全正态分布(即使这两种均值所基于的观察值与正态相距非常远)分散式!)。这也是您的典型t表不会理会显示大于1000的n值的原因(例如,此t表)。因此,看到您得到如此良好的结果,我并不感到惊讶。

编辑: 我似乎低估了偏度的极端及其重要性。尽管我的观点在不太极端的情况下值得考虑,但胡布对这个问题的回答总体上要好得多。


2
当偏度极端时(如引用的统计数据所示),我们无法保证300个甚至3000个样本的平均值的采样分布将接近于Normal。就是为什么OP感到惊讶。您通过说自己并不感到惊讶来反驳,但这似乎归因于一个人的直觉。您可以为这些数据提供什么样的客观论据,证明300(或3000)足够大的样本可以使t检验正常工作?
ub

好点。我承认,如果数据充分歪斜,我的论点就会失败。所以对我来说,问题是,数据究竟有多偏斜,是否有正式的结果将偏斜度与所需样本量相关联。
zkurtz13年

1
我已经发布了该问题的答案。我们基于问题中的摘要统计信息(至少近似地)知道数据有多偏斜。这种偏斜是如此之强,以致于每组300、3000,甚至30,000个观察值都不会使均值的采样分布“几乎完全正常”。您可能需要大约300,000左右才能使该声明成为现实。因此,对于这两个测试为何一致,我们必须寻求不同的解释。我的看法是,两者都不是“行为良好”,而是两者都行为良好。
ub

0

我知道这个答案太晚了。但是,我获得了健康服务研究博士学位,因此我经常处理医疗保健数据,包括成本数据。

我不知道OP拥有哪些数据。如果是横截面数据,那么很有可能是IID。独立意味着每个单位,也就是每个人,都是独立的。这很有可能是合理的。对于均匀分布,可以将数据建模为全部来自例如具有对数链接的广义线性模型中的伽马分布。这是人们通常在实践中所做的。或者,如果您想花哨的话,可能有跨栏模型(在计量经济学中很受欢迎)来处理多余的0。顺便说一下,这在医疗保健支出中很常见。OP在技术上是正确的,数据不一定必须均匀分布,例如,均值和方差会随着年龄而变化,但这在多个回归模型中是可行的假设。

如果每个人在数据集中的时间都超过一年,则数据将不是IID。有更复杂的模型可用于此。其中一个相对简单的假设可能是广义估计方程,伽玛分布和对数链接,并假设它们之间存在可交换的工作相关性。或者,如果这些数据来自可公开获得的调查数据,则采样的可能性并不相等-其中许多调查采访了每个家庭中的多个人,并且它们也对人口进行了分层,并对某些群体(例如种族少数群体)进行了过度采样。用户必须对此进行更正。

我不使用t检验,尤其是不用于观测数据。混杂因素太多,因此您需要在(广义)线性模型中对其进行调整。因此,我无法评论与t检验相关的问题。

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.