第12章 重抽樣與自助法

2021-10-25 02:53:41 字數 3461 閱讀 8475

r語言的再複習之路

置換檢驗步驟:

(1)與引數方法類似,計算觀測資料的t統計量,稱為t0;

(2)將兩組資料放在乙個組中;

(3)隨機分配一半到a處理中,分配一半到b處理中;

(4)計算並記錄新觀測的t統計量;

(5)對每一種可能的隨機分配重複步驟(3)~(4);

(6)將所有情況下的t統計量按公升序排列,這便是基於樣本資料的經驗分布;

(7)如果t0落在經驗分布中間95%部分的外面,則在0.05的顯著性水平下,拒絕兩個處理組的總體均值相等的零假設。

注:置換方法與引數方法都計算了相同的t統計量,區別在於引數方法是將統計量與理論分布進行比較,而置換方法則是將t統計量與置換觀測資料後獲得的經驗分布進行比較。

檢驗coin函式

兩樣本和k樣本置換檢驗

oneway_test(y ~ a)

含乙個分層(區組)因子的兩樣本和k樣本置換檢驗

oneway_test(y ~ a | c)

wilcoxon-mann-whitney秩和檢驗

wilcox_test(y ~ a)

kruskal-wallis檢驗

kruskal_test(y ~ a)

pearson卡方檢驗

chisq_test(a ~ b)

cochran-mantel-haenszel檢驗

cmh_test(a ~ b | c)

線性相關檢驗

lbl_test(d ~ e)

spearman檢驗

spearman_test(y ~ x)

friedman檢驗

friedman_test(y ~ a | c)

wilcoxon秩和檢驗

wilcoxonsign_test(y1 ~ y2)

# 建立資料

library(coin)

score <- c(40,

57,45,

55,58,

57,64,

55,62,

65)treatment <- factor(c(rep(

'a',5)

, rep(

'b',5)

))mydata <- data.frame(treatment, score)

# 引數方法

t.test(score ~ treatment, data = mydata, var.equal =

true

)# 置換方法

oneway_test(score ~ treatment, data = mydata, distribution =

'exact'

)

# k樣本檢驗

library(multcomp)

set.seed(

1234

)9999

))

library(coin)

library(vcd)

arthritis <- transform(arthritis, improved = as.factor(as.numeric(improved)))

set.seed(

1234

)9999

))

注:這裡把變數improved從乙個有序因子變為乙個分類因子。因為如果用有序因子,coin()函式將會生成乙個線性與線性趨勢檢驗,而不是卡方檢驗。

states <- as.data.frame(state.x77)

set.seed(

1234

)9999

))

對於兩配對組的置換檢驗,可使用wilcoxsign_test()函式;多於兩組時,使用friedman_test()函式。

library(coin)

library(mass)

wilcoxsign_test(u1 ~ u2, data = uscrime, distribution =

'exact'

)

自助法步驟:

(1)從樣本中隨機選擇n個觀測,抽樣後再放回。有些觀測可能會被選擇多次,有些可能一直都不會被選中;

(2)計算並記錄樣本均值;

(3)重複(1)~(2)步驟1000次;

(4)將1000個樣本均值從小到大排序;

(5)找出樣本均值2.5%和97.5%的分位點,此時即初始位置和最末位置的第25個數,他們就限定了95%的置信區間。

格式:bootobject <- boot(data = , statistic = , r = , ...)

# 獲取r平方的函式

rsq <-

function

(formula, data, indices)

# 自助法抽樣

library(boot)

set.seed(

1234

)results <- boot(data = mtcars, statistic = rsq, r =

1000

, formula = mpg ~ wt + disp)

# 輸出結果

print(results)

plot(results)

boot.ci(results, type = c(

'perc'

,'bca'

))

# 獲取模型引數的函式

bs <-

function

(formula, data, indices)

{ d <- data[indices,

] fit <- lm(formula, data = d)

return(coef(fit)

)# 自助法抽樣

library(boot)

set.seed(

1234

)results <- boot(data = mtcars, statistic = bs, r =

1000

, formula = mpg ~ wt + disp)

# 輸出結果

print(results)

plot(results, index =2)

boot.ci(results, type =

'bca'

, index =

2)

第12章 繼承

1 單一繼承 2 多重繼承 3 繼承的賦值 1 將派生類的物件賦值給基類的物件 例如father p son s p s 會呼叫賦值運算子 將左邊物件的成員賦值給右邊物件的成員 不能將基類的物件賦值給派生類的物件,因為要呼叫賦值運算子 基類物件中沒有派生類物件自己的成員 2 基類的指標或者引用指向派...

第12章 模組 2

12.3 命名空間 命名空間是名稱 識別符號 到物件的對映。向命名空間新增名稱的操作過程涉及繫結識別符號到指定物件的操作 以及給該物件的引用計數加1 改變乙個名字的繫結叫做重新繫結,刪除乙個名字叫做解除繫結。執行期間有兩個或三個活動的命名空間。這三個命名空間分別是區域性命名空間,全域性命名空間和內建...

程式設計珠璣第12章

正文 如何生成0 n 1內的m個隨機整數 1 方法一 比如要從5個數里選出2個數,第乙個數的概率是2 5,第二個數的概率是1 4,然後是0 3 那麼現在已經很清楚了。可以寫 如下 for int i 0 i n i if rand n i m 2 方法二 可以用乙個set,每生成乙個隨機,就去set...