R語言學習筆記(八):功效分析
T檢測
#計算期望的樣本大小install.packages("pwr")library(pwr)pwr.t.test(d=.8,sig.level=.05,power=.9,type="two.sample")Two-sample t test power calculation
n = 33.82555 #樣本大小
d = 0.8 #效應值,標準化的均值之差sig.level = 0.05 #顯著水平power = 0.9 #功效水平,多少把握成功測量出效果alternative = two.sided #檢測類型,可選的類型為:雙側檢測或單側檢測NOTE: n is number in *each* group
#在固定的樣本大小內,結果的正確範圍
pwr.t.test(n=20,d=.5,sig.level = .01,type="two.sample")Two-sample t test power calculation
n = 20
d = 0.5
sig.level = 0.01power = 0.1439551alternative = two.sidedNOTE: n is number in *each* group
#方差分析,求期望樣本大小
pwr.anova.test(k=5,f=.25,sig.level = .05,power=.8)Balanced one-way analysis of variance power calculation
k = 5 #分組數量
n = 39.1534 #每組的數據量f = 0.25 #效應值,sig.level = 0.05 #顯著水平
power = 0.8 #功效NOTE: n is number in each group
#相關性,求期望樣本大小
pwr.r.test(r=.25,sig.level = .05,power=.90,alternative = "greater")approximate correlation power calculation (arctangh transformation)
n = 133.2803 #樣本大小
r = 0.25 #效應值sig.level = 0.05 #顯著水平power = 0.9 #功效值alternative = greater
#線性模型,求期望樣本大小,N-K-1=樣本大小
pwr.f2.test(u=3,f2=0.0769,sig.level =0.05,power=0.90)Multiple regression power calculation
u = 3 #集合只差
v = 184.2426 #N-變數總數-1=v -> 樣本總算=v+變數總數+1f2 = 0.0769 #效應值sig.level = 0.05 #顯著性power = 0.9 #功效值#比例檢測,求期望樣本大小pwr.2p.test(h=ES.h(.65,.6),sig.level = .05,power=.9,alternative = "greater")
Difference of proportion power calculation for binomial distribution (arcsine transformation)
h = 0.1033347 #效應值
n = 1604.007 #樣本大小sig.level = 0.05 #顯著水平power = 0.9 #功效值alternative = greater #測試類型,雙尾或單尾NOTE: same sample sizes
#卡方檢驗,求期望樣本大小
prob<-matrix(c(.42,.28,.03,.07,.10,.10),byrow=TRUE,nrow=3)ES.w2(prob)pwr.chisq.test(w=ES.w2(prob),df=2,sig.level=.05,power=.9)
Chi squared power calculation
w = 0.1853198 #效應值
N = 368.4528 #樣本大小df = 2 #自由度sig.level = 0.05 #顯著水平power = 0.9 #功效NOTE: N is the number of observations
單因素Anova中的檢測顯著效應所需的樣本大小
es<-seq(.1,.5,.01)nes<-length(es)
samsize<-NULL for(i in 1:nes){ result<-pwr.anova.test(k=5,f=es[i],sig.level = .05,power=.9) samsize[i]<-ceiling(result$n) } plot(samsize,es,type="l",lwd=2,col="red",ylab="Effect Szie", xlab="Sample Szie (per cell)",main="One Way Anova With Power=.90 and Alpha=.05")r<-seq(.1,.5,.01)#在.1和.5之間生成步長為.01的數字序列
nr<-length(r) p<-seq(.4,.9,.1) np<-length(p) samsize<-array(numeric(nr*np),dim=c(nr,np)) #samsize for(i in 1:np){
for(j in 1:nr) { result<-pwr.r.test(n=NULL,r=r[j],sig.level = .05,power = p[i],alternative = "two.sided") samsize[j,i]<-ceiling(result$n) } }# samsize xrange<-range(r) yrange<-round(range(samsize)) colors<-rainbow(length(p)) plot(xrange,yrange,type="n",xlab="Correlation Coefficient (r)",ylab="Sample Size (n)") for(i in 1:np){ lines(r,samsize[,i],type="l",lwd=2,col=colors[i]) } abline(v=0,h=seq(0,yrange[2],50),lty=2,col="grey89") abline(h=0,v=seq(xrange[1],xrange[2],.02),lty=2,col="gray89") title("Sample Szie Estimation for Correlation Studies") legend("topright",title="Power",as.character(p),fill=colors)
何為顯著性檢驗
顯著性檢驗的思想十分的簡單,就是認為小概率事件不可能發生。雖然概率論中我們一直強調小概率事件必然發生,但顯著性檢驗還是相信了小概率事件在我做的這一次檢驗中沒有發生。
顯著性檢驗即用於實驗處理組與對照組或兩種不同處理的效應之間是否有差異,以及這種差異是否顯著的方法。
常把一個要檢驗的假設記作H0,稱為原假設(或零假設),與H0對立的假設記作H1,稱為備擇假設。
⑴在原假設為真時,決定放棄原假設,稱為第一類錯誤,其出現的概率通常記作α;
⑵在原假設不真時,決定接受原假設,稱為第二類錯誤,其出現的概率通常記作β。
通常只限定犯第一類錯誤的最大概率α,不考慮犯第二類錯誤的概率β。這樣的假設檢驗又稱為顯著性檢驗,概率α稱為顯著性水平。
推薦閱讀:
※Python程序的性能分析方法
※《論語》,孔子的喪葬工作筆記
※ML5-Backpropagation(李宏毅筆記)
※筆記工具思考與功能設計
※Python數據分析學習(1)
TAG:筆記 |