[R] Help for Power analysis

Uwe Ligges ligges at statistik.uni-dortmund.de
Sun Dec 9 23:51:54 CET 2001


"Ass.Prof. Nikom Thanomsieng" wrote:
> 
> Dear colleague,
>    I not sure this R code  is correctly ? 

Given the code you wrote is correct (didn't checked it, but looks OK in
the hurry):

> I would to show the number of Sample Size at  Sample Size Axis that 
> line draw from Power Axis (80%) from R code.
>    How I show this and select the most appropriate of
> this power (.79955687 - 80983575).

What does this (above) line mean?

I changed your code a little bit (loop and several lines are not
neccessary).
I put it into a function and added the lines to automatically draw the
lines it seems you want to be drawn (see below). Hope this helps...

> Thank for your help and answer.
> 
> Best Regards,
> Nikom Thanomsieng,
> Email: nikom at kku.ac.th
> 
> ....
> 
> #Power analysis: Sample size for Chi-Square 2x2, RxC: R software
> #Concept from SAS program to calculate power of ANOVA F-test
> #http://www2.tltc.ttu.edu/Westfall/images/5347/power_analysis_of_anova_f_test.htm
> 
> # and Cohen,J (1977). Statistical Power Analysis for Behavioral
> Sciences.
> #New York: Academic Press.
> #Asst. Prof. Nikom Thanomsieng. 29/09/2000
> #Department of Biostatistics & Demography. Faculty of Public Health.
> #Khon Kaen University. Thailand.
> #Email: nikom at kku.ac.th
> 
> #Modify data value of the first two line
> x1 <- c(6,9)
> x2 <- c(6,6)
> nc <-cbind(x1)
> nr  <-rbind(x2)
> data1 <- rbind(x1,x2)
> chi2<- chisq.test(data1,correct=F)$statistic
> Ntotal<-sum(data1)
> df<- ncol(nc-1)*nrow(nr-1)
> ifelse(df==1,w<- sqrt(chi2/Ntotal), w<-sqrt(chi2/(chi2+Ntotal)))
> Ntotal1<-900  #change this if power not enough
> alpha  <-0.05  #change this for One tailed =0.05
> ncp<-0
> chicrit<-NULL
> power<-NULL
> n<-NULL
> samplesize<-NULL
> for  (i in 1:Ntotal1){
>        ncp[i] <- w^2 * i
>        chicrit<-qchisq(1-alpha,df)
> power[i] <- 1-(pchisq(chicrit , df, ncp[i]))
> n[i]<-i
> samplesize<-cbind(n, ncp,power) }
> samplesize
> plot(n,power,type="l",col="red", lwd=1,
> panel.first = grid(10,10),
> main="Power as a function of Sample Size",
> xlab="Sample Size",
> ylab="Power" )
> segments(785, .8, 785,   0, col ="pink")
> segments(785, .8,    0, 0.8, col ="pink")
> mtext("Chi-Square", side = 3, line = 0.35,
>     outer = FALSE, at = mean(par("usr")[1:2]), cex = 1, font = 4)


power.analysis <- function(x1, x2, my.power = 0.8, 
    Ntotal1 = 900, alpha = 0.05){
  nc <- cbind(x1)
  nr <- rbind(x2)
  data1 <- rbind(x1, x2)
  chi2 <- chisq.test(data1, correct=FALSE)$statistic
  Ntotal <- sum(data1)
  df <- ncol(nc-1) * nrow(nr-1)
  w <- ifelse(df == 1, sqrt(chi2 / Ntotal), sqrt(chi2 / (chi2+Ntotal)))
  chicrit <- qchisq(1-alpha, df)
  n <- 1:Ntotal1
  ncp <- w^2 * n
  power <- 1 - (pchisq(chicrit , df, ncp))
  plot(n, power, type = "l", col = "red", lwd = 1, panel.first =
grid(10,10), 
    main = "Power as a function of Sample Size", xlab = "Sample Size", 
    ylab = "Power")
  min.samp <- which(power >= my.power)[1]
  segments(min.samp, my.power, min.samp,   0, col = "pink")
  segments(min.samp, my.power,   0, my.power, col = "pink")
  mtext("Chi-Square", side = 3, line = 0.35,
    outer = FALSE, at = mean(par("usr")[1:2]), cex = 1, font = 4)
  samplesize <- cbind(n, ncp, power)
  return(samplesize)
}

power.analysis(c(9, 6), c(6, 6))


Uwe Ligges
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list