rm(list=ls(all=T))
Análise Fatorial
Análise Fatorial
Este trabalho tem como objetivo fazer a utilização do método de análise fatorial a um banco de câncer de mama, que possui 30 variáveis para diminuir a dimensão e conseguir agrupar em alguns fatores possíveis variáveis correlacionadas, diminuindo a dimensão sem contudo perder boa parte da explicação da variabilidade dos dados. Estará sendo realizado o trabalho de parte por partes.
Carregando o banco de dados
setwd("C:/Users/Pessoal/Desktop/ESTATÍSTICA/UFPB/8º PERÍODO/ANÁLISE MULTIVARIADA II/AULAS/ANÁLISE FATORIAL")
<- read.csv2("breast_cancer.csv", sep = "," ,header = F, col.names = c("raio médio", "textura média", "perímetro médio", "área média", "suavidade média", "compacidade média", "concavidade média", "pontos côncavos médios", "simetria média", "dimensão fractal média", "erro de raio", "erro de textura", "erro de perímetro", "erro de área", "erro de suavidade", "erro de compacidade", "erro de concavidade", "erro de pontos côncavos", "erro de simetria", "erro de dimensão fractal", "pior raio", "pior textura", "pior perímetro", "pior área", "pior suavidade", "pior compacidade", "pior concavidade", "piores pontos côncavos", "pior simetria", "pior dimensão fractal"), stringsAsFactors = F) dados
str(dados)
'data.frame': 570 obs. of 30 variables:
$ raio.médio : num NA 18 20.6 19.7 11.4 ...
$ textura.média : num NA 10.4 17.8 21.2 20.4 ...
$ perímetro.médio : num NA 122.8 132.9 130 77.6 ...
$ área.média : num NA 1001 1326 1203 386 ...
$ suavidade.média : num NA 0.1184 0.0847 0.1096 0.1425 ...
$ compacidade.média : num NA 0.2776 0.0786 0.1599 0.2839 ...
$ concavidade.média : num NA 0.3001 0.0869 0.1974 0.2414 ...
$ pontos.côncavos.médios : num NA 0.1471 0.0702 0.1279 0.1052 ...
$ simetria.média : num NA 0.242 0.181 0.207 0.26 ...
$ dimensão.fractal.média : num NA 0.0787 0.0567 0.06 0.0974 ...
$ erro.de.raio : num NA 1.095 0.543 0.746 0.496 ...
$ erro.de.textura : num NA 0.905 0.734 0.787 1.156 ...
$ erro.de.perímetro : num NA 8.59 3.4 4.58 3.44 ...
$ erro.de.área : num NA 153.4 74.1 94 27.2 ...
$ erro.de.suavidade : num NA 0.0064 0.00522 0.00615 0.00911 ...
$ erro.de.compacidade : num NA 0.049 0.0131 0.0401 0.0746 ...
$ erro.de.concavidade : num NA 0.0537 0.0186 0.0383 0.0566 ...
$ erro.de.pontos.côncavos : num NA 0.0159 0.0134 0.0206 0.0187 ...
$ erro.de.simetria : num NA 0.03 0.0139 0.0225 0.0596 ...
$ erro.de.dimensão.fractal: num NA 0.00619 0.00353 0.00457 0.00921 ...
$ pior.raio : num NA 25.4 25 23.6 14.9 ...
$ pior.textura : num NA 17.3 23.4 25.5 26.5 ...
$ pior.perímetro : num NA 184.6 158.8 152.5 98.9 ...
$ pior.área : num NA 2019 1956 1709 568 ...
$ pior.suavidade : num NA 0.162 0.124 0.144 0.21 ...
$ pior.compacidade : num NA 0.666 0.187 0.424 0.866 ...
$ pior.concavidade : num NA 0.712 0.242 0.45 0.687 ...
$ piores.pontos.côncavos : num NA 0.265 0.186 0.243 0.258 ...
$ pior.simetria : num NA 0.46 0.275 0.361 0.664 ...
$ pior.dimensão.fractal : num NA 0.1189 0.089 0.0876 0.173 ...
Visualizando os dados
head(dados)
raio.médio textura.média perímetro.médio área.média suavidade.média
1 NA NA NA NA NA
2 17.99 10.38 122.80 1001.0 0.11840
3 20.57 17.77 132.90 1326.0 0.08474
4 19.69 21.25 130.00 1203.0 0.10960
5 11.42 20.38 77.58 386.1 0.14250
6 20.29 14.34 135.10 1297.0 0.10030
compacidade.média concavidade.média pontos.côncavos.médios simetria.média
1 NA NA NA NA
2 0.27760 0.3001 0.14710 0.2419
3 0.07864 0.0869 0.07017 0.1812
4 0.15990 0.1974 0.12790 0.2069
5 0.28390 0.2414 0.10520 0.2597
6 0.13280 0.1980 0.10430 0.1809
dimensão.fractal.média erro.de.raio erro.de.textura erro.de.perímetro
1 NA NA NA NA
2 0.07871 1.0950 0.9053 8.589
3 0.05667 0.5435 0.7339 3.398
4 0.05999 0.7456 0.7869 4.585
5 0.09744 0.4956 1.1560 3.445
6 0.05883 0.7572 0.7813 5.438
erro.de.área erro.de.suavidade erro.de.compacidade erro.de.concavidade
1 NA NA NA NA
2 153.40 0.006399 0.04904 0.05373
3 74.08 0.005225 0.01308 0.01860
4 94.03 0.006150 0.04006 0.03832
5 27.23 0.009110 0.07458 0.05661
6 94.44 0.011490 0.02461 0.05688
erro.de.pontos.côncavos erro.de.simetria erro.de.dimensão.fractal pior.raio
1 NA NA NA NA
2 0.01587 0.03003 0.006193 25.38
3 0.01340 0.01389 0.003532 24.99
4 0.02058 0.02250 0.004571 23.57
5 0.01867 0.05963 0.009208 14.91
6 0.01885 0.01756 0.005115 22.54
pior.textura pior.perímetro pior.área pior.suavidade pior.compacidade
1 NA NA NA NA NA
2 17.33 184.60 2019.0 0.1622 0.6656
3 23.41 158.80 1956.0 0.1238 0.1866
4 25.53 152.50 1709.0 0.1444 0.4245
5 26.50 98.87 567.7 0.2098 0.8663
6 16.67 152.20 1575.0 0.1374 0.2050
pior.concavidade piores.pontos.côncavos pior.simetria pior.dimensão.fractal
1 NA NA NA NA
2 0.7119 0.2654 0.4601 0.11890
3 0.2416 0.1860 0.2750 0.08902
4 0.4504 0.2430 0.3613 0.08758
5 0.6869 0.2575 0.6638 0.17300
6 0.4000 0.1625 0.2364 0.07678
tail(dados)
raio.médio textura.média perímetro.médio área.média suavidade.média
565 20.92 25.09 143.00 1347.0 0.10990
566 21.56 22.39 142.00 1479.0 0.11100
567 20.13 28.25 131.20 1261.0 0.09780
568 16.60 28.08 108.30 858.1 0.08455
569 20.60 29.33 140.10 1265.0 0.11780
570 7.76 24.54 47.92 181.0 0.05263
compacidade.média concavidade.média pontos.côncavos.médios simetria.média
565 0.22360 0.31740 0.14740 0.2149
566 0.11590 0.24390 0.13890 0.1726
567 0.10340 0.14400 0.09791 0.1752
568 0.10230 0.09251 0.05302 0.1590
569 0.27700 0.35140 0.15200 0.2397
570 0.04362 0.00000 0.00000 0.1587
dimensão.fractal.média erro.de.raio erro.de.textura erro.de.perímetro
565 0.06879 0.9622 1.026 8.758
566 0.05623 1.1760 1.256 7.673
567 0.05533 0.7655 2.463 5.203
568 0.05648 0.4564 1.075 3.425
569 0.07016 0.7260 1.595 5.772
570 0.05884 0.3857 1.428 2.548
erro.de.área erro.de.suavidade erro.de.compacidade erro.de.concavidade
565 118.80 0.006399 0.04310 0.07845
566 158.70 0.010300 0.02891 0.05198
567 99.04 0.005769 0.02423 0.03950
568 48.55 0.005903 0.03731 0.04730
569 86.22 0.006522 0.06158 0.07117
570 19.15 0.007189 0.00466 0.00000
erro.de.pontos.côncavos erro.de.simetria erro.de.dimensão.fractal pior.raio
565 0.02624 0.02057 0.006213 24.290
566 0.02454 0.01114 0.004239 25.450
567 0.01678 0.01898 0.002498 23.690
568 0.01557 0.01318 0.003892 18.980
569 0.01664 0.02324 0.006185 25.740
570 0.00000 0.02676 0.002783 9.456
pior.textura pior.perímetro pior.área pior.suavidade pior.compacidade
565 29.41 179.10 1819.0 0.14070 0.41860
566 26.40 166.10 2027.0 0.14100 0.21130
567 38.25 155.00 1731.0 0.11660 0.19220
568 34.12 126.70 1124.0 0.11390 0.30940
569 39.42 184.60 1821.0 0.16500 0.86810
570 30.37 59.16 268.6 0.08996 0.06444
pior.concavidade piores.pontos.côncavos pior.simetria pior.dimensão.fractal
565 0.6599 0.2542 0.2929 0.09873
566 0.4107 0.2216 0.2060 0.07115
567 0.3215 0.1628 0.2572 0.06637
568 0.3403 0.1418 0.2218 0.07820
569 0.9387 0.2650 0.4087 0.12400
570 0.0000 0.0000 0.2871 0.07039
Algumas Estatísticas Descritivas
::skim(dados) skimr
Name | dados |
Number of rows | 570 |
Number of columns | 30 |
_______________________ | |
Column type frequency: | |
numeric | 30 |
________________________ | |
Group variables | None |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
raio.médio | 1 | 1 | 14.13 | 3.52 | 6.98 | 11.70 | 13.37 | 15.78 | 28.11 | ▂▇▃▁▁ |
textura.média | 1 | 1 | 19.29 | 4.30 | 9.71 | 16.17 | 18.84 | 21.80 | 39.28 | ▃▇▃▁▁ |
perímetro.médio | 1 | 1 | 91.97 | 24.30 | 43.79 | 75.17 | 86.24 | 104.10 | 188.50 | ▃▇▃▁▁ |
área.média | 1 | 1 | 654.89 | 351.91 | 143.50 | 420.30 | 551.10 | 782.70 | 2501.00 | ▇▃▂▁▁ |
suavidade.média | 1 | 1 | 0.10 | 0.01 | 0.05 | 0.09 | 0.10 | 0.11 | 0.16 | ▁▇▇▁▁ |
compacidade.média | 1 | 1 | 0.10 | 0.05 | 0.02 | 0.06 | 0.09 | 0.13 | 0.35 | ▇▇▂▁▁ |
concavidade.média | 1 | 1 | 0.09 | 0.08 | 0.00 | 0.03 | 0.06 | 0.13 | 0.43 | ▇▃▂▁▁ |
pontos.côncavos.médios | 1 | 1 | 0.05 | 0.04 | 0.00 | 0.02 | 0.03 | 0.07 | 0.20 | ▇▃▂▁▁ |
simetria.média | 1 | 1 | 0.18 | 0.03 | 0.11 | 0.16 | 0.18 | 0.20 | 0.30 | ▁▇▅▁▁ |
dimensão.fractal.média | 1 | 1 | 0.06 | 0.01 | 0.05 | 0.06 | 0.06 | 0.07 | 0.10 | ▆▇▂▁▁ |
erro.de.raio | 1 | 1 | 0.41 | 0.28 | 0.11 | 0.23 | 0.32 | 0.48 | 2.87 | ▇▁▁▁▁ |
erro.de.textura | 1 | 1 | 1.22 | 0.55 | 0.36 | 0.83 | 1.11 | 1.47 | 4.88 | ▇▅▁▁▁ |
erro.de.perímetro | 1 | 1 | 2.87 | 2.02 | 0.76 | 1.61 | 2.29 | 3.36 | 21.98 | ▇▁▁▁▁ |
erro.de.área | 1 | 1 | 40.34 | 45.49 | 6.80 | 17.85 | 24.53 | 45.19 | 542.20 | ▇▁▁▁▁ |
erro.de.suavidade | 1 | 1 | 0.01 | 0.00 | 0.00 | 0.01 | 0.01 | 0.01 | 0.03 | ▇▃▁▁▁ |
erro.de.compacidade | 1 | 1 | 0.03 | 0.02 | 0.00 | 0.01 | 0.02 | 0.03 | 0.14 | ▇▃▁▁▁ |
erro.de.concavidade | 1 | 1 | 0.03 | 0.03 | 0.00 | 0.02 | 0.03 | 0.04 | 0.40 | ▇▁▁▁▁ |
erro.de.pontos.côncavos | 1 | 1 | 0.01 | 0.01 | 0.00 | 0.01 | 0.01 | 0.01 | 0.05 | ▇▇▁▁▁ |
erro.de.simetria | 1 | 1 | 0.02 | 0.01 | 0.01 | 0.02 | 0.02 | 0.02 | 0.08 | ▇▃▁▁▁ |
erro.de.dimensão.fractal | 1 | 1 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.03 | ▇▁▁▁▁ |
pior.raio | 1 | 1 | 16.27 | 4.83 | 7.93 | 13.01 | 14.97 | 18.79 | 36.04 | ▆▇▃▁▁ |
pior.textura | 1 | 1 | 25.68 | 6.15 | 12.02 | 21.08 | 25.41 | 29.72 | 49.54 | ▃▇▆▁▁ |
pior.perímetro | 1 | 1 | 107.26 | 33.60 | 50.41 | 84.11 | 97.66 | 125.40 | 251.20 | ▇▇▃▁▁ |
pior.área | 1 | 1 | 880.58 | 569.36 | 185.20 | 515.30 | 686.50 | 1084.00 | 4254.00 | ▇▂▁▁▁ |
pior.suavidade | 1 | 1 | 0.13 | 0.02 | 0.07 | 0.12 | 0.13 | 0.15 | 0.22 | ▂▇▇▂▁ |
pior.compacidade | 1 | 1 | 0.25 | 0.16 | 0.03 | 0.15 | 0.21 | 0.34 | 1.06 | ▇▅▁▁▁ |
pior.concavidade | 1 | 1 | 0.27 | 0.21 | 0.00 | 0.11 | 0.23 | 0.38 | 1.25 | ▇▅▂▁▁ |
piores.pontos.côncavos | 1 | 1 | 0.11 | 0.07 | 0.00 | 0.06 | 0.10 | 0.16 | 0.29 | ▅▇▅▃▁ |
pior.simetria | 1 | 1 | 0.29 | 0.06 | 0.16 | 0.25 | 0.28 | 0.32 | 0.66 | ▅▇▁▁▁ |
pior.dimensão.fractal | 1 | 1 | 0.08 | 0.02 | 0.06 | 0.07 | 0.08 | 0.09 | 0.21 | ▇▃▁▁▁ |
Removendo as linhas com os valores ausentes, em nosso estudo só temos uma.
<- dados[complete.cases(dados),] dados
Verificando a matriz de correlações amostrais
<- cor(dados)
rho_hat ::corrplot(rho_hat, method = "number") corrplot
Podemos ver a formação de possíveis grupos, que estaram interligados através dos fatores. E possíveís variáveis que não serão utilizadas.
Verificando a possibilidade de se usar Análise Fatorial nesse conjunto de dados
Consideraremos a medida de Kaiser, Meyer & Olkin de adequaçao da amostra para analise fatorial. Um limiar comumente adotado para esta medida é igual a 60%.
<- cor(dados)
rho_estimado ::KMO(rho_estimado) psych
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = rho_estimado)
Overall MSA = 0.83
MSA for each item =
raio.médio textura.média perímetro.médio
0.83 0.64 0.85
área.média suavidade.média compacidade.média
0.86 0.81 0.88
concavidade.média pontos.côncavos.médios simetria.média
0.89 0.90 0.83
dimensão.fractal.média erro.de.raio erro.de.textura
0.83 0.83 0.48
erro.de.perímetro erro.de.área erro.de.suavidade
0.84 0.85 0.64
erro.de.compacidade erro.de.concavidade erro.de.pontos.côncavos
0.87 0.83 0.84
erro.de.simetria erro.de.dimensão.fractal pior.raio
0.58 0.81 0.82
pior.textura pior.perímetro pior.área
0.60 0.88 0.82
pior.suavidade pior.compacidade pior.concavidade
0.75 0.85 0.90
piores.pontos.côncavos pior.simetria pior.dimensão.fractal
0.89 0.69 0.81
Como, podemos observar que o resultado do geral foi igual a 0.83, podemos neste caso utilizar a análise fatorial para resumir o conjunto de variáveis.
Consideraremos também o teste de esfericidade de Bartlett sobre a matriz de correlações amostrais, que testa a hipótese nula de que a matriz de correlações é igual a uma matriz identidade. Valores pequenos do p-valor indicam que uma análise fatorial pode ser útil aos dados.
::cortest.bartlett(rho_estimado, n = nrow(dados)) psych
$chisq
[1] 39362.12
$p.value
[1] 0
$df
[1] 435
Como o p-valor foi igual a zero a utilização da análise fatorial neste caso pode ser útil.
Investigando o número de fatores
<- eigen(rho_estimado)
eigv <- data.frame(nfact = 1:ncol(dados), eigval = eigv$values)
eigv ::ggplot(data = eigv, mapping = ggplot2::aes(nfact, eigval)) +
ggplot2::geom_line() +
ggplot2::geom_point() +
ggplot2::geom_abline(slope = 0, intercept = 1, color = "red") +
ggplot2::labs(x = "Número de fatores",
ggplot2y = "Autovalor",
title = "Scree plot") +
::theme_bw() ggplot2
Neste caso podemos ver que um número de 6 fatores parece ser bem adequado para ser utilizado.
Obtendo o modelo fatorial ortogonal
Inicialmente, vamos obter o modelo fatorial ortogonal sem considerar rotação de fatores. Observe que o p-valor do teste de hipótese sobre o número de fatores não corrobora com a informação de que 6 fatores são suficientes para explicar a estrutura de covariância do conjunto de dados, embora tenhamos que aproximadamente 82,4% da variação total é explicada por 6 fatores. Contudo, não é possível obter uma interpretação satisfatória dos fatores e devemos investigar se uma rotação ortogonal pode fornecer uma estrutura fatorial mais clara.
<- factanal(dados, 6, rotation = "none", lower = 0.01)
mfo1 mfo1
Call:
factanal(x = dados, factors = 6, rotation = "none", lower = 0.01)
Uniquenesses:
raio.médio textura.média perímetro.médio
0.010 0.119 0.010
área.média suavidade.média compacidade.média
0.015 0.109 0.073
concavidade.média pontos.côncavos.médios simetria.média
0.074 0.050 0.562
dimensão.fractal.média erro.de.raio erro.de.textura
0.189 0.012 0.417
erro.de.perímetro erro.de.área erro.de.suavidade
0.038 0.065 0.551
erro.de.compacidade erro.de.concavidade erro.de.pontos.côncavos
0.140 0.277 0.326
erro.de.simetria erro.de.dimensão.fractal pior.raio
0.635 0.328 0.010
pior.textura pior.perímetro pior.área
0.010 0.010 0.027
pior.suavidade pior.compacidade pior.concavidade
0.177 0.099 0.119
piores.pontos.côncavos pior.simetria pior.dimensão.fractal
0.089 0.558 0.181
Loadings:
Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
raio.médio 0.970 -0.189
textura.média 0.402 -0.229 0.800 0.153
perímetro.médio 0.977 -0.141
área.média 0.974 -0.134 -0.106
suavidade.média 0.266 0.549 0.388 -0.415 0.442
compacidade.média 0.610 0.547 0.494
concavidade.média 0.765 0.436 0.351 0.152
pontos.côncavos.médios 0.881 0.268 0.278 0.158
simetria.média 0.245 0.520 0.278 -0.111 0.131
dimensão.fractal.média -0.176 0.766 0.426
erro.de.raio 0.786 0.425 -0.397 -0.172
erro.de.textura 0.357 -0.391 0.395 0.252 0.288
erro.de.perímetro 0.782 0.449 -0.350 -0.157
erro.de.área 0.820 0.295 -0.371 -0.183
erro.de.suavidade -0.142 0.545 -0.120 0.335
erro.de.compacidade 0.307 0.647 0.327 0.460 -0.146
erro.de.concavidade 0.279 0.564 0.269 0.488 -0.121
erro.de.pontos.côncavos 0.450 0.541 0.176 0.370
erro.de.simetria 0.518 -0.114 0.225 0.156
erro.de.dimensão.fractal 0.673 0.224 0.397
pior.raio 0.982 -0.126
pior.textura 0.388 -0.124 0.908
pior.perímetro 0.986
pior.área 0.971 -0.111
pior.suavidade 0.228 0.399 0.470 0.213 -0.549 0.212
pior.compacidade 0.513 0.388 0.601 0.268 -0.233
pior.concavidade 0.616 0.347 0.539 0.222 -0.188
piores.pontos.côncavos 0.807 0.205 0.444 0.113
pior.simetria 0.241 0.248 0.445 0.216 -0.250 -0.121
pior.dimensão.fractal 0.130 0.540 0.609 0.277 -0.107 -0.228
Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
SS loadings 11.654 5.294 3.431 2.075 1.528 0.747
Proportion Var 0.388 0.176 0.114 0.069 0.051 0.025
Cumulative Var 0.388 0.565 0.679 0.749 0.799 0.824
Test of the hypothesis that 6 factors are sufficient.
The chi square statistic is 10182.43 on 270 degrees of freedom.
The p-value is 0
::fa.diagram(mfo1$loadings, digits = 3) psych
Conforme a representação gráfica acima, podemos observar que o sexto fator não tem muita representatividade e os fatores não são de simples interpretação, neste caso ainda com seis fatores vamos rotacionar de acordo com o método varimax para ver se os fatores se tornam interpretáveis.
<- factanal(dados, 6, rotation = "varimax", lower = 0.01)
mfo2 mfo2
Call:
factanal(x = dados, factors = 6, rotation = "varimax", lower = 0.01)
Uniquenesses:
raio.médio textura.média perímetro.médio
0.010 0.119 0.010
área.média suavidade.média compacidade.média
0.015 0.109 0.073
concavidade.média pontos.côncavos.médios simetria.média
0.074 0.050 0.562
dimensão.fractal.média erro.de.raio erro.de.textura
0.189 0.012 0.417
erro.de.perímetro erro.de.área erro.de.suavidade
0.038 0.065 0.551
erro.de.compacidade erro.de.concavidade erro.de.pontos.côncavos
0.140 0.277 0.326
erro.de.simetria erro.de.dimensão.fractal pior.raio
0.635 0.328 0.010
pior.textura pior.perímetro pior.área
0.010 0.010 0.027
pior.suavidade pior.compacidade pior.concavidade
0.177 0.099 0.119
piores.pontos.côncavos pior.simetria pior.dimensão.fractal
0.089 0.558 0.181
Loadings:
Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
raio.médio 0.966 -0.146 -0.161
textura.média 0.251 0.900
perímetro.médio 0.964 0.106 -0.129 -0.160
área.média 0.978 -0.102
suavidade.média 0.191 0.814 0.393 -0.119 -0.142
compacidade.média 0.460 0.614 0.568
concavidade.média 0.641 0.429 0.553 0.101
pontos.côncavos.médios 0.801 0.429 0.307 -0.145
simetria.média 0.155 0.515 0.295 0.248
dimensão.fractal.média -0.307 0.608 0.496 0.294
erro.de.raio 0.808 0.161 0.419 0.359
erro.de.textura -0.116 0.136 0.543 0.501
erro.de.perímetro 0.791 0.238 0.405 0.332
erro.de.área 0.851 0.102 0.315 0.315
erro.de.suavidade -0.147 0.140 0.167 0.616
erro.de.compacidade 0.166 0.226 0.867 0.153
erro.de.concavidade 0.163 0.129 0.808 0.153
erro.de.pontos.côncavos 0.375 0.166 0.644 0.295
erro.de.simetria 0.337 0.495
erro.de.dimensão.fractal 0.170 0.750 0.274
pior.raio 0.957 0.147 -0.194 0.128
pior.textura 0.205 0.177 0.954
pior.perímetro 0.949 0.176 -0.187 0.130
pior.área 0.955 0.132 -0.150 0.119
pior.suavidade 0.895
pior.compacidade 0.317 0.629 0.560 -0.248 0.169
pior.concavidade 0.437 0.530 0.578 -0.214 0.172
piores.pontos.côncavos 0.680 0.538 0.332 -0.168 0.116
pior.simetria 0.107 0.589 0.194 -0.182
pior.dimensão.fractal 0.703 0.528 -0.135 0.118
Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
SS loadings 10.080 4.920 4.80 2.232 2.189 0.509
Proportion Var 0.336 0.164 0.16 0.074 0.073 0.017
Cumulative Var 0.336 0.500 0.66 0.734 0.807 0.824
Test of the hypothesis that 6 factors are sufficient.
The chi square statistic is 10182.43 on 270 degrees of freedom.
The p-value is 0
Tentando observar possíveis grupos nos fatores de acordo com a visualização gráfica
::fa.diagram(mfo2$loadings, digits = 3) psych
Conforme fica evidente no gráfico acima, a utilização de um sexto fator não traz muito ganho, sendo assim testaremos um modelo ortonogonal fatorial com cinco fatores e método de rotação varimax.
<- factanal(dados, factors = 5 ,rotation = "varimax", lower = 0.01)
mfo3 mfo3
Call:
factanal(x = dados, factors = 5, rotation = "varimax", lower = 0.01)
Uniquenesses:
raio.médio textura.média perímetro.médio
0.010 0.121 0.010
área.média suavidade.média compacidade.média
0.015 0.537 0.077
concavidade.média pontos.côncavos.médios simetria.média
0.074 0.079 0.599
dimensão.fractal.média erro.de.raio erro.de.textura
0.202 0.013 0.443
erro.de.perímetro erro.de.área erro.de.suavidade
0.038 0.065 0.635
erro.de.compacidade erro.de.concavidade erro.de.pontos.côncavos
0.259 0.389 0.352
erro.de.simetria erro.de.dimensão.fractal pior.raio
0.643 0.404 0.010
pior.textura pior.perímetro pior.área
0.010 0.010 0.026
pior.suavidade pior.compacidade pior.concavidade
0.467 0.124 0.145
piores.pontos.côncavos pior.simetria pior.dimensão.fractal
0.093 0.557 0.193
Loadings:
Factor1 Factor2 Factor3 Factor4 Factor5
raio.médio 0.972 0.171
textura.média 0.253 0.898
perímetro.médio 0.969 0.126 0.173
área.média 0.982
suavidade.média 0.166 0.584 0.280 -0.103
compacidade.média 0.465 0.745 0.365 0.134
concavidade.média 0.651 0.582 0.362 0.161
pontos.côncavos.médios 0.800 0.471 0.203 0.122
simetria.média 0.147 0.515 0.333
dimensão.fractal.média -0.309 0.666 0.497
erro.de.raio 0.800 0.406 -0.418
erro.de.textura -0.153 0.487 0.534
erro.de.perímetro 0.787 0.445 -0.363
erro.de.área 0.844 0.294 -0.362
erro.de.suavidade -0.152 0.570 -0.126
erro.de.compacidade 0.194 0.529 0.622 0.179
erro.de.concavidade 0.192 0.416 0.598 0.203
erro.de.pontos.côncavos 0.393 0.338 0.599 0.145
erro.de.simetria 0.589
erro.de.dimensão.fractal 0.404 0.653
pior.raio 0.955 0.201 -0.165 0.112
pior.textura 0.201 0.218 -0.111 0.943
pior.perímetro 0.949 0.250 -0.124 0.113
pior.área 0.951 0.179 -0.140 0.107
pior.suavidade 0.716 -0.113
pior.compacidade 0.326 0.850 0.101 0.128 0.143
pior.concavidade 0.450 0.758 0.145 0.136 0.194
piores.pontos.côncavos 0.681 0.644 0.141
pior.simetria 0.652
pior.dimensão.fractal 0.877 0.172
Factor1 Factor2 Factor3 Factor4 Factor5
SS loadings 10.119 6.561 3.785 2.140 0.810
Proportion Var 0.337 0.219 0.126 0.071 0.027
Cumulative Var 0.337 0.556 0.682 0.753 0.780
Test of the hypothesis that 5 factors are sufficient.
The chi square statistic is 11651.42 on 295 degrees of freedom.
The p-value is 0
Observe novamente que o p-valor do teste de hipótese sobre o número de fatores não corrobora com a informação de que 5 fatores são suficientes para explicar a estrutura de covariância do conjunto de dados. Temos que aproximadamente 78,0% da variação total é explicada por 5 fatores.
::fa.diagram(mfo3$loadings, digits = 3) psych
Para que não tenhamos percas mais severas, e um número bom de fatores, cerca de 20% da quantidade das variáveis, utilizaremos o modelo ortogonal fatorial com 6 fatores, no qual foi utilizado o método de rotação varimax com a finalidade de melhores interpretações para os fatores obtidos.
Comunalidades
O objetivo das comunalidades é resumir o percentual de explicação do modelo obtido para as variáveis descritas no banco.
<- rowSums(mfo2$loadings^2)
comunalidades comunalidades
raio.médio textura.média perímetro.médio
0.9943210 0.8806988 0.9946491
área.média suavidade.média compacidade.média
0.9845705 0.8905366 0.9272098
concavidade.média pontos.côncavos.médios simetria.média
0.9261193 0.9503734 0.4383931
dimensão.fractal.média erro.de.raio erro.de.textura
0.8108031 0.9875143 0.5828919
erro.de.perímetro erro.de.área erro.de.suavidade
0.9621720 0.9345068 0.4487247
erro.de.compacidade erro.de.concavidade erro.de.pontos.côncavos
0.8597695 0.7228020 0.6738134
erro.de.simetria erro.de.dimensão.fractal pior.raio
0.3643258 0.6725375 0.9921037
pior.textura pior.perímetro pior.área
0.9902164 0.9920916 0.9734008
pior.suavidade pior.compacidade pior.concavidade
0.8233128 0.9006581 0.8812001
piores.pontos.côncavos pior.simetria pior.dimensão.fractal
0.9106250 0.4415090 0.8188108
Segue abaixo uma tabela com o percentual da explicação da variabilidade das variáveis com o uso dos seis fatores:
Variável | Percentual (%) | Variável | Percentual (%) |
---|---|---|---|
raio.médio | 99.43 | erro.de.compacidade | 85.98 |
textura.média | 88.07 | erro.de.concavidade | 72.28 |
perímetro.médio | 99.46 | erro.de.pontos.côncavos | 67.38 |
área.média | 98.46 | erro.de.simetria | 36.43 |
suavidade.média | 89.05 | erro.de.dimensão.fractal | 67.25 |
compacidade.média | 92.72 | pior.raio | 99.21 |
concavidade.média | 92.61 | pior.textura | 99.02 |
pontos.côncavos.médios | 95.04 | pior.perímetro | 99.21 |
simetria.média | 43.84 | pior.área | 97.34 |
dimensão.fractal.média | 81.08 | pior.suavidade | 82.33 |
erro.de.raio | 98.75 | pior.compacidade | 90.07 |
erro.de.textura | 58.29 | pior.concavidade | 88.12 |
erro.de.perímetro | 96.22 | piores.pontos.côncavos | 91.06 |
erro.de.área | 93.45 | pior.simetria | 44.15 |
erro.de.suavidade | 44.87 | pior.dimensão.fractal | 81.88 |
Matriz Residual
<- mfo2$loadings%*%t(mfo2$loadings)+diag(mfo2$uniquenesses)
rho_til <- rho_hat - rho_til
U round(U, 4)
raio.médio textura.média perímetro.médio área.média
raio.médio -0.0043 0.0004 0.0050 0.0019
textura.média 0.0004 0.0000 0.0013 -0.0009
perímetro.médio 0.0050 0.0013 -0.0046 0.0019
área.média 0.0019 -0.0009 0.0019 0.0000
suavidade.média 0.0014 0.0012 0.0004 -0.0031
compacidade.média 0.0002 0.0140 0.0056 -0.0054
concavidade.média -0.0046 -0.0047 -0.0027 0.0040
pontos.côncavos.médios -0.0029 0.0002 -0.0015 -0.0020
simetria.média 0.0004 0.0039 0.0012 -0.0080
dimensão.fractal.média -0.0034 0.0124 -0.0013 0.0121
erro.de.raio 0.0009 0.0019 0.0001 -0.0021
erro.de.textura -0.0032 -0.0772 -0.0038 -0.0038
erro.de.perímetro -0.0002 -0.0009 0.0025 -0.0012
erro.de.área -0.0004 -0.0070 0.0007 0.0156
erro.de.suavidade -0.0055 0.0225 -0.0082 0.0147
erro.de.compacidade 0.0003 0.0014 -0.0002 -0.0009
erro.de.concavidade -0.0047 -0.0166 -0.0100 0.0016
erro.de.pontos.côncavos -0.0020 0.0030 -0.0066 -0.0214
erro.de.simetria 0.0002 0.0057 0.0005 -0.0013
erro.de.dimensão.fractal 0.0004 0.0019 -0.0036 0.0062
pior.raio 0.0005 -0.0004 -0.0005 -0.0031
pior.textura 0.0000 0.0013 0.0000 0.0002
pior.perímetro -0.0005 -0.0001 0.0003 -0.0032
pior.área -0.0047 -0.0003 -0.0049 0.0089
pior.suavidade 0.0001 -0.0152 -0.0023 0.0085
pior.compacidade 0.0047 0.0010 0.0063 0.0014
pior.concavidade -0.0004 -0.0105 -0.0013 0.0036
piores.pontos.côncavos -0.0002 -0.0099 -0.0015 -0.0071
pior.simetria 0.0037 -0.0239 0.0025 -0.0025
pior.dimensão.fractal 0.0051 0.0012 0.0039 0.0139
suavidade.média compacidade.média concavidade.média
raio.médio 0.0014 0.0002 -0.0046
textura.média 0.0012 0.0140 -0.0047
perímetro.médio 0.0004 0.0056 -0.0027
área.média -0.0031 -0.0054 0.0040
suavidade.média 0.0000 0.0048 -0.0101
compacidade.média 0.0048 0.0000 -0.0086
concavidade.média -0.0101 -0.0086 0.0000
pontos.côncavos.médios -0.0074 0.0041 0.0284
simetria.média -0.0039 0.0272 -0.0013
dimensão.fractal.média 0.0107 0.0365 -0.0101
erro.de.raio 0.0002 -0.0018 0.0002
erro.de.textura 0.0145 -0.0029 -0.0020
erro.de.perímetro -0.0044 0.0117 -0.0056
erro.de.área -0.0015 -0.0046 0.0097
erro.de.suavidade -0.0072 -0.0305 -0.0085
erro.de.compacidade 0.0128 0.0159 -0.0307
erro.de.concavidade 0.0173 -0.0591 0.0659
erro.de.pontos.côncavos 0.0164 -0.0284 -0.0147
erro.de.simetria -0.0069 0.0161 -0.0162
erro.de.dimensão.fractal 0.0178 -0.0189 -0.0229
pior.raio 0.0027 -0.0026 -0.0023
pior.textura -0.0003 -0.0008 0.0003
pior.perímetro 0.0007 0.0043 -0.0015
pior.área 0.0021 -0.0065 0.0062
pior.suavidade 0.0271 -0.0292 -0.0013
pior.compacidade -0.0056 0.0307 -0.0215
pior.concavidade -0.0062 -0.0302 0.0554
piores.pontos.côncavos -0.0128 -0.0142 0.0052
pior.simetria -0.0239 0.0040 -0.0087
pior.dimensão.fractal -0.0046 0.0020 -0.0240
pontos.côncavos.médios simetria.média
raio.médio -0.0029 0.0004
textura.média 0.0002 0.0039
perímetro.médio -0.0015 0.0012
área.média -0.0020 -0.0080
suavidade.média -0.0074 -0.0039
compacidade.média 0.0041 0.0272
concavidade.média 0.0284 -0.0013
pontos.côncavos.médios 0.0000 0.0094
simetria.média 0.0094 0.0001
dimensão.fractal.média -0.0059 -0.0070
erro.de.raio 0.0011 0.0041
erro.de.textura 0.0088 0.0305
erro.de.perímetro -0.0004 -0.0023
erro.de.área -0.0073 -0.0226
erro.de.suavidade -0.0136 -0.0642
erro.de.compacidade -0.0190 -0.0132
erro.de.concavidade -0.0113 -0.0246
erro.de.pontos.côncavos 0.0136 -0.0130
erro.de.simetria -0.0054 0.2279
erro.de.dimensão.fractal -0.0182 -0.0381
pior.raio 0.0003 0.0020
pior.textura -0.0002 -0.0007
pior.perímetro 0.0010 0.0027
pior.área 0.0009 -0.0056
pior.suavidade -0.0176 -0.0638
pior.compacidade -0.0141 -0.0015
pior.concavidade 0.0010 -0.0214
piores.pontos.côncavos 0.0269 -0.0063
pior.simetria -0.0051 0.3684
pior.dimensão.fractal -0.0195 -0.0350
dimensão.fractal.média erro.de.raio erro.de.textura
raio.médio -0.0034 0.0009 -0.0032
textura.média 0.0124 0.0019 -0.0772
perímetro.médio -0.0013 0.0001 -0.0038
área.média 0.0121 -0.0021 -0.0038
suavidade.média 0.0107 0.0002 0.0145
compacidade.média 0.0365 -0.0018 -0.0029
concavidade.média -0.0101 0.0002 -0.0020
pontos.côncavos.médios -0.0059 0.0011 0.0088
simetria.média -0.0070 0.0041 0.0305
dimensão.fractal.média 0.0000 -0.0051 0.0268
erro.de.raio -0.0051 0.0000 -0.0019
erro.de.textura 0.0268 -0.0019 0.0000
erro.de.perímetro -0.0023 0.0015 0.0001
erro.de.área -0.0005 0.0004 -0.0348
erro.de.suavidade 0.0065 -0.0029 0.0564
erro.de.compacidade 0.0026 -0.0026 0.0279
erro.de.concavidade -0.0227 0.0015 0.0011
erro.de.pontos.côncavos -0.0451 0.0015 0.0259
erro.de.simetria 0.0051 -0.0004 0.1118
erro.de.dimensão.fractal 0.1110 0.0021 0.0492
pior.raio 0.0012 0.0019 0.0066
pior.textura -0.0008 -0.0002 0.0064
pior.perímetro -0.0010 -0.0012 0.0060
pior.área 0.0192 -0.0028 0.0157
pior.suavidade -0.0165 -0.0002 -0.0361
pior.compacidade -0.0208 0.0003 -0.0245
pior.concavidade -0.0495 0.0018 -0.0271
piores.pontos.côncavos -0.0420 0.0017 -0.0242
pior.simetria -0.0319 0.0029 -0.0271
pior.dimensão.fractal 0.0948 0.0007 -0.0154
erro.de.perímetro erro.de.área erro.de.suavidade
raio.médio -0.0002 -0.0004 -0.0055
textura.média -0.0009 -0.0070 0.0225
perímetro.médio 0.0025 0.0007 -0.0082
área.média -0.0012 0.0156 0.0147
suavidade.média -0.0044 -0.0015 -0.0072
compacidade.média 0.0117 -0.0046 -0.0305
concavidade.média -0.0056 0.0097 -0.0085
pontos.côncavos.médios -0.0004 -0.0073 -0.0136
simetria.média -0.0023 -0.0226 -0.0642
dimensão.fractal.média -0.0023 -0.0005 0.0065
erro.de.raio 0.0015 0.0004 -0.0029
erro.de.textura 0.0001 -0.0348 0.0564
erro.de.perímetro 0.0000 0.0052 -0.0234
erro.de.área 0.0052 0.0000 -0.0084
erro.de.suavidade -0.0234 -0.0084 0.0001
erro.de.compacidade -0.0042 -0.0050 0.0921
erro.de.concavidade -0.0263 0.0008 0.0464
erro.de.pontos.côncavos 0.0033 -0.0415 0.0710
erro.de.simetria 0.0073 -0.0315 0.0440
erro.de.dimensão.fractal -0.0344 -0.0158 0.1028
pior.raio -0.0060 -0.0087 0.0067
pior.textura 0.0001 0.0010 -0.0030
pior.perímetro 0.0056 -0.0072 0.0008
pior.área -0.0097 0.0108 0.0325
pior.suavidade -0.0097 0.0140 0.1542
pior.compacidade 0.0129 0.0129 -0.0342
pior.concavidade -0.0023 0.0167 -0.0293
piores.pontos.côncavos 0.0052 -0.0040 -0.0275
pior.simetria 0.0029 -0.0075 -0.0922
pior.dimensão.fractal -0.0053 0.0168 -0.0088
erro.de.compacidade erro.de.concavidade
raio.médio 0.0003 -0.0047
textura.média 0.0014 -0.0166
perímetro.médio -0.0002 -0.0100
área.média -0.0009 0.0016
suavidade.média 0.0128 0.0173
compacidade.média 0.0159 -0.0591
concavidade.média -0.0307 0.0659
pontos.côncavos.médios -0.0190 -0.0113
simetria.média -0.0132 -0.0246
dimensão.fractal.média 0.0026 -0.0227
erro.de.raio -0.0026 0.0015
erro.de.textura 0.0279 0.0011
erro.de.perímetro -0.0042 -0.0263
erro.de.área -0.0050 0.0008
erro.de.suavidade 0.0921 0.0464
erro.de.compacidade 0.0000 0.0172
erro.de.concavidade 0.0172 0.0000
erro.de.pontos.côncavos 0.0428 0.1232
erro.de.simetria 0.0336 -0.0305
erro.de.dimensão.fractal 0.0804 0.0665
pior.raio 0.0041 0.0089
pior.textura -0.0004 0.0008
pior.perímetro 0.0032 -0.0020
pior.área 0.0088 0.0200
pior.suavidade 0.0118 0.0396
pior.compacidade 0.0229 -0.0709
pior.concavidade -0.0339 0.0797
piores.pontos.côncavos -0.0208 0.0104
pior.simetria -0.0223 -0.0292
pior.dimensão.fractal -0.0038 -0.0503
erro.de.pontos.côncavos erro.de.simetria
raio.médio -0.0020 0.0002
textura.média 0.0030 0.0057
perímetro.médio -0.0066 0.0005
área.média -0.0214 -0.0013
suavidade.média 0.0164 -0.0069
compacidade.média -0.0284 0.0161
concavidade.média -0.0147 -0.0162
pontos.côncavos.médios 0.0136 -0.0054
simetria.média -0.0130 0.2279
dimensão.fractal.média -0.0451 0.0051
erro.de.raio 0.0015 -0.0004
erro.de.textura 0.0259 0.1118
erro.de.perímetro 0.0033 0.0073
erro.de.área -0.0415 -0.0315
erro.de.suavidade 0.0710 0.0440
erro.de.compacidade 0.0428 0.0336
erro.de.concavidade 0.1232 -0.0305
erro.de.pontos.côncavos 0.0002 -0.0312
erro.de.simetria -0.0312 0.0007
erro.de.dimensão.fractal 0.0421 -0.0266
pior.raio 0.0123 0.0032
pior.textura -0.0010 -0.0023
pior.perímetro 0.0077 0.0038
pior.área 0.0023 0.0002
pior.suavidade 0.0165 -0.0497
pior.compacidade -0.0558 0.0065
pior.concavidade -0.0127 -0.0301
piores.pontos.côncavos 0.0878 -0.0257
pior.simetria -0.0627 0.4130
pior.dimensão.fractal -0.0733 -0.0455
erro.de.dimensão.fractal pior.raio pior.textura
raio.médio 0.0004 0.0005 0.0000
textura.média 0.0019 -0.0004 0.0013
perímetro.médio -0.0036 -0.0005 0.0000
área.média 0.0062 -0.0031 0.0002
suavidade.média 0.0178 0.0027 -0.0003
compacidade.média -0.0189 -0.0026 -0.0008
concavidade.média -0.0229 -0.0023 0.0003
pontos.côncavos.médios -0.0182 0.0003 -0.0002
simetria.média -0.0381 0.0020 -0.0007
dimensão.fractal.média 0.1110 0.0012 -0.0008
erro.de.raio 0.0021 0.0019 -0.0002
erro.de.textura 0.0492 0.0066 0.0064
erro.de.perímetro -0.0344 -0.0060 0.0001
erro.de.área -0.0158 -0.0087 0.0010
erro.de.suavidade 0.1028 0.0067 -0.0030
erro.de.compacidade 0.0804 0.0041 -0.0004
erro.de.concavidade 0.0665 0.0089 0.0008
erro.de.pontos.côncavos 0.0421 0.0123 -0.0010
erro.de.simetria -0.0266 0.0032 -0.0023
erro.de.dimensão.fractal -0.0001 0.0133 -0.0003
pior.raio 0.0133 -0.0021 0.0000
pior.textura -0.0003 0.0000 -0.0002
pior.perímetro -0.0011 0.0038 -0.0001
pior.área 0.0253 0.0055 -0.0001
pior.suavidade 0.0187 0.0009 0.0016
pior.compacidade -0.0541 -0.0078 0.0003
pior.concavidade -0.0606 -0.0043 0.0008
piores.pontos.côncavos -0.0403 0.0007 0.0008
pior.simetria -0.0831 0.0000 0.0020
pior.dimensão.fractal 0.1029 -0.0030 0.0006
pior.perímetro pior.área pior.suavidade
raio.médio -0.0005 -0.0047 0.0001
textura.média -0.0001 -0.0003 -0.0152
perímetro.médio 0.0003 -0.0049 -0.0023
área.média -0.0032 0.0089 0.0085
suavidade.média 0.0007 0.0021 0.0271
compacidade.média 0.0043 -0.0065 -0.0292
concavidade.média -0.0015 0.0062 -0.0013
pontos.côncavos.médios 0.0010 0.0009 -0.0176
simetria.média 0.0027 -0.0056 -0.0638
dimensão.fractal.média -0.0010 0.0192 -0.0165
erro.de.raio -0.0012 -0.0028 -0.0002
erro.de.textura 0.0060 0.0157 -0.0361
erro.de.perímetro 0.0056 -0.0097 -0.0097
erro.de.área -0.0072 0.0108 0.0140
erro.de.suavidade 0.0008 0.0325 0.1542
erro.de.compacidade 0.0032 0.0088 0.0118
erro.de.concavidade -0.0020 0.0200 0.0396
erro.de.pontos.côncavos 0.0077 0.0023 0.0165
erro.de.simetria 0.0038 0.0002 -0.0497
erro.de.dimensão.fractal -0.0011 0.0253 0.0187
pior.raio 0.0038 0.0055 0.0009
pior.textura -0.0001 -0.0001 0.0016
pior.perímetro -0.0021 0.0023 -0.0035
pior.área 0.0023 0.0000 0.0053
pior.suavidade -0.0035 0.0053 0.0000
pior.compacidade -0.0012 -0.0160 0.0001
pior.concavidade -0.0044 -0.0040 0.0237
piores.pontos.côncavos 0.0008 -0.0094 0.0129
pior.simetria -0.0005 -0.0178 -0.0268
pior.dimensão.fractal -0.0083 0.0001 0.0173
pior.compacidade pior.concavidade
raio.médio 0.0047 -0.0004
textura.média 0.0010 -0.0105
perímetro.médio 0.0063 -0.0013
área.média 0.0014 0.0036
suavidade.média -0.0056 -0.0062
compacidade.média 0.0307 -0.0302
concavidade.média -0.0215 0.0554
pontos.côncavos.médios -0.0141 0.0010
simetria.média -0.0015 -0.0214
dimensão.fractal.média -0.0208 -0.0495
erro.de.raio 0.0003 0.0018
erro.de.textura -0.0245 -0.0271
erro.de.perímetro 0.0129 -0.0023
erro.de.área 0.0129 0.0167
erro.de.suavidade -0.0342 -0.0293
erro.de.compacidade 0.0229 -0.0339
erro.de.concavidade -0.0709 0.0797
erro.de.pontos.côncavos -0.0558 -0.0127
erro.de.simetria 0.0065 -0.0301
erro.de.dimensão.fractal -0.0541 -0.0606
pior.raio -0.0078 -0.0043
pior.textura 0.0003 0.0008
pior.perímetro -0.0012 -0.0044
pior.área -0.0160 -0.0040
pior.suavidade 0.0001 0.0237
pior.compacidade 0.0000 0.0157
pior.concavidade 0.0157 0.0000
piores.pontos.côncavos 0.0028 0.0237
pior.simetria 0.0383 0.0078
pior.dimensão.fractal 0.0400 -0.0046
piores.pontos.côncavos pior.simetria
raio.médio -0.0002 0.0037
textura.média -0.0099 -0.0239
perímetro.médio -0.0015 0.0025
área.média -0.0071 -0.0025
suavidade.média -0.0128 -0.0239
compacidade.média -0.0142 0.0040
concavidade.média 0.0052 -0.0087
pontos.côncavos.médios 0.0269 -0.0051
simetria.média -0.0063 0.3684
dimensão.fractal.média -0.0420 -0.0319
erro.de.raio 0.0017 0.0029
erro.de.textura -0.0242 -0.0271
erro.de.perímetro 0.0052 0.0029
erro.de.área -0.0040 -0.0075
erro.de.suavidade -0.0275 -0.0922
erro.de.compacidade -0.0208 -0.0223
erro.de.concavidade 0.0104 -0.0292
erro.de.pontos.côncavos 0.0878 -0.0627
erro.de.simetria -0.0257 0.4130
erro.de.dimensão.fractal -0.0403 -0.0831
pior.raio 0.0007 0.0000
pior.textura 0.0008 0.0020
pior.perímetro 0.0008 -0.0005
pior.área -0.0094 -0.0178
pior.suavidade 0.0129 -0.0268
pior.compacidade 0.0028 0.0383
pior.concavidade 0.0237 0.0078
piores.pontos.côncavos 0.0000 0.0120
pior.simetria 0.0120 0.0000
pior.dimensão.fractal -0.0211 -0.0123
pior.dimensão.fractal
raio.médio 0.0051
textura.média 0.0012
perímetro.médio 0.0039
área.média 0.0139
suavidade.média -0.0046
compacidade.média 0.0020
concavidade.média -0.0240
pontos.côncavos.médios -0.0195
simetria.média -0.0350
dimensão.fractal.média 0.0948
erro.de.raio 0.0007
erro.de.textura -0.0154
erro.de.perímetro -0.0053
erro.de.área 0.0168
erro.de.suavidade -0.0088
erro.de.compacidade -0.0038
erro.de.concavidade -0.0503
erro.de.pontos.côncavos -0.0733
erro.de.simetria -0.0455
erro.de.dimensão.fractal 0.1029
pior.raio -0.0030
pior.textura 0.0006
pior.perímetro -0.0083
pior.área 0.0001
pior.suavidade 0.0173
pior.compacidade 0.0400
pior.concavidade -0.0046
piores.pontos.côncavos -0.0211
pior.simetria -0.0123
pior.dimensão.fractal 0.0000
summary(U)
raio.médio textura.média perímetro.médio
Min. :-5.495e-03 Min. :-0.0772062 Min. :-9.993e-03
1st Qu.:-2.660e-03 1st Qu.:-0.0037305 1st Qu.:-2.628e-03
Median : 4.355e-05 Median : 0.0003097 Median :-8.852e-05
Mean :-3.927e-04 Mean :-0.0031385 Mean :-7.026e-04
3rd Qu.: 4.928e-04 3rd Qu.: 0.0017530 3rd Qu.: 1.272e-03
Max. : 5.116e-03 Max. : 0.0224912 Max. : 6.305e-03
área.média suavidade.média compacidade.média
Min. :-0.0214183 Min. :-0.023853 Min. :-0.0591187
1st Qu.:-0.0029308 1st Qu.:-0.005322 1st Qu.:-0.0080727
Median :-0.0004268 Median : 0.000122 Median :-0.0004281
Mean : 0.0009426 Mean : 0.001076 Mean :-0.0022211
3rd Qu.: 0.0038650 3rd Qu.: 0.004242 3rd Qu.: 0.0053889
Max. : 0.0156171 Max. : 0.027067 Max. : 0.0364607
concavidade.média pontos.côncavos.médios simetria.média
Min. :-0.0307314 Min. :-0.0195365 Min. :-0.064207
1st Qu.:-0.0097635 1st Qu.:-0.0073573 1st Qu.:-0.013151
Median :-0.0025169 Median :-0.0009212 Median :-0.001894
Mean :-0.0008980 Mean :-0.0018468 Mean : 0.011506
3rd Qu.: 0.0002621 3rd Qu.: 0.0010023 3rd Qu.: 0.002513
Max. : 0.0658917 Max. : 0.0284026 Max. : 0.368389
dimensão.fractal.média erro.de.raio erro.de.textura
Min. :-0.0495306 Min. :-0.0051188 Min. :-7.721e-02
1st Qu.:-0.0093298 1st Qu.:-0.0009911 1st Qu.:-1.253e-02
Median :-0.0009237 Median : 0.0002581 Median : 5.424e-05
Mean : 0.0024237 Mean : 0.0001221 Mean : 3.455e-03
3rd Qu.: 0.0096498 3rd Qu.: 0.0015429 3rd Qu.: 1.539e-02
Max. : 0.1109682 Max. : 0.0041465 Max. : 1.118e-01
erro.de.perímetro erro.de.área erro.de.suavidade
Min. :-0.0344146 Min. :-0.0414860 Min. :-0.092232
1st Qu.:-0.0050523 1st Qu.:-0.0074718 1st Qu.:-0.012445
Median :-0.0006399 Median :-0.0009944 Median :-0.002942
Mean :-0.0026742 Mean :-0.0034526 Mean : 0.009434
3rd Qu.: 0.0027921 3rd Qu.: 0.0041489 3rd Qu.: 0.030002
Max. : 0.0128776 Max. : 0.0167538 Max. : 0.154228
erro.de.compacidade erro.de.concavidade erro.de.pontos.côncavos
Min. :-0.0339372 Min. :-0.0709251 Min. :-0.0733428
1st Qu.:-0.0040738 1st Qu.:-0.0212038 1st Qu.:-0.0197380
Median : 0.0008201 Median : 0.0008184 Median : 0.0008758
Mean : 0.0073605 Mean : 0.0047527 Mean : 0.0020112
3rd Qu.: 0.0151292 3rd Qu.: 0.0172859 3rd Qu.: 0.0157358
Max. : 0.0920618 Max. : 0.1232021 Max. : 0.1232021
erro.de.simetria erro.de.dimensão.fractal pior.raio
Min. :-0.0497392 Min. :-0.0830809 Min. :-0.0086879
1st Qu.:-0.0233265 1st Qu.:-0.0219312 1st Qu.:-0.0022480
Median : 0.0002031 Median : 0.0001369 Median : 0.0006038
Mean : 0.0192091 Mean : 0.0074254 Mean : 0.0011251
3rd Qu.: 0.0063209 3rd Qu.: 0.0236761 3rd Qu.: 0.0036259
Max. : 0.4129508 Max. : 0.1109682 Max. : 0.0132523
pior.textura pior.perímetro pior.área
Min. :-3.002e-03 Min. :-8.310e-03 Min. :-0.0178454
1st Qu.:-3.088e-04 1st Qu.:-1.396e-03 1st Qu.:-0.0045461
Median :-3.195e-05 Median :-9.945e-05 Median : 0.0005618
Mean : 1.907e-04 Mean : 1.766e-04 Mean : 0.0028098
3rd Qu.: 7.612e-04 3rd Qu.: 2.591e-03 3rd Qu.: 0.0081870
Max. : 6.401e-03 Max. : 7.733e-03 Max. : 0.0325055
pior.suavidade pior.compacidade pior.concavidade
Min. :-0.0638494 Min. :-0.0709251 Min. :-0.060586
1st Qu.:-0.0138440 1st Qu.:-0.0154928 1st Qu.:-0.019265
Median : 0.0001059 Median : 0.0002047 Median :-0.003175
Mean : 0.0026709 Mean :-0.0043644 Mean :-0.003432
3rd Qu.: 0.0137000 3rd Qu.: 0.0064720 3rd Qu.: 0.003145
Max. : 0.1542278 Max. : 0.0400287 Max. : 0.079708
piores.pontos.côncavos pior.simetria pior.dimensão.fractal
Min. :-0.0420343 Min. :-0.092232 Min. :-0.073343
1st Qu.:-0.0138512 1st Qu.:-0.023878 1st Qu.:-0.014659
Median :-0.0008583 Median :-0.003790 Median :-0.003399
Mean :-0.0025354 Mean : 0.012663 Mean :-0.001186
3rd Qu.: 0.0046012 3rd Qu.: 0.002897 3rd Qu.: 0.003426
Max. : 0.0877942 Max. : 0.412951 Max. : 0.102893
Vemos que um modelo com seis fatores está bem selecionado.
Escores Fatoriais
Vamos obter os scores faoriais por Regressão
<- factanal(dados, factors = 6,
mfo4 rotation = "varimax", scores = "regression", lower = 0.01)
mfo4
Call:
factanal(x = dados, factors = 6, scores = "regression", rotation = "varimax", lower = 0.01)
Uniquenesses:
raio.médio textura.média perímetro.médio
0.010 0.119 0.010
área.média suavidade.média compacidade.média
0.015 0.109 0.073
concavidade.média pontos.côncavos.médios simetria.média
0.074 0.050 0.562
dimensão.fractal.média erro.de.raio erro.de.textura
0.189 0.012 0.417
erro.de.perímetro erro.de.área erro.de.suavidade
0.038 0.065 0.551
erro.de.compacidade erro.de.concavidade erro.de.pontos.côncavos
0.140 0.277 0.326
erro.de.simetria erro.de.dimensão.fractal pior.raio
0.635 0.328 0.010
pior.textura pior.perímetro pior.área
0.010 0.010 0.027
pior.suavidade pior.compacidade pior.concavidade
0.177 0.099 0.119
piores.pontos.côncavos pior.simetria pior.dimensão.fractal
0.089 0.558 0.181
Loadings:
Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
raio.médio 0.966 -0.146 -0.161
textura.média 0.251 0.900
perímetro.médio 0.964 0.106 -0.129 -0.160
área.média 0.978 -0.102
suavidade.média 0.191 0.814 0.393 -0.119 -0.142
compacidade.média 0.460 0.614 0.568
concavidade.média 0.641 0.429 0.553 0.101
pontos.côncavos.médios 0.801 0.429 0.307 -0.145
simetria.média 0.155 0.515 0.295 0.248
dimensão.fractal.média -0.307 0.608 0.496 0.294
erro.de.raio 0.808 0.161 0.419 0.359
erro.de.textura -0.116 0.136 0.543 0.501
erro.de.perímetro 0.791 0.238 0.405 0.332
erro.de.área 0.851 0.102 0.315 0.315
erro.de.suavidade -0.147 0.140 0.167 0.616
erro.de.compacidade 0.166 0.226 0.867 0.153
erro.de.concavidade 0.163 0.129 0.808 0.153
erro.de.pontos.côncavos 0.375 0.166 0.644 0.295
erro.de.simetria 0.337 0.495
erro.de.dimensão.fractal 0.170 0.750 0.274
pior.raio 0.957 0.147 -0.194 0.128
pior.textura 0.205 0.177 0.954
pior.perímetro 0.949 0.176 -0.187 0.130
pior.área 0.955 0.132 -0.150 0.119
pior.suavidade 0.895
pior.compacidade 0.317 0.629 0.560 -0.248 0.169
pior.concavidade 0.437 0.530 0.578 -0.214 0.172
piores.pontos.côncavos 0.680 0.538 0.332 -0.168 0.116
pior.simetria 0.107 0.589 0.194 -0.182
pior.dimensão.fractal 0.703 0.528 -0.135 0.118
Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
SS loadings 10.080 4.920 4.80 2.232 2.189 0.509
Proportion Var 0.336 0.164 0.16 0.074 0.073 0.017
Cumulative Var 0.336 0.500 0.66 0.734 0.807 0.824
Test of the hypothesis that 6 factors are sufficient.
The chi square statistic is 10182.43 on 270 degrees of freedom.
The p-value is 0
head(mfo4$scores)
Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
2 1.7288595 2.4531129 1.2777904 -0.43687487 -2.3426240 3.2626232
3 1.7282102 -0.6578609 -0.6726333 -1.44719264 -0.7322082 -0.3072519
4 1.5324033 0.5814115 0.3013718 0.17712126 -0.4080242 -0.6639204
5 -0.9200642 4.1455832 1.9997781 0.58309911 -0.3599088 0.7518071
6 1.8454308 -0.5501883 0.3186203 0.59492660 -1.7475615 -1.2129584
7 -0.5098009 2.5890584 0.1764559 -0.08240137 -0.7117288 0.2147492
K-nn para Regressão
- Vamos fazer uma aplicação de k-vizinhos próximos para prever valores do meu banco de dados, vamos utilizar a variável resposta
perímetro.médio
e usar as outras covariaveis.
Modelo básico
Realizando o ajuste de k vizinhos próximos através do método básico com a função knnreg
da biblioteca caret
, lembrando que por default é feito com 5 vizinhos mais próximos.
<- caret::knnreg(perímetro.médio~., data = dados)
fit1 fit1
5-nearest neighbor regression model
Treinando o modelo com a biblioteca caret
Podemos utilizar a função train
da biblioteca caret
para treinar o modelo de K-NN.
<- caret::train(perímetro.médio~.,
fit2 data = dados,
method = "knn")
Carregando pacotes exigidos: ggplot2
Carregando pacotes exigidos: lattice
fit2
k-Nearest Neighbors
569 samples
29 predictor
No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 569, 569, 569, 569, 569, 569, ...
Resampling results across tuning parameters:
k RMSE Rsquared MAE
5 3.592740 0.9791554 2.070163
7 3.711423 0.9780132 2.101150
9 3.812619 0.9769091 2.121743
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was k = 5.
Podemos ver de acordo com a saída que o melhor valor para o k, foi igual a 5, tendo um bom pseudo \(R^2\), e um erro quadrático médio baixo.
plot(fit2)
Como podemos ver o melhor valor de k parece ser 5.
Pré-Processamento
Em alguns momentos precisa-se realizar o pré-processamento, pois em algumas ocasiões as escalas acabam interferindo bastante no resultado.
<- caret::train(perímetro.médio~.,
fit3 data = dados,
method = "knn",
preProcess = c("center", "scale"))
fit3
k-Nearest Neighbors
569 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 569, 569, 569, 569, 569, 569, ...
Resampling results across tuning parameters:
k RMSE Rsquared MAE
5 8.070353 0.8981331 5.964822
7 7.908674 0.9058284 5.794071
9 7.779467 0.9118861 5.672658
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was k = 9.
Padronizando é observado que o melhor valor para k é igual a 7
plot(fit3)
Avaliando o modelo com holdout
Precisamos dividir nosso conjunto de dados em um conjunto de treinamento, onde os modelos serão ajustados, e um conjunto de teste, que será utilizado para avaliar o modelo. Utilizaremos aqui a função createDataPartition
para a divisão do conjunto de dados.
<- caret::createDataPartition(dados$perímetro.médio, p = 0.80, list = F)
holdout <- dados[holdout,]
treino <- dados[-holdout,] teste
<- caret::train(perímetro.médio~.,
fit4 data = treino,
preProcess = c("center", "scale"),
method = "knn")
fit4
k-Nearest Neighbors
457 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 457, 457, 457, 457, 457, 457, ...
Resampling results across tuning parameters:
k RMSE Rsquared MAE
5 8.015162 0.9008997 5.881954
7 7.853036 0.9075358 5.774026
9 7.815003 0.9109550 5.735265
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was k = 9.
plot(fit4)
O melhor valor de k = 9.
Vamos agora aplicar no conjunto de teste para ver como está o ajuste. Precisamos retirar a variável resposta do conjunto de teste, e após isso realizar o cálculo do \(R^2\) e do RMSE.
<- subset(teste, select = -c(perímetro.médio))
teste.features <- subset(teste, select = perímetro.médio)[,1]
teste.target
<- predict(fit4, newdata = teste.features) predictions
- Calculando o RMSE
sqrt(mean((teste.target-predictions)^2))
[1] 7.36615
- Calculando o \(R^2\)
cor(teste.target,predictions)^2
[1] 0.9147878
Podemos observar que foi muito bom os valores do modelo preditivo ajustado através de holdout.
Avaliando o modelo com validação cruzada
Na biblioteca caret
, podemos utilizar a função trainControl
para definir parâmetros de treinamento. No caso de 10-fold cross-validation, passamos os argumentos method = "cv"
e number = 10.
<- caret::trainControl(method = "cv",
controle number = 10)
<- caret::train(perímetro.médio~.,
fit5 data = treino,
method = "knn",
preProcess = c("center", "scale"),
trControl = controle)
fit5
k-Nearest Neighbors
457 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 413, 413, 411, 413, 410, 412, ...
Resampling results across tuning parameters:
k RMSE Rsquared MAE
5 7.277717 0.9159251 5.393223
7 7.368890 0.9163806 5.378811
9 7.437837 0.9184780 5.509509
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was k = 5.
Utilizando o método de validação cruzada, é observado que o melhor valor de k = 7.
plot(fit5)
<- predict(fit5, newdata = teste.features) predictions2
- Calculando o RMSE
sqrt(mean((teste.target-predictions2)^2))
[1] 7.276594
- Calculando o \(R^2\)
cor(teste.target,predictions2)^2
[1] 0.9136107
É observado que através de validação cruzada temos resultados melhores, mais precisos através do pseudo \(R^2\) e do RMSE.
Tunning do número de vizinhos
Uma estratégia para escolha do melhor número de vizinhos é variar o valor desse parâmetro em um grid.
<- expand.grid(k = seq(5,11, by = 1))
tunegrid <- caret::train(perímetro.médio~.,
fit6 data = treino,
method = "knn",
preProcess = c("center", "scale"),
trControl = controle,
tuneGrid = tunegrid)
fit6
k-Nearest Neighbors
457 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 410, 410, 411, 413, 411, 413, ...
Resampling results across tuning parameters:
k RMSE Rsquared MAE
5 7.198116 0.9215971 5.340789
6 7.250916 0.9219637 5.368308
7 7.325585 0.9217172 5.443864
8 7.422808 0.9200252 5.497716
9 7.393251 0.9226273 5.491161
10 7.394359 0.9237557 5.501378
11 7.465179 0.9239968 5.525425
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was k = 5.
plot(fit6)
O melhor valor de k é igual a 5.
Avaliando no conjunto de teste
<- predict(fit6, newdata = teste.features) predictions3
- Calculando o RMSE
sqrt(mean((teste.target-predictions3)^2))
[1] 7.276594
- Calculando o \(R^2\)
cor(teste.target,predictions3)^2
[1] 0.9136107
Conclusão
Devido a aplicação do método K-NN para a regressão com o objetivo de predizer alguns valores da variável perímetro médio
, obtivemos que o melhor método foi o com validação cruzada e k = 7, tendo um pseudo coeficiente de determinação de 91.36%, e um RMSE de 7.2766. Sendo assim o método utilizado de para prever possíveis valores.
Árvore de Regressão
Modelo básico
Para o ajuste do modelo básico de árvore de regressão, podemos usar a função rpart
da biblioteca rpart
. Precisamos passar apenas três argumentos, a equação
, o conjunto de dados
e o método
.
<- rpart::rpart(perímetro.médio~.,
fit7 data = dados,
method = "anova")
fit7
n= 569
node), split, n, deviance, yval
* denotes terminal node
1) root 569 335370.2000 91.96903
2) raio.médio< 15.29 408 54943.5000 79.33843
4) raio.médio< 12.305 195 11107.5000 69.48795
8) raio.médio< 10.46 61 1537.5800 59.94148 *
9) raio.médio>=10.46 134 1479.9730 73.83373 *
5) raio.médio>=12.305 213 7592.4940 88.35648
10) raio.médio< 13.705 119 952.4389 83.86294 *
11) raio.médio>=13.705 94 1195.3360 94.04511 *
3) raio.médio>=15.29 161 50391.3000 123.97700
6) raio.médio< 19.045 91 4671.7970 111.87360
12) raio.médio< 17.015 44 383.8043 105.43860 *
13) raio.médio>=17.015 47 760.2898 117.89790 *
7) raio.médio>=19.045 70 15058.7100 139.71140
14) raio.médio< 22.14 57 1748.9260 133.69120 *
15) raio.médio>=22.14 13 2186.0290 166.10770 *
summary(fit7)
Call:
rpart::rpart(formula = perímetro.médio ~ ., data = dados, method = "anova")
n= 569
CP nsplit rel error xerror xstd
1 0.68591483 0 1.00000000 1.00420029 0.072311359
2 0.10807014 1 0.31408517 0.32294582 0.025951727
3 0.09142374 2 0.20601502 0.20853654 0.024664683
4 0.03316859 3 0.11459128 0.12525605 0.012710062
5 0.02412243 4 0.08142269 0.11005892 0.010604271
6 0.01623495 5 0.05730026 0.06619568 0.004259971
7 0.01051883 6 0.04106531 0.04801982 0.003839565
8 0.01000000 7 0.03054647 0.04221059 0.003551602
Variable importance
raio.médio área.média pior.raio
20 19 16
pior.área pior.perímetro erro.de.área
16 16 10
pontos.côncavos.médios erro.de.suavidade
1 1
Node number 1: 569 observations, complexity param=0.6859148
mean=91.96903, MSE=589.4028
left son=2 (408 obs) right son=3 (161 obs)
Primary splits:
raio.médio < 15.29 to the left, improve=0.6859148, (0 missing)
área.média < 729.75 to the left, improve=0.6857838, (0 missing)
pior.raio < 19.27 to the left, improve=0.6691834, (0 missing)
pior.área < 1160.5 to the left, improve=0.6689590, (0 missing)
pior.perímetro < 119.6 to the left, improve=0.6684549, (0 missing)
Surrogate splits:
área.média < 726.85 to the left, agree=0.996, adj=0.988, (0 split)
pior.raio < 17.69 to the left, agree=0.963, adj=0.870, (0 split)
pior.área < 974.15 to the left, agree=0.963, adj=0.870, (0 split)
pior.perímetro < 119.25 to the left, agree=0.961, adj=0.863, (0 split)
erro.de.área < 43.45 to the left, agree=0.916, adj=0.702, (0 split)
Node number 2: 408 observations, complexity param=0.1080701
mean=79.33843, MSE=134.6654
left son=4 (195 obs) right son=5 (213 obs)
Primary splits:
raio.médio < 12.305 to the left, improve=0.6596505, (0 missing)
área.média < 467.25 to the left, improve=0.6576341, (0 missing)
pior.área < 569.3 to the left, improve=0.6374670, (0 missing)
pior.raio < 13.455 to the left, improve=0.6373706, (0 missing)
pior.perímetro < 87.3 to the left, improve=0.6279011, (0 missing)
Surrogate splits:
área.média < 466.6 to the left, agree=0.990, adj=0.979, (0 split)
pior.raio < 13.455 to the left, agree=0.934, adj=0.862, (0 split)
pior.área < 569.3 to the left, agree=0.929, adj=0.851, (0 split)
pior.perímetro < 87.8 to the left, agree=0.914, adj=0.821, (0 split)
erro.de.suavidade < 0.006535 to the right, agree=0.691, adj=0.354, (0 split)
Node number 3: 161 observations, complexity param=0.09142374
mean=123.977, MSE=312.9895
left son=6 (91 obs) right son=7 (70 obs)
Primary splits:
raio.médio < 19.045 to the left, improve=0.6084541, (0 missing)
área.média < 1103 to the left, improve=0.6019915, (0 missing)
pior.raio < 23.2 to the left, improve=0.5000142, (0 missing)
pior.perímetro < 157.35 to the left, improve=0.4974496, (0 missing)
pior.área < 1470 to the left, improve=0.4710607, (0 missing)
Surrogate splits:
área.média < 1103 to the left, agree=0.981, adj=0.957, (0 split)
pior.raio < 23.2 to the left, agree=0.888, adj=0.743, (0 split)
pior.perímetro < 151.65 to the left, agree=0.876, adj=0.714, (0 split)
pior.área < 1616.5 to the left, agree=0.870, adj=0.700, (0 split)
pontos.côncavos.médios < 0.092635 to the left, agree=0.758, adj=0.443, (0 split)
Node number 4: 195 observations, complexity param=0.02412243
mean=69.48795, MSE=56.96153
left son=8 (61 obs) right son=9 (134 obs)
Primary splits:
raio.médio < 10.46 to the left, improve=0.7283319, (0 missing)
área.média < 331.6 to the left, improve=0.7283319, (0 missing)
pior.perímetro < 75.935 to the left, improve=0.6990720, (0 missing)
pior.raio < 11.315 to the left, improve=0.6832267, (0 missing)
pior.área < 391.3 to the left, improve=0.6832267, (0 missing)
Surrogate splits:
área.média < 331.6 to the left, agree=1.000, adj=1.000, (0 split)
pior.área < 395.95 to the left, agree=0.954, adj=0.852, (0 split)
pior.raio < 11.315 to the left, agree=0.949, adj=0.836, (0 split)
pior.perímetro < 71.995 to the left, agree=0.944, adj=0.820, (0 split)
erro.de.suavidade < 0.0095425 to the right, agree=0.774, adj=0.279, (0 split)
Node number 5: 213 observations, complexity param=0.01623495
mean=88.35648, MSE=35.64551
left son=10 (119 obs) right son=11 (94 obs)
Primary splits:
raio.médio < 13.705 to the left, improve=0.7171187, (0 missing)
área.média < 593.95 to the left, improve=0.7111919, (0 missing)
pior.área < 683.95 to the left, improve=0.5490839, (0 missing)
pior.perímetro < 99.955 to the left, improve=0.5460101, (0 missing)
pior.raio < 15.685 to the left, improve=0.5431383, (0 missing)
Surrogate splits:
área.média < 576.7 to the left, agree=0.981, adj=0.957, (0 split)
pior.área < 743.45 to the left, agree=0.840, adj=0.638, (0 split)
pior.raio < 15.235 to the left, agree=0.836, adj=0.628, (0 split)
pior.perímetro < 99.955 to the left, agree=0.817, adj=0.585, (0 split)
pontos.côncavos.médios < 0.03519 to the left, agree=0.676, adj=0.266, (0 split)
Node number 6: 91 observations, complexity param=0.01051883
mean=111.8736, MSE=51.33843
left son=12 (44 obs) right son=13 (47 obs)
Primary splits:
raio.médio < 17.015 to the left, improve=0.7551062, (0 missing)
área.média < 908.65 to the left, improve=0.7413634, (0 missing)
pior.raio < 20.325 to the left, improve=0.4809188, (0 missing)
pior.área < 1300.5 to the left, improve=0.4681144, (0 missing)
pior.perímetro < 132.75 to the left, improve=0.4377254, (0 missing)
Surrogate splits:
área.média < 890.65 to the left, agree=0.978, adj=0.955, (0 split)
pior.raio < 20.325 to the left, agree=0.857, adj=0.705, (0 split)
pior.perímetro < 130.8 to the left, agree=0.835, adj=0.659, (0 split)
pior.área < 1278 to the left, agree=0.835, adj=0.659, (0 split)
erro.de.área < 48.725 to the left, agree=0.725, adj=0.432, (0 split)
Node number 7: 70 observations, complexity param=0.03316859
mean=139.7114, MSE=215.1244
left son=14 (57 obs) right son=15 (13 obs)
Primary splits:
raio.médio < 22.14 to the left, improve=0.7386924, (0 missing)
área.média < 1608 to the left, improve=0.7276027, (0 missing)
pontos.côncavos.médios < 0.15785 to the left, improve=0.6054126, (0 missing)
concavidade.média < 0.28405 to the left, improve=0.5263107, (0 missing)
pior.perímetro < 188.25 to the left, improve=0.5242046, (0 missing)
Surrogate splits:
área.média < 1500 to the left, agree=0.986, adj=0.923, (0 split)
pior.perímetro < 200.95 to the left, agree=0.929, adj=0.615, (0 split)
pontos.côncavos.médios < 0.15785 to the left, agree=0.914, adj=0.538, (0 split)
pior.raio < 27.955 to the left, agree=0.914, adj=0.538, (0 split)
pior.área < 2400.5 to the left, agree=0.900, adj=0.462, (0 split)
Node number 8: 61 observations
mean=59.94148, MSE=25.20623
Node number 9: 134 observations
mean=73.83373, MSE=11.04458
Node number 10: 119 observations
mean=83.86294, MSE=8.003688
Node number 11: 94 observations
mean=94.04511, MSE=12.71634
Node number 12: 44 observations
mean=105.4386, MSE=8.722825
Node number 13: 47 observations
mean=117.8979, MSE=16.17638
Node number 14: 57 observations
mean=133.6912, MSE=30.68291
Node number 15: 13 observations
mean=166.1077, MSE=168.1561
plot(fit7) +
text(fit7, cex = 1.25)
Error in plot(fit7) + text(fit7, cex = 1.25): argumento não-numérico para operador binário
Treinando o modelo com a biblioteca caret
set.seed(2023)
<- caret::train(perímetro.médio~.,
fit8 data = dados,
method = "rpart")
Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,
: There were missing values in resampled performance measures.
fit8
CART
569 samples
29 predictor
No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 569, 569, 569, 569, 569, 569, ...
Resampling results across tuning parameters:
cp RMSE Rsquared MAE
0.09142374 10.97567 0.8024879 8.063808
0.10807014 12.06318 0.7618080 8.931768
0.68591483 19.27910 0.6749348 15.082394
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was cp = 0.09142374.
plot(fit8)
Pré-Processamento
- Realizando o pré-processamento, onde padronizaremos as variáveis
<- caret::train(perímetro.médio~.,
fit9 data = dados,
preProcess = c("center", "scale"),
method = "rpart")
Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,
: There were missing values in resampled performance measures.
fit9
CART
569 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 569, 569, 569, 569, 569, 569, ...
Resampling results across tuning parameters:
cp RMSE Rsquared MAE
0.09142374 10.05929 0.8249522 7.502874
0.10807014 11.79070 0.7591914 8.915633
0.68591483 19.05394 0.6734306 15.040888
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was cp = 0.09142374.
plot(fit9)
Podemos observar que o pseudo \(R^2\) houve uma melhora, e o parâmetro de complexidade permanece o mesmo.
Avaliando o modelo com holdout
- Neste caso como já separamos os bancos utilizaremos os que já foram separados, pois o objetivo é aplicar ao mesmo conjunto de teste e ver o que foi melhor ajustado.
<- caret::train(perímetro.médio~.,
fit10 data = treino,
method = "rpart",
preProcess = c("center", "scale"))
Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,
: There were missing values in resampled performance measures.
fit10
CART
457 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 457, 457, 457, 457, 457, 457, ...
Resampling results across tuning parameters:
cp RMSE Rsquared MAE
0.08514093 10.17472 0.8297123 7.548917
0.11439362 12.79752 0.7323413 9.539386
0.68460884 17.68209 0.6726753 13.656217
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was cp = 0.08514093.
plot(fit10)
Calculando o RMSE e coeficiente de determinação
O objetivo é analisar o desempenho do método para regressão
<- predict(fit10,newdata = teste.features) predic4
- Calculando o RMSE
sqrt(mean((teste.target-predic4)^2))
[1] 9.668827
- Calculando o \(R^2\)
cor(teste.target,predic4)^2
[1] 0.8308839
Podemos observar que o método para regressão baseado em K-NN foi bem melhor na predição dos valores.
Avaliando o modelo com validação cruzada
<- caret::trainControl(method = "repeatedcv",
controle1 number = 10,
repeats = 10)
<- caret::train(perímetro.médio~.,
fit11 data = treino,
method = "rpart",
preProcess = c("center","scale"),
trControl = controle1)
Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,
: There were missing values in resampled performance measures.
fit11
CART
457 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Cross-Validated (10 fold, repeated 10 times)
Summary of sample sizes: 411, 411, 410, 411, 410, 412, ...
Resampling results across tuning parameters:
cp RMSE Rsquared MAE
0.08514093 10.04970 0.8380151 7.527505
0.11439362 12.60432 0.7399381 9.566289
0.68460884 19.57475 0.6513747 15.402152
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was cp = 0.08514093.
plot(fit11)
- Vamos avaliar o poder preditivo no conjunto de teste.
<- predict(fit11, newdata = teste.features) predic5
- Calculando o RMSE
sqrt(mean((teste.target-predic5)^2))
[1] 9.668827
- Calculando o \(R^2\)
cor(teste.target,predic5)^2
[1] 0.8308839
Tunning do parâmetro de complexidade
Uma estratégia para escolha do melhor valor para o parâmetro de complexidade é variar o valor desse parâmetro em um grid.
<- expand.grid(cp = seq(0,1, by= 0.01)) tunegrid2
<- caret::train(perímetro.médio~.,
fit12 data = treino,
method = "rpart",
trControl = controle1,
preProcess = c("center","scale"),
tuneGrid = tunegrid2)
Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,
: There were missing values in resampled performance measures.
fit12
CART
457 samples
29 predictor
Pre-processing: centered (29), scaled (29)
Resampling: Cross-Validated (10 fold, repeated 10 times)
Summary of sample sizes: 412, 410, 412, 413, 410, 413, ...
Resampling results across tuning parameters:
cp RMSE Rsquared MAE
0.00 3.152805 0.9848763 1.877292
0.01 5.063422 0.9602391 3.810418
0.02 6.507816 0.9312560 5.125201
0.03 7.988958 0.8971524 6.361693
0.04 8.817843 0.8766934 6.828139
0.05 8.806650 0.8766587 6.823837
0.06 8.806650 0.8766587 6.823837
0.07 8.806650 0.8766587 6.823837
0.08 9.118079 0.8658225 7.013314
0.09 10.798392 0.8142961 7.855215
0.10 10.947646 0.8099123 7.920758
0.11 11.212026 0.7979419 8.180569
0.12 13.717898 0.6941487 10.746822
0.13 13.806239 0.6906580 10.873601
0.14 13.806239 0.6906580 10.873601
0.15 13.806239 0.6906580 10.873601
0.16 13.806239 0.6906580 10.873601
0.17 13.806239 0.6906580 10.873601
0.18 13.806239 0.6906580 10.873601
0.19 13.806239 0.6906580 10.873601
0.20 13.806239 0.6906580 10.873601
0.21 13.806239 0.6906580 10.873601
0.22 13.806239 0.6906580 10.873601
0.23 13.806239 0.6906580 10.873601
0.24 13.806239 0.6906580 10.873601
0.25 13.806239 0.6906580 10.873601
0.26 13.806239 0.6906580 10.873601
0.27 13.806239 0.6906580 10.873601
0.28 13.806239 0.6906580 10.873601
0.29 13.806239 0.6906580 10.873601
0.30 13.806239 0.6906580 10.873601
0.31 13.806239 0.6906580 10.873601
0.32 13.806239 0.6906580 10.873601
0.33 13.806239 0.6906580 10.873601
0.34 13.806239 0.6906580 10.873601
0.35 13.806239 0.6906580 10.873601
0.36 13.806239 0.6906580 10.873601
0.37 13.806239 0.6906580 10.873601
0.38 13.806239 0.6906580 10.873601
0.39 13.806239 0.6906580 10.873601
0.40 13.806239 0.6906580 10.873601
0.41 13.806239 0.6906580 10.873601
0.42 13.806239 0.6906580 10.873601
0.43 13.806239 0.6906580 10.873601
0.44 13.806239 0.6906580 10.873601
0.45 13.806239 0.6906580 10.873601
0.46 13.806239 0.6906580 10.873601
0.47 13.806239 0.6906580 10.873601
0.48 13.806239 0.6906580 10.873601
0.49 13.806239 0.6906580 10.873601
0.50 13.806239 0.6906580 10.873601
0.51 13.806239 0.6906580 10.873601
0.52 13.806239 0.6906580 10.873601
0.53 13.806239 0.6906580 10.873601
0.54 13.806239 0.6906580 10.873601
0.55 13.806239 0.6906580 10.873601
0.56 13.806239 0.6906580 10.873601
0.57 13.806239 0.6906580 10.873601
0.58 13.806239 0.6906580 10.873601
0.59 13.806239 0.6906580 10.873601
0.60 13.806239 0.6906580 10.873601
0.61 13.806239 0.6906580 10.873601
0.62 13.806239 0.6906580 10.873601
0.63 13.806239 0.6906580 10.873601
0.64 13.806239 0.6906580 10.873601
0.65 13.806239 0.6906580 10.873601
0.66 13.806239 0.6906580 10.873601
0.67 13.806239 0.6906580 10.873601
0.68 15.251344 0.6815618 11.994796
0.69 22.672301 0.6322528 17.789005
0.70 24.289772 0.5715743 19.010858
0.71 24.388356 NaN 19.071390
0.72 24.388356 NaN 19.071390
0.73 24.388356 NaN 19.071390
0.74 24.388356 NaN 19.071390
0.75 24.388356 NaN 19.071390
0.76 24.388356 NaN 19.071390
0.77 24.388356 NaN 19.071390
0.78 24.388356 NaN 19.071390
0.79 24.388356 NaN 19.071390
0.80 24.388356 NaN 19.071390
0.81 24.388356 NaN 19.071390
0.82 24.388356 NaN 19.071390
0.83 24.388356 NaN 19.071390
0.84 24.388356 NaN 19.071390
0.85 24.388356 NaN 19.071390
0.86 24.388356 NaN 19.071390
0.87 24.388356 NaN 19.071390
0.88 24.388356 NaN 19.071390
0.89 24.388356 NaN 19.071390
0.90 24.388356 NaN 19.071390
0.91 24.388356 NaN 19.071390
0.92 24.388356 NaN 19.071390
0.93 24.388356 NaN 19.071390
0.94 24.388356 NaN 19.071390
0.95 24.388356 NaN 19.071390
0.96 24.388356 NaN 19.071390
0.97 24.388356 NaN 19.071390
0.98 24.388356 NaN 19.071390
0.99 24.388356 NaN 19.071390
1.00 24.388356 NaN 19.071390
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was cp = 0.
plot(fit12)
- Vamos avaliar o poder preditivo no conjunto de teste.
<- predict(fit12, newdata = teste.features) predic6
- Calculando o RMSE
sqrt(mean((teste.target-predic6)^2))
[1] 2.478303
- Calculando o \(R^2\)
cor(teste.target,predic6)^2
[1] 0.9897916
Conclusão
O método árvore de Regressão se mostrou mais eficiente para o conjunto de dados, tendo bom valores preditos cada vez mais próximos dos valores verdadeiros, quando utilizamos o valor do parâmetro de complexidade igual a 0, o coeficiente de determinação no conjunto de teste foi aproximadamente 1.