轉自 https://blog.csdn.net/hawksoft/article/details/7679263
友善以後查詢使用,轉過來
一、正态分布參數檢驗
例1. 某種原件的壽命X(以小時計)服從正态分布N(μ, σ)其中μ, σ2均未知。現測得16隻元件的壽命如下:
159 280 101 212 224 379 179 264
222 362 168 250 149 260 485 170
問是否有理由認為元件的平均壽命大于255小時?
解:按題意,需檢驗
H0: μ ≤ 225 H1: μ > 225
此問題屬于單邊檢驗問題
可以使用R語言t.test
t.test(x,y=NULL,
alternative=c("two.sided","less","greater"),
mu=0,paired=FALSE,var.equal=FALSE,
conf.level=0.95)
其中x,y是又資料構成e向量,(如果隻提供x,則作單個正态總體的均值檢驗,如果提供x,y則作兩個總體的均值檢驗),alternative表示被則假設,two.sided(預設),雙邊檢驗(H1:μ≠H0,這塊原文是不等于H0可能寫錯了,應該是μ≠μ0),less表示單邊檢驗(H1:μ<μ0),greater表示單邊檢驗(H1:μ>μ0),mu表示原假設μ0,conf.level置信水準,即1-α,通常是0.95,var.equal是邏輯變量,var.equal=TRUE表示兩樣品方差相同,var.equal=FALSE(預設)表示兩樣本方差不同。
R代碼:
X<-c(159, 280, 101, 212, 224, 379, 179, 264,
222, 362, 168, 250, 149, 260, 485, 170)
t.test(X,alternative = "greater",mu=225)
結果:
可見P值為0.257 > 0.05 ,不能拒絕原假設,接受H0,即平均壽命不大于225小時。
例2.在平爐上進行的一項試驗以确定改變操作方法的建議是否會增加剛的得率,試驗時在同一個平爐上進行的,每煉一爐剛時除操作方法外,其它條件都盡可能做到相同,先用标準方法煉一爐,然後用新方法煉一爐,以後交替進行,各煉了10爐,其得率分别為
标準方法 78.1 72.4 76.2 74.3 77.4 78.4 76.0 75.5 76.7 77.3
新方法 79.1 81.0 77.3 79.1 80.0 79.1 79.1 77.3 80.2 82.1
設這兩個樣本互相獨立,且分别來自正态總體N(μ1, σ2)和N(μ2, σ2),其中μ1,μ2和σ2未知。問新的操作能否提高得率?(取α=0.05)
解1:根據題意,需要假設
H0: μ1 ≥ μ2 H1: μ1 < μ2
這裡假定σ12=σ22=σ2,是以選擇t.test,var.equal=TRUE
R代碼:
X<-c(78.1,72.4,76.2,74.3,77.4,78.4,76.0,75.5,76.7,77.3)
Y<-c(79.1,81.0,77.3,79.1,80.0,79.1,79.1,77.3,80.2,82.1)
t.test(X,Y,var.equal = TRUE,alternative = "less")
結果:
可見P值<0.05,接受備擇假設,即新的操作能夠提高得率。
解2:
因為資料是成對出現的,是以采用成對資料t檢驗比上述的雙樣本均值檢驗更準确。所謂成對t檢驗就是Zi=Xi-Yi,再對Z進行單樣本均值檢驗
R代碼:
X<-c(78.1,72.4,76.2,74.3,77.4,78.4,76.0,75.5,76.7,77.3)
Y<-c(79.1,81.0,77.3,79.1,80.0,79.1,79.1,77.3,80.2,82.1)
t.test(X-Y, alternative = "less")
結果:
可見P值<0.05,接受備擇假設,即新的操作能夠提高得率。并且P值更小可見比雙樣本均值檢驗更準确
例3.對例2進行方差檢驗,方差是否相同
解:根據題意,需檢驗
H0: σ12 = σ22 H1: σ12 ≠ σ22
方差檢驗可以用var.test
var.test(x, y, ratio = 1,
alternative = c("two.sided", "less", "greater"),
conf.level = 0.95, ...)
x,y是來自兩樣本資料構成的向量,ratio是方差比的原假設,預設值為1.alternative是備擇假設,two.sided表示雙邊檢驗(H1:σ12/σ22<ratio),greater表示單邊檢驗(H1:σ12)
#這塊可能寫的有問題,ratio是方差比的原假設,預設值為1,也即為σ12/σ22=1,原假設的σ12 = σ22,two.sided表示雙邊檢驗(H1:σ12/σ22 ≠ratio)也即本次需要用到的備擇假設,less (H1:σ12/σ22<ratio),greater表示單邊檢驗(H1:σ12/σ22>ratio)
R代碼:
X<-c(78.1,72.4,76.2,74.3,77.4,78.4,76.0,75.5,76.7,77.3)
Y<-c(79.1,81.0,77.3,79.1,80.0,79.1,79.1,77.3,80.2,82.1)
var.test(X,Y)
結果:
可見P值為0.559>0.05,接受原假設,認為兩者方差相同
二、二項分布參數檢驗
例4.有一批蔬菜種子的平均發芽率p0=0.85,現随即抽取500粒,用種衣劑進行浸種處理,結果有445粒發芽。試檢驗種衣劑對種子發芽率有無效果。
解:根據題意,所檢驗的問題為
H0:p=p0=0.85, H1:p≠p0
可以用R語言的binom.test
binom.test(x, n, p = 0.5,
alternative = c("two.sided", "less", "greater"),
conf.level = 0.95)
其中x是成功的次數;或是一個由成功數和失敗數組成的二維向量。n是試驗總數,當x是二維向量時,此值無效。P是原假設的機率。
R語言代碼:
binom.test(445,500,p=0.85)
結果:
可知P值0.01207<0.05,拒絕原假設,說明種衣劑對種子的發芽率有顯著效果。
三、其它重要的非參數檢驗法
3.1.理論分布完全已知的情況下
3.1.1.皮爾森拟合優度檢驗
例5.某消費者協會為了确定市場上消費者對5種品牌啤酒的喜好情況,随即抽取了1000名啤酒愛好者作為樣品進行試驗:每個人得到5種品牌的啤酒各一瓶,但未标明牌子。這5種啤酒分别按着A、B、C、D、E字母的5張紙片随即的順序送給每一個人。下表是根據樣本資料整理的各種品牌啤酒愛好者的頻數分布。試根據這些資料判斷消費者對這5種品牌啤酒的愛好有無明顯差異?
最喜歡的牌子 A B C D E
人數X 210 312 170 85 223
解:如果消費者對5種品牌的啤酒無顯著差異,那麼,就可以認為喜好這5種拍品啤酒的人呈均勻分布,即5種品牌啤酒愛好者人數各占20%。據此假設
H0:喜好5種啤酒的人數分布均勻
可以使用Pearson χ2拟合優度檢驗,R語言中調用chisq.test(X)
chisq.test(x, y = NULL, correct = TRUE,
p = rep(1/length(x), length(x)), rescale.p = FALSE,
simulate.p.value = FALSE, B = 2000)
其中x是由觀測資料構成的向量或者矩陣,y是資料向量(當x為矩陣時,y無效)。correct是邏輯變量,标明是否用于連續修正,TRUE(預設值)表示修正,FALSE表示不修正。p是原假設落在小區間的理論機率,預設值表示均勻分布,rescale.p是邏輯變量,選擇FALSE(預設值)時,要求輸入的p滿足和等于1;選擇TRUE時,并不要求這一點,程式将重新計算p值。simulate.p.value邏輯變量(預設值為FALSE),當為TRUE,将用仿真的方法計算p值,此時,B表示仿真的此值。
R語言代碼:
X<-c(210, 312, 170, 85, 223)
chisq.test(X)
結果:
例6.為研究電話總機在某段時間内接到的呼叫次數是否服從Poisson分布,現收集了42個資料,如下表所示,通過對資料的分析,問能否确認在某段時間内接到的呼叫次數服從Poisson分布(α = 0.1)?
解:R語言代碼:
#輸入資料
X<-0:6; Y<-c(7, 10, 12, 8, 3, 2, 0)
#計算理論分布,其中mean(rep(X,Y))為樣本均值
q<-ppois(X, mean(rep(X,Y))); n<-length(Y)
p=rep(0,n)
p[1]<-q[1]; p[n]<-1-q[n-1]
for (i in 2:(n-1))
p[i]<-q[i]-q[i-1]
#作檢驗
chisq.test(Y,p=p)
提示結果可能不準确,因為皮爾森卡方拟合由度檢驗要求分組後每組的頻數至少要大于等于5,而後三組中出現的頻率分别為3,2,0,均小于5,解決問題的方法是将後三組合成一組,此時的頻數為5,滿足要求,重寫R語言代碼
R語言代碼:
#輸入資料
X<-0:6; Y<-c(7, 10, 12, 8, 3, 2, 0)
#計算理論分布,其中mean(rep(X,Y))為樣本均值
q<-ppois(X, mean(rep(X,Y))); n<-length(Y)
p<-rep(0,n)
p[1]<-q[1]; p[n]<-1-q[n-1]
for (i in 2:(n-1))
p[i]<-q[i]-q[i-1]
#重新分組
Z<-c(7, 10, 12, 8, 5)
#重新計算理論分布
n<-length(Z); p<-p[1:n-1]; p[n]<-1-q[n-1]
#作檢驗
chisq.test(Z,p=p)
可見P值>>0.1,可以确認在某段時間之内接到的電話次數服從Poisson 分布
3.1.2.正态W檢驗
例7.已知15名學生體重如下,問是否服從正态分布
解:
R語言代碼:
w <- c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 63.5,
66.6, 64.0, 57.0, 69.0, 56.9, 50.0, 72.0)
shapiro.test(w)
P值>0.05,接受原假設,認為來自正态分布總體。
3.2.理論分布依賴于若幹個未知參數的情況
3.2.1Kolmogorov-Smirnov 檢驗
例8.對一台裝置進行壽命檢驗,記錄10次無故障工作時間,并按從小到大的次序排列如下:(機關)
420 500 920 1380 1510 1650 1760 2100 2300 2350
試用Kolmogorov-Smirnov K 檢驗方法檢驗此裝置無故障工作時間分布是否服從λ = 1/1500的指數分布?
解: R語言進行Kolmogorov-Smirnov K 檢驗使用ks.test( )
ks.test(x, y, ...,
alternative = c("two.sided", "less", "greater"),
exact = NULL) # x是待檢測的樣品構成的向量,y是原假設的資料向量或是原假設的字元串。
R語言代碼:
X<-c(420, 500, 920, 1380, 1510, 1650, 1760, 2100, 2300, 2350)
ks.test(X, "pexp", 1/1500)
P值大于0.05,無法拒絕原假設,是以認為此裝置無故障工作時間的分布服從λ = 1/1500的指數分布。
例9.假定從分布函數未知的F(x)和G(x)的總體中分别抽出25個和20個觀察值的随即樣品,其資料由下表所示。現檢驗F(x)和G(x)是否相同。
R語言代碼:
X<-scan( )
0.61 0.29 0.06 0.59 -1.73 -0.74 0.51 -0.56
1.64 0.05 -0.06 0.64 -0.82 0.37 1.77
2.36 1.31 1.05 -0.32 -0.40 1.06 -2.47
0.39 1.09 -1.28
Y<-scan( )
2.20 1.66 1.38 0.20 0.36 0.00
0.96 1.56 0.44 1.50 -0.30 0.66
2.31 3.29 -0.27 -0.37 0.38 0.70
0.52 -0.71
ks.test(X,Y)
P值>0.05,無法拒絕原假設,說明F(x)和G(x)分布函數相同。
3.2.2.列聯表資料的檢驗
例10.為了研究吸煙是否與患肺癌相關,對63位肺癌患者及43名非肺癌患者(對照組)調查了其中的吸煙人數,得到2x2列聯表,如下表所示
解:
進行Pearson卡方檢驗
R語言代碼:
x<-c(60, 3, 32, 11)
dim(x)<- c(2,2)
chisq.test(x,correct = F)
P值<0.05,拒絕原假設,認為吸煙與患肺癌相關。
例11.某醫師為研究B肝免疫球蛋白預防胎兒宮内感染HBV的結果,将33例HBsAg陽性孕婦随即分為預防注射組和對照組,結果由下表所示,問兩組新生兒的HBV總體感染率有無差别?
解: 最小期望值T=(11*9)/33=3 < 5 ,是以不能使用卡方檢驗,使用fisher檢驗,在R語言中使用fisher.test( )
fisher.test(x, y = NULL, workspace = 200000, hybrid = FALSE,
control = list(), or = 1, alternative = "two.sided",
conf.int = TRUE, conf.level = 0.95)
#其中x是具有二維列聯表形式的矩陣或是由因子構成的對象,y是由因子構成的對象,當x是矩陣時,此值無效。workspace的輸入值時一整數,其整數表示用于網絡算法空間的大小。hybrid為邏輯變量,FALSE(預設值)表示精确計算機率,TRUE表示用混合算法計算機率。alternative為備擇,有"two.sided"(缺失值)雙邊,"less"單邊小于,"greater"單邊大于,conf.int邏輯變量,當conf.int=TRUE(預設值),給出 區間估計。conf.level為置信水準,預設值為0.95,其餘參數見線上說明。
R語言代碼:
x<-c(4,5,18,6); dim(x)<-c(2,2)
fisher.test(x)
可見P值>0.05,接受原假設,認為兩變量是獨立的,即兩組新生兒的HBV總體感染率無差别
例12.某胸科醫院同時用甲乙兩種方法測定202份痰樣本中的抗酸杆菌,結果如下表所示,問甲、乙兩種方法檢出率有無差異。
解:因為是在相同個體上進行的兩次檢驗,是以使用McNemar檢驗,
H0:對相同痰樣本測定中,甲乙兩種方法檢出率沒有差異。
在R語言中進行McNemar檢驗用到函數mcnemar.test( )
mcnemar.test(x, y = NULL, correct = TRUE) #其中x是具有二維列聯表形式的矩陣或是由因子構成的對象。y是由因子構成的對象,當x是矩陣時,此值無效。correct是邏輯變量,TRUE(預設值)表示在計算檢驗統計量時用連續修正,FALSE是不用修正。
R語言代碼:
X<-c(49, 21, 25, 107); dim(X)<-c(2,2)
mcnemar.test(X,correct=FALSE)
P值> 0.05,不能認為兩種檢測方法有差異。
3.2.3.符号檢驗
例13.聯合國人員在世界上66個大城市的生活花費指數(以紐約市1996年12月為100)按自小至大的次序排列如下(這裡北京的指數為99):
66 75 78 80 81 81 82 83 83 83 83
84 85 85 86 86 86 86 87 87 88 88
88 88 88 89 89 89 89 90 90 91 91
91 91 92 93 93 96 96 96 97 99 100
101 102 103 103 104 104 104 105 106 109 109
110 110 110 111 113 115 116 117 118 155 192
假設這個樣品是從世界許多大城市中随即抽樣得到的。試用符号檢驗分析,北京是在中位數之上,還是在中位數之下。
解:樣本的中位數(M)作為城市生活水準的中間值,是以需要檢驗:
H 0 : M ≥ 99, H 1 : M < 99.
輸入資料,作二項檢驗。
R語言代碼:
X <- c(66,75, 78 ,80 ,81 ,81 ,82, 83, 83, 83, 83,
84 , 85, 85, 86, 86, 86, 86, 87 ,87, 88, 88,
88, 88, 88, 89 ,89, 89, 89, 90 ,90 ,91 ,91,
91 ,91, 92, 93, 93, 96, 96, 96, 97, 99, 100,
101, 102, 103, 103 ,104, 104, 104 ,105, 106, 109, 109,
110 ,110, 110, 111, 113, 115, 116, 117 ,118, 155 ,192)
binom.test(sum(X>99), length(X), al="l")
在程式中,sum(x>99)表示樣本中大于99的個數。al是alternative的縮寫,"l"是"less"的縮寫。計算出的P值小于0.05,拒絕原假設,也就是說,北京的生活水準高于世界的中位水準。
例14.用兩種不同的飼料養豬,其增重情況如下表所示。試分析兩種飼料養豬有無顯著差異。
R語言代碼:
x<-scan()
25 30 28 23 27 35 30 28 32 29 30 30 31 16
y<-scan()
19 32 21 19 25 31 31 26 30 25 28 31 25 25
binom.test(sum(x<y), length(x))
sum(x < y)表示樣品X小于樣品Y的個數。計算出P值大于0.05,無法拒絕原假設,可以認為兩種飼料養豬無顯著差異。
例15.某飲料店為了解顧客對飲料的愛好情感,進一步改進他們的工作,對顧客喜歡咖啡還是喜歡奶茶,或者兩者同樣愛好進行了調查,顧客喜歡咖啡超過奶茶用正号表示,喜歡奶茶超過咖啡用負号表示,兩者同樣愛好用0表示。現将調查的結果列在下表中。試分析顧客是喜歡咖啡還是喜歡奶茶。
解:根據題意可檢驗如下假設:
H0:顧客喜歡咖啡等于喜歡奶茶; H1:顧客喜歡咖啡超過奶茶。
以上資料中有以人(即6号顧客)表示對咖啡和奶茶有同樣愛好,用0表示,是以在樣本容量中不加計算,是以實際上N=12.如果H0假設為真,那麼符合p為1/2的二項分布,如果H1為真,那麼顧客喜歡奶茶的人數小于理論值,al="l",是以用R軟體進行計算,顯著性水準取α = 0.10,
R語言代碼:
binom.test(3,12,p=1/2, al="l", conf.level = 0.90)
可見P值 < 0.1 ,置信區間也不包括0.5,是以拒絕原假設人口喜歡咖啡的人超過喜歡奶茶的人。
在符号檢驗法中,隻計算符号的個數,而不考慮每個符号差所包含的絕對值的大小,是以常常使用彌補了這個缺點的wilcoxon符号秩檢驗。
3.3.4.符号秩檢驗
例16.假定某電池廠宣稱該廠生産的某種型号電池壽命的中位數為140安培小時。為了檢驗改廠生産的電池是否符合其規定的标準,現從新近生産的一批電池中抽取了随即樣本,并對這20個電池的壽命進行了測試,其結果如下(機關:安培小時):
137.0 140.0 138.3 139.0 144.3 139.1 141.7 137.3 133.5 138.2
141.1 139.2 136.5 136.5 135.6 138.0 140.9 140.6 136.3 134.1
試用Wilcoxon符号秩檢驗分析該廠生産的電池是否符合其标準。
解:根據題意假設:
H0:電池中位數M≥ 140安培小時;
H1:電池中位數<140安培小時。
在R語言中進行符号秩檢驗可以使用wilcox.test( )
wilcox.test(x, y = NULL,
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, exact = NULL, correct = TRUE,
conf.int = FALSE, conf.level = 0.95, ...)
其中x,y是觀察資料構成的資料向量。alternative是備擇假設,有單側檢驗和雙側檢驗,mu待檢參數,如中位數M0.paired是邏輯變量,說明變量x,y是否為成對資料。exact是邏輯變量,說明是否精确計算P值,當樣本量較小時,此參數起作用,當樣本兩較大時,軟體采用正态分布近似計算P值。correct是邏輯變量,說明是否對P值的計算采用連續性修正,相同秩次較多時,統計量要校正。conf.int是邏輯變量,說明是否給出相應的置信區間。
R語言代碼:
X<-scan()
137.0 140.0 138.3 139.0 144.3 139.1 141.7 137.3 133.5 138.2 141.1 139.2 136.5 136.5 135.6 138.0 140.9 140.6 136.3 134.1
wilcox.test(X, mu=140, alternative="less",
exact=FALSE,correct=FALSE, conf.int=TRUE)
這裡V=34是wicoxon的統計量,P值<0.05,即拒絕原假設,接受備擇假設,中位值小于小于140安培小時。
例17. 為了檢驗一種新的複合肥和原來使用的肥料相比是否顯著提高了小麥的産量,在一個農場中選擇了10塊田地,每塊等分為兩部分,其中任指定一部分使用新的複合肥料,另一部分使用原肥料。小麥成熟後稱得各部分小麥産量如下表所示。試用Wilcoxon符号檢驗法檢驗新複合肥是否會顯著提高小麥的産量,并與符号檢驗作比較(α = 0.05)。
解:根據題意作如下假設:
H0:新複合肥的産量與原肥料的産量相同,
H1:新複合肥的産量高于原肥料的産量。
符号秩檢驗R語言代碼:
x<-c(459, 367, 303, 392, 310, 342, 421, 446, 430, 412)
y<-c(414, 306, 321, 443, 281, 301, 353, 391, 405, 390)
wilcox.test(x, y, alternative = "greater", paired = TRUE)
可見P值<0.05拒絕原假設,即新複合肥能顯著提高小麥産量。
符号檢驗R語言代碼:
x<-c(459, 367, 303, 392, 310, 342, 421, 446, 430, 412)
y<-c(414, 306, 321, 443, 281, 301, 353, 391, 405, 390)
binom.test(sum(x>y), length(x), alternative = "greater")
用符号檢驗P值>0.05,是以在α = 0.05的水準下,就所給資料而言,符号檢驗還不足以區分兩種化肥對提高小麥的産量産生差異。
例18.今測得10名非鉛作業勞工和7名鉛作業勞工的血鉛值,如下表所示。試用Wilcoxon秩和檢驗分析兩組勞工血鉛值有無差異。
解:進行Wilcoxon秩和檢驗R語言同樣可以使用wilcox.test( )
R語言代碼:
x<-c(24, 26, 29, 34, 43, 58, 63, 72, 87, 101)
y<-c(82, 87, 97, 121, 164, 208, 213)
wilcox.test(x,y,alternative="less",exact=FALSE,correct=FALSE)
P值小于0.05,拒絕原假設,即鉛作業勞工血鉛值高于非作業勞工。
例19.某醫院用某種藥物治療兩型慢性支氣管炎患者共216例,療效由下表所示,試分析該藥物對兩型慢性支氣管炎的治療是否相同。
解:我們想象各病人的療效用4個不同的值表示(1表示最好,4表示最差),這樣就可以位這216名排序,是以,可用Wilcoxon秩和檢驗來分析問題。
R語言代碼:
x<-rep(1:4, c(62, 41, 14,11)); y<-rep(1:4, c(20, 37, 16, 15))
wilcox.test(x, y, exact=FALSE)
P值<0.05,拒絕原假設,即認為該藥物對兩型慢性支氣管炎的治療是不相同的。因為資料有結點存在,故無法精确計算P值,其參數為exact=FALSE。
3.3.5.二進制資料相關檢驗
例20.某種礦石中兩種有用成分A,B,取10個樣品,每個樣品中成分A的含量百分數x(%),及B的含量百分數y(%)的資料下表所示,對兩組資料進行相關性檢驗。
解:進行相關性檢驗,在R語言中可以使用cor.test( )
cor.test(x, y,
alternative = c("two.sided", "less", "greater"),
method = c("pearson", "kendall", "spearman"),
exact = NULL, conf.level = 0.95, ...)
#其中x,y是資料長度相同的向量,alternative是備擇假設,預設值為"two.sided",method是檢驗方法,預設值是Pearson檢驗,conf.level是置信區間水準,預設值為0.95
cor.test( )還有另一種使用格式
cor.test(formula, data, subset, na.action, ...) #其中formula是公式,形如'~u+v' , 'u', 'v' 必須是具有相同長度的數值向量,data是資料框,subset是可選擇向量,表示觀察值的子集。
假設此例中兩組資料均來自正态分布,使用pearson相關性檢驗,
R語言代碼:
ore<-data.frame(
x=c(67, 54, 72, 64, 39, 22, 58, 43, 46, 34),
y=c(24, 15, 23, 19, 16, 11, 20, 16, 17, 13)
)
cor.test(ore$x,ore$y)
可見P值<0.05,拒絕原假設,認為X與Y相關。
例21.一項有六個人參加表演的競賽,有兩人進行評定,評定結果用下表所示,試用Spearman秩相關檢驗方法檢驗這兩個評定員對等級評定有無相關關系。
解:
R語言代碼:
x<-c(1,2,3,4,5,6); y<-c(6,5,4,3,2,1)
cor.test(x, y, method = "spearman")
可見P值<0.05,拒絕原假設,認為x與y相關,rs=-1,表示這兩個量是完全負相關,即兩人的結論有關系,但完全相反。