Otimizar código - executar em lote

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

Olá Marcelo, O genotipo seria o que varia entre os modelos? Você tem um código minimamente reproduzivel para que a gente possa ajudar? Sem os dados o que eu entendo... Inicialmente, você pode rodar isso dentro de um for (com alguns ifs você define se os resíduos são normais, faz o plot, e etc). E obviamente, pode guardar os resultados dentro uma lista ou um df, como preferir. Abraços, Deisy On Sat, Apr 23, 2022, 7:19 PM Marcelo Laia por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
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 _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
Deisy Gysi
-
Marcelo Laia