Bootstrap

自舉是否適合這種連續數據?

  • August 2, 2014

我是一個完整的新手:)

我正在做一項研究,樣本量為 10,000,來自大約 745,000 的人口。每個樣本代表一個“百分比相似性”。絕大多數樣本在 97%-98% 左右,但少數在 60% 到 90% 之間,即分佈嚴重負偏。大約 0.6% 的結果是 0%,但這些將與樣本分開處理。

所有 10,000 個樣本的平均值為 97.7%,僅在 Excel 中,StdDev 為 3.20。我知道 StdDev 在這裡並不真正適用,因為結果不是正態分佈的(而且因為 +3.20 會讓你超過 100%!)。

我的問題是:

  1. 自舉(對我來說是一個新概念)合適嗎?
  2. 我是否正確引導:)
  3. 什麼是足夠的樣本量?

我正在做的是重新採樣(替換)我的 10,000 個結果併計算新的平均值。我這樣做了幾千次,並將每個平均值存儲在一個數組中。然後我計算“平均值”,這是我的統計結果。為了計算 99% CI,我選擇了第 0.5% 的值和第 99.5% 的值,這會產生一個非常小的範圍:97.4% - 98.0%。這是一個有效的結果還是我做錯了什麼?

至於樣本量,我只抽樣了大約 1.3% 的人口——我不知道這是否“足夠”。我如何知道我的樣本是否代表總體?理想情況下,我希望對 +/- 0.50% 個百分點(即 97.2% - 98.2%)的平均值有 99% 的信心。

提前感謝您的任何提示!

**標準偏差在這里和其他任何地方一樣適用:**它提供了有關數據分散的有用信息。特別是,sd 除以樣本大小的平方根是一個標準誤差:它估計了均值抽樣分佈的離散度。讓我們計算一下:

那是很小的——遠小於您尋求的精度。

雖然數據不是正態分佈的,但樣本均值非常接近正態分佈,因為樣本量很大。 例如,這裡是一個與你的特徵相同的樣本的直方圖,在它的右邊是來自同一總體的一千個額外樣本的平均值的直方圖。

圖1

它看起來非常接近正常,不是嗎?

因此,**儘管您似乎正確引導,但不需要引導:**對稱像往常一樣,通過將標準誤差乘以標準正態分佈的適當百分位數來獲得平均值的置信區間(即,) 並將該距離移動到平均值的任一側。在你的情況下,, 所以置信區間為

通過反轉該關係以求解樣本量,可以找到**足夠的樣本量。**在這裡它告訴我們您需要一個樣本大小

這足夠小,我們可能想要重新檢查平均值的抽樣分佈是正態的結論。 我畫了一個樣本來自我的人口並引導其平均值(對於迭代):

圖 2

果然,看起來很正常。事實上,自舉置信區間與正常理論 CI 幾乎相同.

正如這些例子所示,絕對樣本量決定了估計的準確性,而不是人口規模的比例。 (一個極端但直觀的例子是,一滴海水可以準確估計海洋中鹽的濃度,即使那一滴海水只佔所有海水的一小部分。)為了你所說的目的,獲取一個樣本的(這需要超過工作量是樣本的兩倍) 是矯枉過正。


R執行這些分析並繪製這些圖形的代碼如下。它從具有 Beta 分佈的群體中採樣,平均值為和標準差.

set.seed(17)
#
# Study a sample of 10,000.
#
Sample <- rbeta(10^4, 20.4626, 0.4817)
hist(Sample)
hist(replicate(10^3, mean(rbeta(10^4, 20.4626, 0.4817))),xlab="%",main="1000 Sample Means")
#
# Analyze a sample designed to achieve a CI of width 1%.
#
(n.sample <- ceiling((0.032 / (0.005 / qnorm(1-0.005)))^2))
Sample <- rbeta(n.sample, 20.4626, 0.4817)
cat(round(mean(Sample), 3), round(sd(Sample), 3)) # Sample statistics
se.mean <- sd(Sample) / sqrt(length(Sample))      # Standard error of the mean
cat("CL: ", round(mean(Sample) + qnorm(0.005)*c(1,-1)*se.mean, 5)) # Normal CI
#
# Compare the bootstrapped CI of this sample.
#
Bootstrapped.means <- replicate(9999, mean(sample(Sample, length(Sample), replace=TRUE)))
hist(Bootstrapped.means)
cat("Bootstrap CL:", round(quantile(Bootstrapped.means, c(0.005, 1-0.005)), 5))

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

comments powered by Disqus