On 2010-03-08 14:45, Marco Bressan wrote:
Hi,
my name is Marco Bressan i'm working to improve ADati package. I study 
psicology ad Padua University (Italy). I have this problem: why bartlett.test 
function running good and my anova.welch function no?

Ciao,
il mio nome � Marco Bressan e sto lavorando per migliorare il pacchetto ADati. 
Studio psicologia all'universit� di Padova. Non capisco come mai la funzione 
che ho fatto mi dia quell'errore

this is anova.welch:

anova.welch<- function(x, ...) UseMethod("anova.welch")

anova.welch.default<-                                                        ## 
this is the algoritm, I think it's ok (I copy this from Welch() inside ADati)
function (x, y = NULL, nu = c(0,0) ,...)
{
     mx<- tapply(x,y,mean)
     s2x<- tapply(x,y,var)
     k<- length(nu)
     w<- nu/s2x
     Xp<- sum(w * mx)/sum(w)
     Fnum<- sum(w * (mx - Xp)^2)/(k - 1)
     Fden<- 0
     for (h in 1:k) {
         a<- 1/(nu[h] - 1)
         b<- (1 - (w[h]/sum(w)))^2
         Fden<- Fden + (a * b)
     }
     gl2.den<- Fden * 3
     Fden<- Fden * ((2 * (k - 2))/(k^2 - 1)) + 1
     Fw<- Fnum/Fden
     STATISTIC<- Fw
     gl1<- k - 1
     gl2.num<- k^2 - 1
     gl2<- gl2.num/gl2.den
     PARAMETER<- c(gl1, gl2)
     PVAL<- pf(Fw, gl1, gl2, lower.tail = FALSE)
     METHOD<- "Welch ANOVA"
     DNAME<- NA
     names(STATISTIC)<- "F"
     names(PARAMETER)<- c("num df", "denom df")
     RVAL<- list(statistic = STATISTIC, parameter = PARAMETER,
         p.value = PVAL, method = METHOD)
     class(RVAL)<- "htest"
     return(RVAL)
}

anova.welch.formula<-                                                           
 ## I copy this from bartlett.test
function(formula, data, subset, na.action, ...)
{
     if(missing(formula) || (length(formula) != 3L))
         stop("'formula' mancante o incorretta")
     m<- match.call(expand.dots = FALSE)
     if(is.matrix(eval(m$data, parent.frame())))
         m$data<- as.data.frame(data)
     m[[1L]]<- as.name("model.frame")
     mf<- eval(m, parent.frame())
     DNAME<- paste(names(mf), collapse = " by ")
     names(mf)<- NULL
     y<- do.call("anova.welch", as.list(mf))
     y$data.name<- DNAME
     y
}

bartlett.test doesn't have a 'nu' argument. Try this:

anova.welch.formula <-
function(formula, data, subset, na.action, nu = c(0,0), ...)
{
    if(missing(formula) || (length(formula) != 3L))
        stop("'formula' mancante o incorretta")
    m <- match.call(expand.dots = FALSE)
    m[["nu"]] <- NULL  ## needed so that eval(m,....) will work
    if(is.matrix(eval(m$data, parent.frame())))
        m$data <- as.data.frame(data)
    m[[1L]] <- as.name("model.frame")
    mf <- eval(m, parent.frame())
    DNAME <- paste(names(mf), collapse = " by ")
    names(mf) <- NULL
    y <- do.call("anova.welch", c(as.list(mf), list(nu)))
             ## include 'nu' in the parameters passed to
             ##    anova.welch.default
    y$data.name <- DNAME
    y
}

(You might also find the code for lm() instructive.)

I assume that you're aware of the oneway.test() function in
package:stats. So why re-invent the wheel?

 -Peter Ehlers


n1=10                                                                           
       ## this is the test
n2=15
n3=20
y=c(rnorm((n1+n2),5,2),rnorm(n3,7,8))
A=factor(c(rep(1,n1),rep(2,n2),rep(3,n3)))
anova.welch(y,A,c(n1,n2,n3))

         Welch ANOVA

data:
F = 2.3025, num df = 2.000, denom df = 27.384, p-value = 0.1191

anova.welch(y~A,nu=c(n1,n2,n3))
Errore in model.frame.default(formula = y ~ A, ... = list(nu = c(n1, n2,  :
   invalid type (pairlist) for variable '(...)'


Sorry for my english, tanks you if you can help me :)
        [[alternative HTML version deleted]]




______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

--
Peter Ehlers
University of Calgary

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to