計算對數變換後的標準誤差
考慮一組正態分佈的隨機數:
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 ,則可以通過轉換端點來實現。
如果您嘗試轉換回來以獲取原始(未記錄)尺度上平均值的點估計和間隔,您還需要對平均值的估計進行無偏(參見上面的鏈接):,因此平均值的(非常)粗略大樣本間隔可能是, 在哪裡是對數刻度區間的上限和下限,並且是一些一致的估計.
如果您的數據在對數尺度上近似正態,您可能希望將其視為生成對數正態均值區間的問題。