Confidence-Interval

計算對數變換後的標準誤差

  • November 11, 2014

考慮一組正態分佈的隨機數:

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 個單位的平均值和 95% 置信區間 [0.211, 4.79]?

結束編輯#2

謝謝你的時間!

您初始計算的主要問題是沒有充分的理由應該像. 它通常是完全不同的。

在某些情況下,您可以計算一個粗略的近似值從通過泰勒展開

如果我們考慮成為對數尺度上的隨機變量,在這裡,

如果

然後

這些概念適用於抽樣分佈。

如果標準偏差與平均值相比非常小,這往往會很好地工作,如您的示例所示。

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

如果您想為參數轉換 CI ,則可以通過轉換端點來實現。

如果您嘗試轉換回來以獲取原始(未記錄)尺度上平均值的點估計和間隔,您還需要對平均值的估計進行無偏(參見上面的鏈接):,因此平均值的(非常)粗略大樣本間隔可能是, 在哪裡是對數刻度區間的上限和下限,並且是一些一致的估計.

如果您的數據在對數尺度上近似正態,您可能希望將其視為生成對數正態均值區間的問題。

引用自:https://stats.stackexchange.com/questions/123514

comments powered by Disqus