计算对数变换后的标准误差

机器算法验证 置信区间 数据转换 描述性统计
2022-01-25 07:39:44

考虑一组正态分布的随机数:

x <- rnorm(n=1000, mean=10)

我们想知道平均值和平均值的标准误差,因此我们执行以下操作:

se <- function(x) { sd(x)/sqrt(length(x)) }
mean(x) # something near 10.0 units
se(x)   # something near 0.03 units

伟大的!

但是,假设我们不一定知道我们的原始分布遵循正态分布。我们对数据进行对数转换并执行相同的标准误差计算。

z <- log(x, base=10)
mean(z) # something near 1 log units
se(z)   # something near 0.001 log units

很酷,但是现在我们需要进行反向转换以得到单位而不是对数单位的答案。

10^mean(z) # something near 10.0 units
10^se(z)   # something near 1.00 units

我的问题:对于正态分布,为什么标准误差会根据它是从分布本身计算得出还是经过变换、计算和反变换而有所不同?注意:无论转换如何,均值相同。

编辑#1:最终,我有兴趣计算非正态分布数据的均值和置信区间,所以如果您可以就如何计算转换数据的 95% CI 提供一些指导,包括如何反向转换到其原生单位, 我会很感激!
结束编辑#1

编辑#2:我尝试使用分位数函数来获得 95% 的置信区间:

quantile(x, probs = c(0.05, 0.95))     # around [8.3, 11.6]
10^quantile(z, probs = c(0.05, 0.95))  # around [8.3, 11.6]

所以,这收敛在同一个答案上,这很好。但是,使用这种方法并不能使用具有“小”样本量的非正态数据提供完全相同的区间:

t <- rlnorm(10)
mean(t)                            # around 1.46 units
10^mean(log(t, base=10))           # around 0.92 units
quantile(t, probs = c(0.05, 0.95))                     # around [0.211, 4.79]
10^(quantile(log(t, base=10), probs = c(0.05, 0.95)))  # around [0.209, 4.28]

哪种方法会被认为“更正确”。我假设人们会选择最保守的估计?

例如,您是否会将非正态数据 (t) 的此结果报告为具有 0.92 个单位的平均值和 [0.211, 4.79] 的 95% 置信区间?
结束编辑#2

谢谢你的时间!

2个回答

您初始计算的主要问题是没有充分的理由esd(log(Y))应该像sd(Y). 它通常是完全不同的。

在某些情况下,您可以计算一个粗略的近似值sd(Y)sd(log(Y))通过泰勒展开

Var(g(X))(g(μX))2σX2.

如果我们考虑X成为对数尺度上的随机变量,在这里,g(X)=exp(X)

如果Var(exp(X))exp(μX)2σX2

然后sd(exp(X))exp(μX)σX

这些概念适用于抽样分布。

如果标准偏差与平均值相比非常小,这往往会很好地工作,如您的示例所示。

> mean(y)
[1] 10
> sd(y)
[1] 0.03
> lm=mean(log(y))
> ls=sd(log(y))
> exp(lm)*ls
[1] 0.0300104 

如果您想为参数转换 CI ,则可以通过转换端点来实现。

如果您尝试转换回来以获取原始(未记录)尺度上的平均值的点估计和间隔,您还需要取消对平均值的估计(参见上面的链接):E(exp(X))exp(μX)(1+σX2/2),因此平均值的(非常)粗略大样本间隔可能是(c.exp(L),c.exp(U)), 在哪里L,U是对数刻度区间的上限和下限,并且c是一些一致的估计1+σX2/2.

如果您的数据在对数尺度上近似正态,您可能希望将其视为生成对数正态均值区间的问题。

(还有其他方法可以对跨变换的平均估计进行无偏估计;例如,参见 Duan, N., 1983。涂抹估计:非参数再变换方法。JASA, 78, 605-610)

听起来您实际上想要几何标准误差,类似于几何平均值exp(mean(log(x)))

虽然将其计算为:

exp(sd(log(x)/sqrt(n-1)))

您和其他人已经指出,由于几个原因,这是不正确的。相反,使用:

exp(mean(log(x))) * (sd(log(x))/sqrt(n-1))

这是几何平均值乘以对数标准误差。这应该非常接近“自然”标准误差。

来源:https ://www.jstor.org/stable/pdf/2235723.pdf