我有大約25個不同組的數據。爲了瞭解如果我有不同的樣本規模,每個組的方差會發生怎樣的變化,我正在嘗試進行分層自舉。例如,在樣本大小爲5時,它應該爲每個組生成1000個5個重採樣點的集合。我喜歡根據需要收集最小樣本量,可能範圍爲每組5至30個。R> 25分層的分層引導
我遇到的問題是我必須對每個組進行子集分類,然後在各個組上運行bootstrapping,然後將R輸出複製並過濾到excel中。 (我在R中相當綠色,以及如何編碼)。它需要很長時間。我需要自動執行引導以識別組,並以某種方式將1000組的集合的統計信息保存到數據框中。這有意義嗎?
這裏是代碼,我到目前爲止有:....
#sample data
set.seed(1234)
df <- data.frame(g.name = as.factor(sample(c(LETTERS),100, replace = T)),
C.H = as.numeric(sample(c(1:9),100, replace=T)))
#subset data by group... here only a three examples
Agroup=subset(df,C.H=='A')
Bgroup=subset(df,C.H=='B')
Cgroup=subset(df,C.H=='C')
#Bootstrap selecting a sample size of "i", "B" number of times. i.e. I am
selecting sample sizes from 5 to 30, 1000 times each. I then apply var() to
the sample, and take the multiple variances(or the variance of the
variances). C.H is the measurement ranging from 1 to 9.
B=1000
cult.var=(NULL)
for (i in 5:30){
boot.samples=matrix(sample(Agroup$C.H,size=B*i,
replace=TRUE),B,i)
cult.var[i]=var(apply(boot.samples,1,var))
}
print(cult.var)
這工作,但它是一個很大的複製和粘貼。我認爲我需要使用for循環來按組進行引導,或者指定其他的東西。我確實找到了一種無需自舉即可進行分層採樣的方法。所以,也許我可以弄清楚如何以某種方式重複那1000次...
example here使用函數boot()
不符合我的情況。我已經擺弄了一下,但無濟於事。我不知道如何編寫函數,這也可能是我無法弄清楚的原因。
你的功能是什麼(x)?這是朝正確方向邁出的一步。 – andemexoax
你的'function(x)'是什麼?我不認爲這是五次1000倍的樣本。我認爲你所有的代碼都在爲每個'strata'採取1000個採樣,這很好,但是我需要採樣5次1000次,然後是6次1000次,一直到30次。隨着樣本大小的增加,差異的方差(你的'sapply()')應該下降。 – andemexoax
便便,我讀了你的問題太快了。即將編輯,我希望。編輯 –