#Codigo da funcao "edm" com intervalos de confianca e graficos edm <- function (x, y, data=data, IC=FALSE, estima=FALSE, N=10) { #chama os vetores contendo as variaveis de interesse "x" e "y" e produz um "data frame". edm.call <- Call <- match.call() x <- as.character(edm.call[[2L]]) y <- as.character(edm.call[[3L]]) dados <- data.frame(data[x], data[y]) #numero de reamostragens em caso de estimativa de erros (default=10). N <- N #testa se a variavel independente pertence a classe fator, e faz a transformacao #em caso negativo if (!is.factor(dados[, 1])) { dados[, 1] <- as.factor(dados[, 1]) } #estima o numero de amostras e de replicas. n <- length(unique(dados[, 1])) k <- length(dados[, 1])/n #realiza uma anova com as variaveis de interesse, das quais sao retiradas os valores #de desvios quadrados medios, utilizados no calculo de erro e repetibilidade. funcao <- formula(dados[, 2] ~ dados[, 1]) varis <- anova(aov(funcao, data = dados)) num.df <- n-1 denom.df <- n*(k-1) MSa <- varis [1, 3] Sw <- MSw <- varis [2, 3] Sa <- (MSa - MSw)/k #calcula o valor de repetibilidade. r <- Sa/(Sw + Sa) #calcula o valor de EM. EM <- Sw/(Sw + Sa) #argumento que chama a estimativa de multiplas repetibilidades. if (estima == TRUE) { result3 <- data.frame(rep(2:k, each=N), rep(NA, ((k-1)*N)), rep(NA, ((k-1)*N))) #produz N estimativas de repetibilidade para subamostras das 2:k replicas das #medicoes. for(l in 2:k){ result2 <- data.frame(rep(NA, N), rep(NA, N)) #refaz a estimativa de repetibilidade N vezes. for(j in 1:N){ result <- data.frame(rep(1:n, each=l) , rep(NA, n*l)) #loop que calcula a repetibilidade for(i in 1:n){ result[, 2][which(result[, 1]==i)] = sample((dados[which(dados[, 1]==i), ][, 2]) , size=l) result[, 1] <- as.factor(result[, 1]) } funcao <- anova(aov(result[, 2] ~ result[, 1], data=dados)) n <- length(unique(result[, 1])) rep <- length(result[, 1])/n MSa <- funcao [1, 3] Sw <- MSw <- funcao [2, 3] Sa <- (MSa - MSw)/k r <- Sa/(Sw + Sa) result2[, 1][j] = r result2[, 2][j] = l } result3[, 2][which(result3[, 1]==l)] = result2[, 1][1:N] result3[, 3][which(result3[, 1]==l)] = result2[, 2][1:N] } #abre uma janela e plota grafico de caixa com as estimativas de repetibilidade. x11() boxplot(result3[, 2] ~ result3[, 1]) mtext("Repetibilidade", side=2, cex=1.5, line=2.5, las=0) mtext("Número de réplicas", side=1, cex=1.5, line=2.5) } #argumento que ativa o calculo de intervalos de confianca if (IC == TRUE) { #calculo dos intervalos de confianca segundo Bonett(2002). F.stat <- varis [1, 4] low.F <- qf(0.05/2, num.df, denom.df, lower.tail = FALSE) up.F <- qf(0.05/2, denom.df, num.df, lower.tail = FALSE) FL <- F.stat/low.F FU <- F.stat * up.F ICLow <- (FL - 1)/(FL + k - 1) ICUp <- (FU - 1)/(FU + k - 1) ICdif <- ICUp-ICLow #retorna a lista com valores calculados pela funcao return(list(edm = EM, repetibilidade = r, ICsup = ICUp, ICinf = ICLow, ICdif = ICdif, individuos = n, replicas = k)) } #retorna resultados simplificados, sem calculo de ICs. else return(list(edm = EM, repetibilidade = r, individuos = n, replicas = k)) }