library(tidyverse)
# Base tidy incorporada ao próprio relatório
dados <- tribble(
~amostra, ~traco, ~uf, ~agl, ~cbr, ~exp, ~controle,
1, "solo_natural", 0, 0, 17.16, 0.06, TRUE,
1, "uf15_agl3", 15, 3, 85.85, 0.09, FALSE,
1, "uf15_agl5", 15, 5, 108.73, 0.01, FALSE,
1, "uf30_agl3", 30, 3, 88.00, 0.05, FALSE,
1, "uf30_agl5", 30, 5, 105.00, 0.00, FALSE,
2, "solo_natural", 0, 0, 34.04, 0.10, TRUE,
2, "uf15_agl3", 15, 3, 69.29, 0.05, FALSE,
2, "uf15_agl5", 15, 5, 81.45, 0.01, FALSE,
2, "uf30_agl3", 30, 3, 75.00, 0.02, FALSE,
2, "uf30_agl5", 30, 5, 88.00, 0.00, FALSE,
3, "solo_natural", 0, 0, 42.05, 0.09, TRUE,
3, "uf15_agl3", 15, 3, 45.87, 0.03, FALSE,
3, "uf15_agl5", 15, 5, 56.71, 0.01, FALSE,
3, "uf30_agl3", 30, 3, 78.42, 0.01, FALSE,
3, "uf30_agl5", 30, 5, 95.18, 0.00, FALSE,
4, "solo_natural", 0, 0, 22.46, 0.17, TRUE,
4, "uf15_agl3", 15, 3, 75.75, 0.04, FALSE,
4, "uf15_agl5", 15, 5, 97.10, 0.01, FALSE,
4, "uf30_agl3", 30, 3, 78.35, 0.03, FALSE,
4, "uf30_agl5", 30, 5, 99.12, 0.01, FALSE,
5, "solo_natural", 0, 0, 24.90, 0.13, TRUE,
5, "uf15_agl3", 15, 3, 94.99, 0.04, FALSE,
5, "uf15_agl5", 15, 5, 109.15, 0.01, FALSE,
5, "uf30_agl3", 30, 3, 91.45, 0.03, FALSE,
5, "uf30_agl5", 30, 5, 106.88, 0.01, FALSE,
6, "solo_natural", 0, 0, 30.65, 0.14, TRUE,
6, "uf15_agl3", 15, 3, 73.31, 0.12, FALSE,
6, "uf15_agl5", 15, 5, 75.55, 0.04, FALSE,
6, "uf30_agl3", 30, 3, 82.40, 0.05, FALSE,
6, "uf30_agl5", 30, 5, 74.15, 0.03, FALSE,
7, "solo_natural", 0, 0, 21.80, 0.52, TRUE,
7, "uf15_agl3", 15, 3, 72.79, 0.00, FALSE,
7, "uf15_agl5", 15, 5, 89.81, 0.00, FALSE,
7, "uf30_agl3", 30, 3, 75.45, 0.00, FALSE,
7, "uf30_agl5", 30, 5, 92.12, 0.00, FALSE,
8, "solo_natural", 0, 0, 12.36, 0.08, TRUE,
8, "uf15_agl3", 15, 3, 76.21, 0.21, FALSE,
8, "uf15_agl5", 15, 5, 79.35, 0.08, FALSE,
8, "uf30_agl3", 30, 3, 82.33, 0.10, FALSE,
8, "uf30_agl5", 30, 5, 88.65, 0.05, FALSE,
9, "solo_natural", 0, 0, 17.57, 0.09, TRUE,
9, "uf15_agl3", 15, 3, 73.95, 0.00, FALSE,
9, "uf15_agl5", 15, 5, 92.68, 0.00, FALSE,
9, "uf30_agl3", 30, 3, 69.40, 0.02, FALSE,
9, "uf30_agl5", 30, 5, 85.15, 0.01, FALSE,
10, "solo_natural", 0, 0, 17.24, 0.09, TRUE,
10, "uf15_agl3", 15, 3, 57.05, 0.02, FALSE,
10, "uf15_agl5", 15, 5, 73.15, 0.01, FALSE,
10, "uf30_agl3", 30, 3, 68.30, 0.01, FALSE,
10, "uf30_agl5", 30, 5, 82.15, 0.00, FALSE,
11, "solo_natural", 0, 0, 15.98, 0.07, TRUE,
11, "uf15_agl3", 15, 3, 55.45, 0.00, FALSE,
11, "uf15_agl5", 15, 5, 68.75, 0.00, FALSE,
11, "uf30_agl3", 30, 3, 84.50, 0.00, FALSE,
11, "uf30_agl5", 30, 5, 91.20, 0.00, FALSE,
12, "solo_natural", 0, 0, 45.37, 0.09, TRUE,
12, "uf15_agl3", 15, 3, 52.48, 0.00, FALSE,
12, "uf15_agl5", 15, 5, 83.55, 0.00, FALSE,
12, "uf30_agl3", 30, 3, 115.60, 0.00, FALSE,
12, "uf30_agl5", 30, 5, 78.20, 0.00, FALSE,
13, "solo_natural", 0, 0, 26.31, 0.00, TRUE,
13, "uf15_agl3", 15, 3, 76.77, 0.05, FALSE,
13, "uf15_agl5", 15, 5, 92.15, 0.02, FALSE,
13, "uf30_agl3", 30, 3, 68.50, 0.04, FALSE,
13, "uf30_agl5", 30, 5, 83.20, 0.02, FALSE,
14, "solo_natural", 0, 0, 20.57, 0.17, TRUE,
14, "uf15_agl3", 15, 3, 83.13, 0.03, FALSE,
14, "uf15_agl5", 15, 5, 95.78, 0.01, FALSE,
14, "uf30_agl3", 30, 3, 81.50, 0.02, FALSE,
14, "uf30_agl5", 30, 5, 89.60, 0.00, FALSE,
15, "solo_natural", 0, 0, 11.82, 0.05, TRUE,
15, "uf15_agl3", 15, 3, 63.18, 0.09, FALSE,
15, "uf15_agl5", 15, 5, 76.95, 0.03, FALSE,
15, "uf30_agl3", 30, 3, 75.40, 0.05, FALSE,
15, "uf30_agl5", 30, 5, 88.90, 0.02, FALSE,
16, "solo_natural", 0, 0, 26.22, 0.16, TRUE,
16, "uf15_agl3", 15, 3, 76.27, 0.09, FALSE,
16, "uf15_agl5", 15, 5, 89.75, 0.03, FALSE,
16, "uf30_agl3", 30, 3, 79.15, 0.05, FALSE,
16, "uf30_agl5", 30, 5, 94.50, 0.01, FALSE,
17, "solo_natural", 0, 0, 21.91, 0.28, TRUE,
17, "uf15_agl3", 15, 3, 47.90, 0.05, FALSE,
17, "uf15_agl5", 15, 5, 60.15, 0.02, FALSE,
17, "uf30_agl3", 30, 3, 72.40, 0.02, FALSE,
17, "uf30_agl5", 30, 5, 86.15, 0.00, FALSE,
18, "solo_natural", 0, 0, 35.54, 0.62, TRUE,
18, "uf15_agl3", 15, 3, 107.12, 0.49, FALSE,
18, "uf15_agl5", 15, 5, 92.25, 0.20, FALSE,
18, "uf30_agl3", 30, 3, 145.80, 0.05, FALSE,
18, "uf30_agl5", 30, 5, 112.40, 0.02, FALSE,
19, "solo_natural", 0, 0, 29.73, 0.09, TRUE,
19, "uf15_agl3", 15, 3, 113.04, 0.01, FALSE,
19, "uf15_agl5", 15, 5, 93.18, 0.00, FALSE,
19, "uf30_agl3", 30, 3, 108.50, 0.00, FALSE,
19, "uf30_agl5", 30, 5, 85.40, 0.00, FALSE,
20, "solo_natural", 0, 0, 18.56, 0.26, TRUE,
20, "uf15_agl3", 15, 3, 80.78, 0.10, FALSE,
20, "uf15_agl5", 15, 5, 91.25, 0.04, FALSE,
20, "uf30_agl3", 30, 3, 76.40, 0.08, FALSE,
20, "uf30_agl5", 30, 5, 88.15, 0.05, FALSE,
21, "solo_natural", 0, 0, 29.32, 0.13, TRUE,
21, "uf15_agl3", 15, 3, 62.11, 0.85, FALSE,
21, "uf15_agl5", 15, 5, 52.25, 1.05, FALSE,
21, "uf30_agl3", 30, 3, 72.50, 0.08, FALSE,
21, "uf30_agl5", 30, 5, 84.30, 0.03, FALSE,
22, "solo_natural", 0, 0, 33.69, 0.27, TRUE,
22, "uf15_agl3", 15, 3, 75.05, 0.03, FALSE,
22, "uf15_agl5", 15, 5, 86.15, 0.01, FALSE,
22, "uf30_agl3", 30, 3, 78.40, 0.02, FALSE,
22, "uf30_agl5", 30, 5, 91.25, 0.00, FALSE,
23, "solo_natural", 0, 0, 23.47, 0.00, TRUE,
23, "uf15_agl3", 15, 3, 68.03, 0.05, FALSE,
23, "uf15_agl5", 15, 5, 81.55, 0.01, FALSE,
23, "uf30_agl3", 30, 3, 86.50, 0.01, FALSE,
23, "uf30_agl5", 30, 5, 98.10, 0.00, FALSE,
24, "solo_natural", 0, 0, 20.79, 0.33, TRUE,
24, "uf15_agl3", 15, 3, 67.42, 0.04, FALSE,
24, "uf15_agl5", 15, 5, 79.95, 0.01, FALSE,
24, "uf30_agl3", 30, 3, 81.20, 0.02, FALSE,
24, "uf30_agl5", 30, 5, 93.45, 0.00, FALSE,
25, "solo_natural", 0, 0, 13.44, 0.30, TRUE,
25, "uf15_agl3", 15, 3, 88.56, 0.00, FALSE,
25, "uf15_agl5", 15, 5, 98.75, 0.00, FALSE,
25, "uf30_agl3", 30, 3, 82.10, 0.00, FALSE,
25, "uf30_agl5", 30, 5, 91.40, 0.00, FALSE
)
# Fatorial (exclui controle)
dados_fatorial <- dados |>
filter(!controle) |>
mutate(
amostra = factor(amostra),
uf = factor(uf),
agl = factor(agl)
)Análise, Otimização e Classificação de Misturas para Pavimentação (AASHTO)
1 1. Introdução
A estabilização de solos com ultrafino (UF) e aglomerante (Agl) visa melhorar o desempenho mecânico (CBR) e a estabilidade volumétrica (expansão). Este estudo adota uma abordagem de DOE fatorial, seguida de RSM e classificação automática alinhada à AASHTO, com objetivo final de construir uma ferramenta operacional confiável.
2 2. Pergunta do Projeto
Como UF e Agl influenciam CBR e expansão, qual combinação otimiza desempenho e custo, e como converter isso em uma ferramenta automática de classificação conforme AASHTO?
3 3. Objetivos
- DOE (2²): efeitos e interação UF × Agl
- Diagnóstico de resíduos
- RSM: região ótima e overdesign
- Classificação AASHTO (baseada em CBR; expansão como restrição)
- Ranking custo/eficiência
4 4. Dados
5 5. EDA
summary(dados) amostra traco uf agl cbr
Min. : 1 Length:125 Min. : 0 Min. :0.0 Min. : 11.82
1st Qu.: 7 Class :character 1st Qu.:15 1st Qu.:3.0 1st Qu.: 57.05
Median :13 Mode :character Median :15 Median :3.0 Median : 78.40
Mean :13 Mean :18 Mean :3.2 Mean : 71.45
3rd Qu.:19 3rd Qu.:30 3rd Qu.:5.0 3rd Qu.: 89.60
Max. :25 Max. :30 Max. :5.0 Max. :145.80
exp controle
Min. :0.0000 Mode :logical
1st Qu.:0.0000 FALSE:100
Median :0.0300 TRUE :25
Mean :0.0752
3rd Qu.:0.0800
Max. :1.0500
dados_fatorial |>
group_by(uf, agl) |>
summarise(
n = n(),
cbr_media = mean(cbr),
cbr_dp = sd(cbr),
exp_media = mean(exp),
exp_dp = sd(exp),
.groups = "drop"
)# A tibble: 4 × 7
uf agl n cbr_media cbr_dp exp_media exp_dp
<fct> <fct> <int> <dbl> <dbl> <dbl> <dbl>
1 15 3 25 73.7 16.4 0.0992 0.186
2 15 5 25 84.2 14.5 0.0644 0.209
3 30 3 25 83.9 16.9 0.0304 0.0276
4 30 5 25 90.9 8.68 0.0104 0.0154
# Boxplot CBR
ggplot(dados_fatorial, aes(x = interaction(uf, agl), y = cbr)) +
geom_boxplot() +
labs(x = "Tratamento (UF, Agl)", y = "CBR")# Boxplot Expansão
ggplot(dados_fatorial, aes(x = interaction(uf, agl), y = exp)) +
geom_boxplot() +
labs(x = "Tratamento (UF, Agl)", y = "Expansão")# Relação CBR x Exp
ggplot(dados_fatorial, aes(x = cbr, y = exp, color = interaction(uf, agl))) +
geom_point(size = 2) +
geom_smooth(method = "lm", se = FALSE, color = "grey40") +
labs(color = "Tratamento")5.0.1 Interpretação da EDA
Os valores médios por tratamento mostram um padrão muito favorável à estabilização:
uf15_agl3: CBR médio = 73,69; expansão média = 0,099.uf15_agl5: CBR médio = 84,24; expansão média = 0,064.uf30_agl3: CBR médio = 83,90; expansão média = 0,030.uf30_agl5: CBR médio = 90,90; expansão média = 0,010.Controle: CBR médio = 24,52; expansão média = 0,172.
A leitura técnica inicial é clara: todos os tratamentos melhoram fortemente o CBR em relação ao solo natural e todos reduzem a expansão média. uf30_agl5 emerge como a alternativa mais robusta em desempenho médio, enquanto uf30_agl3aparece como candidato muito forte em custo/eficiência.
Nesta etapa, a leitura inicial deve responder três pontos:
Quais tratamentos elevam mais o CBR em relação ao controle.
Quais tratamentos mantêm a expansão em níveis baixos.
Se há indício visual de compromisso entre desempenho mecânico e estabilidade.
A interpretação técnica será feita sempre de forma comparativa. Se um tratamento elevar muito o CBR sem penalizar expansão, ele se torna candidato forte para base potencial. Se o ganho de CBR vier acompanhado de aumento relevante de expansão ou custo, surge a hipótese de solução menos eficiente ou até de overdesign.
6 6. DOE e ANOVA
6.1 6.1 CBR
mod_cbr <- lm(cbr ~ amostra + uf * agl, data = dados_fatorial)
anova(mod_cbr)Analysis of Variance Table
Response: cbr
Df Sum Sq Mean Sq F value Pr(>F)
amostra 24 11742.9 489.29 4.1545 1.437e-06 ***
uf 1 1778.4 1778.39 15.1001 0.0002244 ***
agl 1 1925.4 1925.37 16.3481 0.0001307 ***
uf:agl 1 78.7 78.66 0.6679 0.4164855
Residuals 72 8479.7 117.77
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_cbr)
Call:
lm(formula = cbr ~ amostra + uf * agl, data = dados_fatorial)
Residuals:
Min 1Q Median 3Q Max
-23.200 -6.138 0.191 5.253 32.426
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 87.403 5.743 15.220 < 2e-16 ***
amostra2 -18.460 7.674 -2.406 0.018716 *
amostra3 -27.850 7.674 -3.629 0.000528 ***
amostra4 -9.315 7.674 -1.214 0.228762
amostra5 3.723 7.674 0.485 0.629082
amostra6 -20.542 7.674 -2.677 0.009194 **
amostra7 -14.352 7.674 -1.870 0.065502 .
amostra8 -15.260 7.674 -1.989 0.050547 .
amostra9 -16.600 7.674 -2.163 0.033845 *
amostra10 -26.732 7.674 -3.484 0.000846 ***
amostra11 -21.920 7.674 -2.856 0.005595 **
amostra12 -14.437 7.674 -1.881 0.063959 .
amostra13 -16.740 7.674 -2.181 0.032415 *
amostra14 -9.392 7.674 -1.224 0.224951
amostra15 -20.787 7.674 -2.709 0.008430 **
amostra16 -11.977 7.674 -1.561 0.122947
amostra17 -30.245 7.674 -3.941 0.000186 ***
amostra18 17.498 7.674 2.280 0.025561 *
amostra19 3.135 7.674 0.409 0.684093
amostra20 -12.750 7.674 -1.662 0.100960
amostra21 -29.105 7.674 -3.793 0.000307 ***
amostra22 -14.182 7.674 -1.848 0.068683 .
amostra23 -13.350 7.674 -1.740 0.086186 .
amostra24 -16.390 7.674 -2.136 0.036093 *
amostra25 -6.692 7.674 -0.872 0.386038
uf30 10.208 3.070 3.326 0.001391 **
agl5 10.550 3.070 3.437 0.000981 ***
uf30:agl5 -3.548 4.341 -0.817 0.416486
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 10.85 on 72 degrees of freedom
Multiple R-squared: 0.6468, Adjusted R-squared: 0.5143
F-statistic: 4.882 on 27 and 72 DF, p-value: 3.852e-08
6.1.1 Interpretação do modelo de CBR
No modelo em blocos por amostra, os resultados numéricos indicam:
UF significativo para CBR, com
F ≈ 15,10.Agl significativo para CBR, com
F ≈ 16,35.Interação UF × Agl fraca, com
F ≈ 0,67.
Em termos práticos, aumentar ultrafino e aumentar aglomerante elevam o CBR de forma consistente, mas o ganho conjunto é aproximadamente aditivo. Em média, elevar Agl de 3% para 5% aumenta o CBR em cerca de 8,78 pontos, e elevar UF de 15% para 30% aumenta o CBR em cerca de 8,43 pontos.
Isso é muito positivo para uma futura ferramenta operacional, porque facilita a construção de regras confiáveis e menos sensíveis a combinações muito específicas.
A ANOVA para CBR deverá ser lida em três níveis:
efeito de UF: indica se aumentar ultrafino altera o suporte médio;
efeito de Agl: indica se aumentar aglomerante de 3% para 5% produz ganho consistente;
interação UF × Agl: indica se o efeito do aglomerante depende do nível de UF.
Na prática de engenharia, a interação costuma ser a informação mais valiosa, porque mostra se um aumento de aglomerante só vale a pena em certas composições. Se o efeito de 5% sobre 3% for pequeno ou inconsistente, isso é sinal de possível ganho marginal decrescente.
6.2 6.2 Expansão
mod_exp <- lm(exp ~ amostra + uf * agl, data = dados_fatorial)
anova(mod_exp)Analysis of Variance Table
Response: exp
Df Sum Sq Mean Sq F value Pr(>F)
amostra 24 1.01450 0.042271 3.4240 2.857e-05 ***
uf 1 0.09425 0.094249 7.6342 0.007265 **
agl 1 0.01877 0.018769 1.5203 0.221586
uf:agl 1 0.00137 0.001369 0.1109 0.740102
Residuals 72 0.88889 0.012346
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(mod_exp)
Call:
lm(formula = exp ~ amostra + uf * agl, data = dados_fatorial)
Residuals:
Min 1Q Median 3Q Max
-0.4318 -0.0258 0.0038 0.0257 0.5342
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.08560 0.05879 1.456 0.1498
amostra2 -0.01750 0.07857 -0.223 0.8244
amostra3 -0.02500 0.07857 -0.318 0.7513
amostra4 -0.01500 0.07857 -0.191 0.8491
amostra5 -0.01500 0.07857 -0.191 0.8491
amostra6 0.02250 0.07857 0.286 0.7754
amostra7 -0.03750 0.07857 -0.477 0.6346
amostra8 0.07250 0.07857 0.923 0.3592
amostra9 -0.03000 0.07857 -0.382 0.7037
amostra10 -0.02750 0.07857 -0.350 0.7273
amostra11 -0.03750 0.07857 -0.477 0.6346
amostra12 -0.03750 0.07857 -0.477 0.6346
amostra13 -0.00500 0.07857 -0.064 0.9494
amostra14 -0.02250 0.07857 -0.286 0.7754
amostra15 0.01000 0.07857 0.127 0.8991
amostra16 0.00750 0.07857 0.095 0.9242
amostra17 -0.01500 0.07857 -0.191 0.8491
amostra18 0.15250 0.07857 1.941 0.0562 .
amostra19 -0.03500 0.07857 -0.445 0.6573
amostra20 0.03000 0.07857 0.382 0.7037
amostra21 0.46500 0.07857 5.918 1.01e-07 ***
amostra22 -0.02250 0.07857 -0.286 0.7754
amostra23 -0.02000 0.07857 -0.255 0.7998
amostra24 -0.02000 0.07857 -0.255 0.7998
amostra25 -0.03750 0.07857 -0.477 0.6346
uf30 -0.06880 0.03143 -2.189 0.0318 *
agl5 -0.03480 0.03143 -1.107 0.2718
uf30:agl5 0.01480 0.04444 0.333 0.7401
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.1111 on 72 degrees of freedom
Multiple R-squared: 0.5595, Adjusted R-squared: 0.3943
F-statistic: 3.387 on 27 and 72 DF, p-value: 1.966e-05
6.2.1 Interpretação do modelo de expansão
No modelo em blocos por amostra, os resultados indicam:
UF significativo para expansão, com
F ≈ 7,63.Agl com efeito fraco/modesto na expansão, com
F ≈ 1,52.Interação UF × Agl desprezível, com
F ≈ 0,11.
A leitura técnica é que elevar UF reduz expansão de forma mais clara do que simplesmente elevar o teor de aglomerante. Em média, passar de UF = 15% para UF = 30% reduz a expansão média de 0,0818 para 0,0204; já passar de Agl = 3% para Agl = 5% reduz de 0,0648 para 0,0374.
Portanto, para controle volumétrico, o ultrafino parece ser o fator mais decisivo neste conjunto.
A expansão entra como resposta crítica de segurança e estabilidade. A leitura deve observar se algum tratamento reduz a expansão de forma sistemática e se existe combinação problemática. Um tratamento que aumente CBR mas também aumente a expansão pode não ser a escolha ótima, especialmente em uma ferramenta voltada à recomendação operacional.
6.3 6.3 Interação
interaction.plot(dados_fatorial$uf, dados_fatorial$agl, dados_fatorial$cbr)interaction.plot(dados_fatorial$uf, dados_fatorial$agl, dados_fatorial$exp)6.3.1 Interpretação dos gráficos de interação
A leitura esperada é de interação fraca, especialmente para CBR. O ganho de aumentar Agl de 3% para 5% foi positivo nos dois níveis de UF, mas com magnitude um pouco maior quando UF = 15% do que quando UF = 30%.
Em termos médios:
com
UF = 15%, elevar Agl de 3% para 5% aumenta o CBR em cerca de 10,55 pontos;com
UF = 30%, esse ganho cai para cerca de 7,00 pontos.
Isso sugere leve ganho marginal decrescente do aglomerante quando o ultrafino já está em nível elevado. Para expansão, o padrão também aponta redução com aumento de UF e, em menor grau, com aumento de Agl, sem interação estrutural forte.
Linhas aproximadamente paralelas sugerem pouca interação.
Linhas divergentes ou cruzadas sugerem interação relevante.
Se a distância entre 3% e 5% variar muito entre UF = 15 e UF = 30, isso reforça a hipótese de comportamento não aditivo.
Essa leitura é central para a etapa seguinte de RSM e para a discussão de eficiência de mistura.
7 7. Diagnóstico dos Resíduos
par(mfrow = c(2, 2))
plot(mod_cbr)par(mfrow = c(2, 2))
plot(mod_exp)shapiro.test(residuals(mod_cbr))
Shapiro-Wilk normality test
data: residuals(mod_cbr)
W = 0.95943, p-value = 0.003662
shapiro.test(residuals(mod_exp))
Shapiro-Wilk normality test
data: residuals(mod_exp)
W = 0.58753, p-value = 2.511e-15
7.0.1 Interpretação do diagnóstico
A expectativa, à luz dos dados, é distinta entre as duas respostas:
para CBR, o comportamento tende a ser mais regular, embora existam valores altos em algumas amostras, como
145,80e115,60, que podem influenciar alavancagem;para expansão, a assimetria tende a ser mais forte, principalmente por causa de observações como
0,85e1,05, o que pode comprometer a normalidade dos resíduos.
Assim, a leitura recomendada é:
CBR: o modelo linear em blocos parece bem plausível como primeira aproximação;
expansão: convém tratar os resultados com mais cautela e considerar, em etapa posterior, transformação ou análise robusta, caso os gráficos de resíduos confirmem forte assimetria.
O diagnóstico não será tratado como decisão mecânica baseada apenas em p-valor. A interpretação correta combina gráficos e testes.
Resíduos vs ajustados: avalia padrão e heterocedasticidade.
QQ-plot: avalia aderência aproximada à normalidade.
Scale-location: reforça a leitura de homogeneidade de variâncias.
Resíduos vs leverage: ajuda a detectar observações influentes.
Se os resíduos apresentarem comportamento aceitável, a ANOVA fica bem sustentada. Se surgirem desvios moderados, a análise continua válida com cautela interpretativa. Se surgirem desvios fortes, será necessário aplicar transformação, método robusto ou análise de sensibilidade.
8 8. Interpretação AASHTO
Classificação baseada em CBR:
CBR < 10 → material fraco
10–30 → subleito/sub-base inferior
30–80 → sub-base
80 → base potencial
Expansão será usada como restrição.
8.0.1 Interpretação normativa
Com base nas médias observadas:
uf15_agl3fica na faixa de sub-base alta / transição para base potencial;uf15_agl5já entra em base potencial por CBR médio;uf30_agl3também entra em base potencial por CBR médio;uf30_agl5é a alternativa mais robusta, com CBR médio mais alto e expansão média mais baixa.
Além das médias, a robustez operacional também importa. Pelo comportamento observado, uf30_agl5 apresenta o perfil mais consistente para classificação como base potencial, enquanto uf30_agl3 surge como alternativa fortíssima para sub-base superior ou base potencial de melhor custo/eficiência.
Nesta fase do projeto, a classificação AASHTO será operacionalizada principalmente a partir do CBR, usando a expansão como filtro complementar de segurança. Em uma etapa posterior, a ferramenta poderá incorporar parâmetros adicionais, como granulometria, limite de liquidez e índice de plasticidade, para aproximar a classificação de um enquadramento AASHTO ainda mais completo.
9 9. RSM (inicial)
dados_cont <- dados_fatorial |>
mutate(
uf = as.numeric(as.character(uf)),
agl = as.numeric(as.character(agl))
)
mod_rsm_cbr <- lm(cbr ~ uf + agl + uf:agl, data = dados_cont)
mod_rsm_exp <- lm(exp ~ uf + agl + uf:agl, data = dados_cont)
summary(mod_rsm_cbr)
Call:
lm(formula = cbr ~ uf + agl + uf:agl, data = dados_cont)
Residuals:
Min 1Q Median 3Q Max
-31.994 -7.553 -1.537 7.026 61.898
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 42.3402 18.9238 2.237 0.0276 *
uf 1.0353 0.7979 1.298 0.1976
agl 7.0486 4.5897 1.536 0.1279
uf:agl -0.1183 0.1935 -0.611 0.5426
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 14.51 on 96 degrees of freedom
Multiple R-squared: 0.1576, Adjusted R-squared: 0.1312
F-statistic: 5.985 on 3 and 96 DF, p-value: 0.0008768
summary(mod_rsm_exp)
Call:
lm(formula = exp ~ uf + agl + uf:agl, data = dados_cont)
Residuals:
Min 1Q Median 3Q Max
-0.0992 -0.0544 -0.0104 -0.0004 0.9856
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.2424000 0.1835917 1.320 0.190
uf -0.0060667 0.0077409 -0.784 0.435
agl -0.0248000 0.0445275 -0.557 0.579
uf:agl 0.0004933 0.0018774 0.263 0.793
Residual standard error: 0.1408 on 96 degrees of freedom
Multiple R-squared: 0.05669, Adjusted R-squared: 0.02721
F-statistic: 1.923 on 3 and 96 DF, p-value: 0.131
9.1 9.1 Superfícies preditas iniciais
grade_pred <- tidyr::crossing(
uf = seq(15, 30, by = 1),
agl = seq(3, 5, by = 0.1)
) |>
mutate(
cbr_pred = predict(mod_rsm_cbr, newdata = cur_data()),
exp_pred = predict(mod_rsm_exp, newdata = cur_data())
)
ggplot(grade_pred, aes(x = uf, y = agl, fill = cbr_pred)) +
geom_tile() +
geom_contour(aes(z = cbr_pred), color = "white", alpha = 0.5) +
labs(x = "UF (%)", y = "Aglomerante (%)", fill = "CBR predito")ggplot(grade_pred, aes(x = uf, y = agl, fill = exp_pred)) +
geom_tile() +
geom_contour(aes(z = exp_pred), color = "white", alpha = 0.5) +
labs(x = "UF (%)", y = "Aglomerante (%)", fill = "Expansão predita")9.1.1 Interpretação da modelagem contínua
Os resultados do DOE sugerem uma superfície inicial simples:
aumentar UF desloca a resposta de forma consistente para maior CBR e menor expansão;
aumentar Agl também melhora o CBR, mas com sinais de ganho marginal decrescente quando UF já está alto;
a interação é fraca, o que sugere uma superfície relativamente suave e favorável à modelagem contínua inicial.
A implicação prática é importante: o caminho para otimização não parece depender de efeitos altamente instáveis entre os fatores. Ao mesmo tempo, o conjunto atual ainda é pequeno para um RSM quadrático pleno; será muito útil adicionar pontos centrais e níveis intermediários para capturar curvatura real.
9.2 9.2 Otimização multicritério inicial
# Funções de desejabilidade iniciais
desej_cbr <- function(x, alvo = 80, maximo = max(dados_cont$cbr)) {
pmax(0, pmin(1, (x - alvo) / (maximo - alvo)))
}
desej_exp <- function(x, limite = 0.10) {
pmax(0, pmin(1, 1 - (x / limite)))
}
desej_custo <- function(uf, agl, custo_uf = 1, custo_agl = 4) {
custo_rel <- custo_uf * uf + custo_agl * agl
1 / custo_rel
}
grade_opt <- grade_pred |>
mutate(
d_cbr = desej_cbr(cbr_pred),
d_exp = desej_exp(exp_pred),
d_custo = desej_custo(uf, agl),
d_global = (d_cbr * d_exp * d_custo)^(1 / 3)
) |>
arrange(desc(d_global))
grade_opt |> slice_head(n = 10)# A tibble: 10 × 8
uf agl cbr_pred exp_pred d_cbr d_exp d_custo d_global
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 30 5 90.9 0.0104 0.166 0.896 0.02 0.144
2 30 4.9 90.6 0.0114 0.160 0.886 0.0202 0.142
3 29 5 90.5 0.0140 0.159 0.860 0.0204 0.141
4 30 4.8 90.2 0.0124 0.155 0.876 0.0203 0.140
5 29 4.9 90.1 0.0150 0.153 0.850 0.0206 0.139
6 30 4.7 89.9 0.0134 0.150 0.866 0.0205 0.139
7 28 5 90.0 0.0176 0.152 0.824 0.0208 0.138
8 29 4.8 89.7 0.0161 0.148 0.839 0.0207 0.137
9 30 4.6 89.5 0.0144 0.144 0.856 0.0207 0.137
10 28 4.9 89.6 0.0187 0.147 0.813 0.0210 0.136
9.2.1 Interpretação da otimização inicial
A desejabilidade global é uma ponte entre análise estatística e ferramenta operacional. Ela permite combinar três ideias ao mesmo tempo:
desempenho mecânico;
segurança volumétrica;
custo relativo.
Neste ponto do projeto, os pesos de custo ainda são ilustrativos. Isso significa que a ordenação final ainda não deve ser tomada como decisão definitiva. Mesmo assim, a tendência esperada é que soluções próximas de UF = 30% dominem a parte técnica, enquanto a escolha entre Agl = 3% e 5% dependa principalmente do custo real do aglomerante e do nível de segurança exigido.
10 10. Overdesign
Avaliar ganho marginal de 5% vs 3% de aglomerante.
10.0.1 Interpretação de overdesign
Neste conjunto, o aumento de 3% para 5% de aglomerante melhora o desempenho médio, portanto não há evidência de que 5% seja simplesmente desperdício em todas as situações. No entanto, há sinais de ganho marginal decrescente, especialmente quando UF = 30%.
Em resumo:
uf30_agl5é a melhor solução média em desempenho;uf30_agl3pode ser a melhor solução de custo/eficiência se o custo adicional do aglomerante for relevante;uf15_agl5melhora bem o suporte, mas não superauf30_agl3em estabilidade média.
Ou seja, não há um overdesign absoluto, mas há uma forte hipótese de que parte do ganho obtido com 5% de aglomerante possa não compensar economicamente em alguns cenários.
Overdesign será caracterizado quando o incremento de aglomerante elevar o custo sem produzir ganho proporcional em CBR ou sem contribuir para reduzir expansão. Em termos operacionais, isso significa que a melhor solução não precisa ser a de maior resistência absoluta, mas sim a de melhor compromisso entre desempenho, segurança e custo.
11 11. Classificação Automática
classificar_cbr <- function(cbr) {
case_when(
cbr < 10 ~ "Fraco",
cbr < 30 ~ "Subleito",
cbr < 80 ~ "Sub-base",
TRUE ~ "Base"
)
}
classificar_exp <- function(exp, limite = 0.10) {
if_else(exp <= limite, "Aceitável", "Crítica")
}
dados_class <- dados_fatorial |>
mutate(
classe_cbr = classificar_cbr(cbr),
classe_exp = classificar_exp(exp),
classe_final = case_when(
classe_cbr == "Base" & classe_exp == "Aceitável" ~ "Base potencial",
classe_cbr == "Sub-base" & classe_exp == "Aceitável" ~ "Sub-base potencial",
classe_exp == "Crítica" ~ "Requer atenção",
TRUE ~ "Uso restrito"
)
)
dados_class |>
count(classe_final, sort = TRUE)# A tibble: 3 × 2
classe_final n
<chr> <int>
1 Base potencial 56
2 Sub-base potencial 38
3 Requer atenção 6
11.0.1 Interpretação da classificação
A leitura inicial indica:
uf30_agl5como classe dominante de base potencial;uf30_agl3como classe muito competitiva, especialmente para solução otimizada por custo;uf15_agl5como alternativa intermediária forte;uf15_agl3como solução claramente superior ao controle, mas menos robusta que as demais para uso operacional em nível de base.
A evolução natural será incorporar expansão como restrição formal e, depois, custos e outros parâmetros geotécnicos. Com isso, a classificação deixará de ser apenas descritiva e passará a ser recomendatória.
11.1 11.1 Estrutura da regra da futura ferramenta
recomendar_traco <- function(cbr, exp, uf, agl, custo_uf, custo_agl,
alvo_cbr = 80, limite_exp = 0.10) {
custo_total <- uf * custo_uf + agl * custo_agl
classe_cbr <- case_when(
cbr < 10 ~ "Fraco",
cbr < 30 ~ "Subleito",
cbr < 80 ~ "Sub-base",
TRUE ~ "Base"
)
status_exp <- if_else(exp <= limite_exp, "Aceitável", "Crítica")
score <- (cbr / alvo_cbr) - (exp / limite_exp) - 0.01 * custo_total
recomendacao <- case_when(
classe_cbr == "Base" & status_exp == "Aceitável" & score >= 0.8 ~ "Recomendado",
classe_cbr %in% c("Base", "Sub-base") & status_exp == "Aceitável" ~ "Potencial",
TRUE ~ "Não recomendado"
)
tibble(
classe_cbr = classe_cbr,
status_exp = status_exp,
custo_total = custo_total,
score = score,
recomendacao = recomendacao
)
}11.1.1 Interpretação da arquitetura da regra
A regra acima não é o produto final, mas já define a espinha dorsal da futura ferramenta. A decisão deixa de depender apenas de uma variável e passa a integrar:
classe mecânica;
restrição de expansão;
custo total;
score de recomendação.
Essa arquitetura é importante porque é transparente, auditável e facilmente calibrável. Quando os custos reais forem informados e surgirem novos parâmetros geotécnicos, a regra pode ser refinada sem perder interpretabilidade.
12 12. Ranking Custo/Eficiência (placeholder)
dados_score <- dados_fatorial |>
mutate(score = cbr - 10 * exp)
arrange(dados_score, desc(score)) |> head()# A tibble: 6 × 8
amostra traco uf agl cbr exp controle score
<fct> <chr> <fct> <fct> <dbl> <dbl> <lgl> <dbl>
1 18 uf30_agl3 30 3 146. 0.05 FALSE 145.
2 12 uf30_agl3 30 3 116. 0 FALSE 116.
3 19 uf15_agl3 15 3 113. 0.01 FALSE 113.
4 18 uf30_agl5 30 5 112. 0.02 FALSE 112.
5 5 uf15_agl5 15 5 109. 0.01 FALSE 109.
6 1 uf15_agl5 15 5 109. 0.01 FALSE 109.
12.0.1 Interpretação do score inicial
Mesmo com um score simples, a tendência observada é coerente com o DOE:
uf30_agl5tende a permanecer entre as melhores soluções;uf30_agl3tende a aparecer muito bem posicionado quando se penaliza expansão e se pensa em eficiência;uf15_agl5pode ser competitivo, mas com maior sensibilidade em alguns casos;uf15_agl3parece funcionar mais como solução de entrada, não como solução ótima global.
Na versão operacional, esse score deverá ser substituído por uma função mais realista, incorporando custo unitário de UF, custo unitário de Agl, penalização formal por expansão e bonificação por atendimento às faixas de classificação do projeto.
Este score é apenas um ponto de partida e serve para mostrar a lógica da futura ferramenta. O raciocínio é simples: premiar desempenho mecânico e penalizar instabilidade.
Em versão operacional, esse score deverá ser substituído por uma função mais realista, incorporando:
custo unitário de UF;
custo unitário de Agl;
penalização formal por expansão;
bonificação por atendimento a faixas de classificação;
eventualmente critérios diferenciados conforme o objetivo do projeto, como base, sub-base ou material de reforço.
13 13. Próximos Passos
Validar se os limites operacionais de expansão adotados na ferramenta devem ser mais conservadores ou mais permissivos.
Incorporar custos reais de UF e Agl.
Refinar a ANOVA com testes complementares de premissas, se desejado.
Evoluir do RSM inicial para RSM quadrático com novos pontos experimentais.
Adicionar parâmetros AASHTO complementares quando disponíveis.
Transformar a função de recomendação em módulo reutilizável para Shiny.
14 14. O que será necessário para evoluir para a ferramenta operacional
Com base no que as análises já mostram, os itens mais importantes a providenciar nas próximas fases são:
Custos reais dos insumos
custo unitário do UF;
custo unitário do aglomerante;
custo logístico, se relevante.
Critérios técnicos de projeto
classe de tráfego ou objetivo da camada;
limite operacional de expansão a ser adotado na ferramenta;
eventual fator de segurança para recomendação conservadora.
Parâmetros geotécnicos complementares
granulometria;
LL, LP e IP;
eventualmente equivalente de areia ou outros indicadores.
Expansão do experimento para RSM completo
pontos centrais;
níveis intermediários de UF e Agl;
eventualmente novas amostras de validação.
Base de validação externa
- resultados independentes para verificar se a regra automatizada mantém bom desempenho fora do conjunto atual.