[R-br] Otimizar código - executar em lote

Marcelo Laia marcelolaia em gmail.com
Sáb Abr 23 20:19:24 -03 2022


Olá

Saberia me ajudar com uma otimização (execução em lote) do código
abaixo?

A análise é a seguinte (exemplo):

1 - pego os dados da coluna 25 e obtenho o lambda (boxcox);
2 - crio uma nova coluna com os dados corrigidos
3 - aplico um lm
4 - checo as pressuposições
5 - calculo e jogo em um objeto o boxplot (função ggboxplot)
6 - ploto o boxplot
7 - armazeno no hd o boxplot com o nome da coluna lida no passo 1 acima
8 - vou para a coluna seguinte, 26

Estou fazendo isso com o código abaixo. Só que eu tenho 120 colunas.

Por ser muito igual, já fiz confusão umas quatro ou cinco vezes com os
valores, com os nomes dos arquivos ou com os nomes das colunas.

Há como otimizar isso ou é melhor ir na "unha" mesmo?

Obrigado!

#### LINALOL ####

colnames(dados01)[25] # retorna o nome da coluna
boxcox(LINALOL ~ Genotipo * Tratamento, data=dados01, plotit = TRUE)
boxcox(LINALOL ~ Genotipo * Tratamento, data=dados01, plotit = TRUE,
       lam = seq(-1, 1, 1/10))
boxcox(LINALOL ~ Genotipo * Tratamento, data=dados01, plotit = TRUE,
       lam = seq(-0.7, -0.65, 1/1000))
## vou ajustando até achar o lambda mais próximo
## o valor aproximado de lambda é -0.655

dados01$LINALOL.boxcox <- (dados01$LINALOL^(-0.655) - 1)/(-0.655)

fit25 <- lm(LINALOL.boxcox ~ Genotipo * Tratamento, data=dados01)
summary(fit25)
anova(fit25)

ggqqplot(residuals(fit25)) # Os pontos devem estar ao longo da linha
                           # de referência. Senão, não é normal

shapiro_test(residuals(fit25)) # se p-value for significativo, 
                               # não é normal

### teste de homocedacidade das variâncias
### se p < 0.05 (significativo), as variâncias não são homogêneas

dados01 %>%
    levene_test(LINALOL.boxcox ~ Genotipo * Tratamento)

bxp <- ggboxplot(
  dados01, x = "Genotipo", y = "LINALOL.boxcox",
  color = "Tratamento", palette = "Set1", ylab = "LINALOL - boxcox",
  )
bxp

pdf(file="LINALOL_boxcox.pdf")
bxp
dev.off()

Obrigado

-- 
Marcelo


Mais detalhes sobre a lista de discussão R-br