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.01
power = 0.1439551
alternative = two.sided

NOTE: 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+變量總數+1
f2 = 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\n")
 legend("topright",title="Power",as.character(p),fill=colors)

 

 

何為顯著性檢驗

       顯著性檢驗的思想十分的簡單,就是認為小概率事件不可能發生。雖然概率論中我們一直強調小概率事件必然發生,但顯著性檢驗還是相信了小概率事件在我做的這一次檢驗中沒有發生。

      顯著性檢驗即用於實驗處理組與對照組或兩種不同處理的效應之間是否有差異,以及這種差異是否顯著的方法。

      常把一個要檢驗的假設記作H0,稱為原假設(或零假設),與H0對立的假設記作H1,稱為備擇假設。

⑴在原假設為真時,決定放棄原假設,稱為第一類錯誤,其出現的概率通常記作α;

⑵在原假設不真時,決定接受原假設,稱為第二類錯誤,其出現的概率通常記作β。

      通常只限定犯第一類錯誤的最大概率α,不考慮犯第二類錯誤的概率β。這樣的假設檢驗又稱為顯著性檢驗,概率α稱為顯著性水平。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM