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
}

> 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]]

