Bu çalışmada kullanılan Glass veri seti, R’ın mlbench paketi aracılığıyla erişilebilen ve orijinal olarak ABD Adli Bilimler Servisi tarafından derlenen klasik bir makine öğrenmesi veri setidir. Veri seti, cam kırıklarının türünü belirlemede kimyasal bileşim özelliklerinin ayırt edici gücünü incelemeye yönelik olarak tasarlanmıştır. Bu niteliğiyle hem adli bilim hem de malzeme bilimi alanlarında sıklıkla başvurulan bir kaynak niteliği taşımaktadır.
Veri seti, 214 cam örneğine ait 9 kimyasal özellik ile bu örneklerin ait olduğu cam türünü gösteren bir kategorik değişkenden oluşmaktadır. Bağımsız değişkenler: kırılma indeksi (RI), sodyum (Na), magnezyum (Mg), alüminyum (Al), silikon (Si), potasyum (K), kalsiyum (Ca), baryum (Ba) ve demir (Fe) içeriklerini kapsamakta olup tüm element değerleri ağırlık yüzdesi (%) cinsinden ifade edilmektedir.
Bağımlı değişken olan cam türü (Type) altı kategoriden oluşmaktadır.
Kategorilerin dördüncü türü (Type 4) veri setinde yer almamaktadır. Ayrıca kategoriler arasında belirgin bir dengesizlik söz konusudur. Type 2 en kalabalık grubu oluştururken Type 6 yalnızca 9 gözlemle temsil edilmektedir.
Bu çalışmada cam türünü bağımlı değişken, kimyasal bileşim özelliklerini ise bağımsız değişken olarak ele alan bir multinominal lojistik regresyon modeli kurulmuştur. Çok kategorili yapısı ve kesintisiz bağımsız değişkenleriyle Glass veri seti, multinominal lojistik regresyon uygulamaları için metodolojik açıdan elverişli bir örnek sunmaktadır. En sık gözlemlenen cam türü olan Type 2 referans kategori olarak belirlenmiş, diğer cam türlerinin kimyasal özellikler aracılığıyla bu referans kategoriden nasıl ayrıştığı incelenmiştir.
library(mlbench)
library(nnet)
library(car)
library(ggplot2)
library(effects)
library(caret)
library(stargazer)
data(Glass)
str(Glass)## 'data.frame': 214 obs. of 10 variables:
## $ RI : num 1.52 1.52 1.52 1.52 1.52 ...
## $ Na : num 13.6 13.9 13.5 13.2 13.3 ...
## $ Mg : num 4.49 3.6 3.55 3.69 3.62 3.61 3.6 3.61 3.58 3.6 ...
## $ Al : num 1.1 1.36 1.54 1.29 1.24 1.62 1.14 1.05 1.37 1.36 ...
## $ Si : num 71.8 72.7 73 72.6 73.1 ...
## $ K : num 0.06 0.48 0.39 0.57 0.55 0.64 0.58 0.57 0.56 0.57 ...
## $ Ca : num 8.75 7.83 7.78 8.22 8.07 8.07 8.17 8.24 8.3 8.4 ...
## $ Ba : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Fe : num 0 0 0 0 0 0.26 0 0 0 0.11 ...
## $ Type: Factor w/ 6 levels "1","2","3","5",..: 1 1 1 1 1 1 1 1 1 1 ...
## RI Na Mg Al Si K Ca Ba Fe Type
## 1 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0 0.00 1
## 2 1.51761 13.89 3.60 1.36 72.73 0.48 7.83 0 0.00 1
## 3 1.51618 13.53 3.55 1.54 72.99 0.39 7.78 0 0.00 1
## 4 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0 0.00 1
## 5 1.51742 13.27 3.62 1.24 73.08 0.55 8.07 0 0.00 1
## 6 1.51596 12.79 3.61 1.62 72.97 0.64 8.07 0 0.26 1
# Değişkenler:
# RI → Kırılma indeksi
# Na → Sodyum (%)
# Mg → Magnezyum (%)
# Al → Alüminyum (%)
# Si → Silikon (%)
# K → Potasyum (%)
# Ca → Kalsiyum (%)
# Ba → Baryum (%)
# Fe → Demir (%)
# Type → Cam türü (1,2,3,5,6,7) ← bağımlı değişken
# Type 4 bu veri setinde yoktur. Kategoriler: 1, 2, 3, 5, 6, 7
# Kategori dağılımı
table(Glass$Type)##
## 1 2 3 5 6 7
## 70 76 17 13 9 29
##
## 1 2 3 5 6 7
## 32.710280 35.514019 7.943925 6.074766 4.205607 13.551402
Type 2 %35.5 ile en büyük grubu oluştururken bunu %32.7 ile Type 1 izlemektedir. Bu iki kategori birlikte veri setinin yaklaşık %68’ini oluşturmaktadır.
En az temsil edilen grup ise yalnızca 9 gözlem ve %4.2 ile Type 6’dır (masa camı).
## RI Na Mg Al
## Min. :1.511 Min. :10.73 Min. :0.000 Min. :0.290
## 1st Qu.:1.517 1st Qu.:12.91 1st Qu.:2.115 1st Qu.:1.190
## Median :1.518 Median :13.30 Median :3.480 Median :1.360
## Mean :1.518 Mean :13.41 Mean :2.685 Mean :1.445
## 3rd Qu.:1.519 3rd Qu.:13.82 3rd Qu.:3.600 3rd Qu.:1.630
## Max. :1.534 Max. :17.38 Max. :4.490 Max. :3.500
## Si K Ca Ba
## Min. :69.81 Min. :0.0000 Min. : 5.430 Min. :0.000
## 1st Qu.:72.28 1st Qu.:0.1225 1st Qu.: 8.240 1st Qu.:0.000
## Median :72.79 Median :0.5550 Median : 8.600 Median :0.000
## Mean :72.65 Mean :0.4971 Mean : 8.957 Mean :0.175
## 3rd Qu.:73.09 3rd Qu.:0.6100 3rd Qu.: 9.172 3rd Qu.:0.000
## Max. :75.41 Max. :6.2100 Max. :16.190 Max. :3.150
## Fe Type
## Min. :0.00000 1:70
## 1st Qu.:0.00000 2:76
## Median :0.00000 3:17
## Mean :0.05701 5:13
## 3rd Qu.:0.10000 6: 9
## Max. :0.51000 7:29
## Type RI Na Mg Al Si K Ca
## 1 1 1.518718 13.24229 3.5524286 1.163857 72.61914 0.4474286 8.797286
## 2 2 1.518619 13.11171 3.0021053 1.408158 72.59803 0.5210526 9.073684
## 3 3 1.517964 13.43706 3.5435294 1.201176 72.40471 0.4064706 8.782941
## 4 5 1.518928 12.82769 0.7738462 2.033846 72.36615 1.4700000 10.123846
## 5 6 1.517456 14.64667 1.3055556 1.366667 73.20667 0.0000000 9.356667
## 6 7 1.517116 14.44207 0.5382759 2.122759 72.96586 0.3251724 8.491379
## Ba Fe
## 1 0.012714286 0.05700000
## 2 0.050263158 0.07973684
## 3 0.008823529 0.05705882
## 4 0.187692308 0.06076923
## 5 0.000000000 0.00000000
## 6 1.040000000 0.01344828
## RI Na Mg Al Si K Ca Ba Fe
## RI 1.00 -0.19 -0.12 -0.41 -0.54 -0.29 0.81 0.00 0.14
## Na -0.19 1.00 -0.27 0.16 -0.07 -0.27 -0.28 0.33 -0.24
## Mg -0.12 -0.27 1.00 -0.48 -0.17 0.01 -0.44 -0.49 0.08
## Al -0.41 0.16 -0.48 1.00 -0.01 0.33 -0.26 0.48 -0.07
## Si -0.54 -0.07 -0.17 -0.01 1.00 -0.19 -0.21 -0.10 -0.09
## K -0.29 -0.27 0.01 0.33 -0.19 1.00 -0.32 -0.04 -0.01
## Ca 0.81 -0.28 -0.44 -0.26 -0.21 -0.32 1.00 -0.11 0.12
## Ba 0.00 0.33 -0.49 0.48 -0.10 -0.04 -0.11 1.00 -0.06
## Fe 0.14 -0.24 0.08 -0.07 -0.09 -0.01 0.12 -0.06 1.00
Korelasyon matrisi incelendiğinde RI-Ca en yüksek korelasyona sahiptir. Kalsiyum içeriği arttıkça kırılma indeksi de belirgin biçimde yükselmektedir.
RI ile Ca arasındaki r=0.81 değeri çoklu doğrusallık (multicollinearity) açısından dikkat gerektirir. Multinominal lojistik regresyon modeline her ikisi birlikte dahil edildiğinde katsayı tahminleri kararsızlaşabilir. Model kurulurken bu ilişkinin göz önünde bulundurulması, adımsal değişken seçiminin neden önemli olduğunu da açıklamaktadır.
par(mfrow = c(3, 3))
for (var in names(Glass)[-10]) {
boxplot(Glass[[var]] ~ Glass$Type,
main = paste(var, "~ Type"),
xlab = "Cam Türü",
ylab = var,
col = rainbow(6))
}Demir içeriği cam türleri arasında belirgin farklılıklar göstermekle birlikte tüm gruplarda genel olarak düşük ve sıfıra yakın değerler gözlemlenmektedir. Bu durum demirin cam bileşiminde eser miktarda bulunan bir element olduğuna işaret etmektedir.
ggplot(Glass, aes(x = Type, y = Al, fill = Type)) +
geom_boxplot() +
labs(title = "Cam Türüne Göre Alüminyum İçeriği",
x = "Cam Türü", y = "Al (%)") +
theme_minimal()ggplot(Glass, aes(x = Type, y = Ba, fill = Type)) +
geom_boxplot() +
labs(title = "Cam Türüne Göre Baryum İçeriği",
x = "Cam Türü", y = "Ba (%)") +
theme_minimal()İki grafik birlikte ele alındığında, Al genel sıralamayı belirleyen, Ba ise Type 7’yi keskin biçimde izole eden bir değişken olarak öne çıkmaktadır. Bu iki elementin modele birlikte katkısı, sınıflandırma doğruluğunu önemli ölçüde artırması beklenen bir etki yaratmaktadır.
ggplot(Glass, aes(x = RI, y = Na, color = Type)) +
geom_point(size = 2, alpha = 0.7) +
labs(title = "Kırılma İndeksi vs Sodyum",
x = "RI", y = "Na") +
theme_minimal()Nokta bulutu incelendiğinde gözlemlerin büyük çoğunluğunun RI: 1.514–1.524 ve Na: 12.5–15.0 bandında yoğunlaştığı görülmektedir. Bu dar bant, cam türlerinin kimyasal bileşim açısından birbirine ne denli yakın olduğunu gözler önüne sermektedir. Grafik aynı zamanda neden multinominal lojistik regresyonun tek bir değişkenle değil, değişken kombinasyonlarıyla çalışması gerektiğini de görsel olarak kanıtlamaktadır.
# En sık görülen kategori (Type 2) referans olarak seç
Glass$Type2 <- relevel(Glass$Type, ref = "2")
levels(Glass$Type2)## [1] "2" "1" "3" "5" "6" "7"
levels(Glass$Type2) çıktısı, kategorilerin artık “2” “1” “3” “5” “6” “7” sırasıyla sıralandığını göstermektedir. relevel() fonksiyonu başarıyla çalışmış ve Type 2 ilk sıraya yani referans kategoriye yerleştirilmiştir.
# Temel model
model1 <- multinom(Type2 ~ RI + Na + Mg + Al + Si + K + Ca + Ba + Fe,
data = Glass, maxit = 500)## # weights: 66 (50 variable)
## initial value 383.436526
## iter 10 value 215.522634
## iter 20 value 171.671859
## iter 30 value 161.064794
## iter 40 value 156.863921
## iter 50 value 154.854479
## iter 60 value 153.744739
## iter 70 value 153.337816
## iter 80 value 151.810705
## iter 90 value 149.290295
## iter 100 value 149.184373
## iter 110 value 149.175236
## iter 120 value 149.157091
## iter 130 value 149.087850
## iter 140 value 148.748674
## iter 150 value 148.387412
## iter 160 value 147.590088
## iter 170 value 147.412758
## iter 180 value 147.146272
## iter 190 value 147.051798
## iter 200 value 146.600700
## iter 210 value 146.481743
## iter 210 value 146.481742
## iter 220 value 146.475956
## iter 230 value 146.404640
## iter 240 value 146.216783
## iter 250 value 146.189947
## iter 260 value 145.705266
## iter 270 value 145.265519
## iter 280 value 145.028075
## iter 290 value 144.928739
## iter 300 value 144.874517
## iter 310 value 144.856843
## iter 320 value 144.852414
## iter 330 value 144.848287
## iter 340 value 144.773068
## iter 350 value 144.702449
## iter 360 value 144.114940
## iter 370 value 143.931708
## iter 380 value 143.612723
## iter 390 value 143.600072
## iter 400 value 143.304149
## iter 410 value 142.782042
## iter 420 value 142.624389
## iter 430 value 142.519614
## iter 440 value 142.465171
## iter 450 value 142.411538
## iter 460 value 142.392121
## iter 470 value 142.319794
## iter 480 value 142.280301
## iter 490 value 141.987435
## iter 500 value 141.537688
## final value 141.537688
## stopped after 500 iterations
# Adımsal model (AIC bazlı değişken seçimi)
model_null <- multinom(Type2 ~ 1, data = Glass, maxit = 500)## # weights: 12 (5 variable)
## initial value 383.436526
## iter 10 value 322.852918
## final value 322.852898
## converged
## Start: AIC=383.08
## Type2 ~ RI + Na + Mg + Al + Si + K + Ca + Ba + Fe
##
## trying - RI
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 215.519838
## iter 20 value 171.741401
## iter 30 value 161.166743
## iter 40 value 157.010400
## iter 50 value 155.079475
## iter 60 value 154.104284
## iter 70 value 153.837519
## iter 80 value 153.143854
## iter 90 value 150.161268
## iter 100 value 149.192479
## iter 110 value 149.103705
## iter 120 value 149.098564
## iter 130 value 149.088914
## iter 140 value 149.083899
## iter 150 value 148.928028
## iter 160 value 148.053797
## iter 170 value 147.354964
## iter 180 value 147.082793
## final value 147.078892
## converged
## trying - Na
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 225.983440
## iter 20 value 180.386707
## iter 30 value 163.597409
## iter 40 value 159.455806
## iter 50 value 156.919952
## iter 60 value 155.905776
## iter 70 value 154.850093
## iter 80 value 154.753377
## iter 90 value 154.340615
## iter 100 value 154.265208
## iter 110 value 154.188547
## iter 120 value 154.104102
## iter 130 value 153.891526
## iter 140 value 153.676929
## iter 150 value 153.369766
## iter 160 value 152.673266
## iter 170 value 151.270132
## iter 180 value 150.221420
## iter 190 value 146.741449
## iter 200 value 146.428844
## iter 210 value 145.388564
## iter 220 value 144.510995
## iter 230 value 144.177092
## iter 240 value 144.050512
## iter 250 value 144.023758
## iter 260 value 144.009290
## iter 270 value 143.884530
## iter 280 value 143.859586
## iter 290 value 143.853847
## iter 300 value 143.827337
## iter 310 value 143.784010
## iter 320 value 143.733247
## iter 330 value 143.711161
## iter 340 value 143.614587
## iter 350 value 143.562809
## iter 360 value 143.235005
## iter 370 value 143.222531
## iter 380 value 143.213387
## iter 390 value 142.953209
## iter 400 value 142.906389
## iter 410 value 142.727576
## iter 420 value 142.672264
## iter 430 value 142.635177
## iter 440 value 142.614976
## iter 450 value 142.540461
## iter 460 value 142.530286
## iter 470 value 142.527458
## iter 480 value 142.456349
## iter 490 value 142.450096
## iter 500 value 142.388904
## final value 142.388904
## stopped after 500 iterations
## trying - Mg
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 237.721763
## iter 20 value 190.671351
## iter 30 value 176.965071
## iter 40 value 165.832730
## iter 50 value 161.638340
## iter 60 value 159.826841
## iter 70 value 157.675960
## iter 80 value 157.039783
## iter 90 value 156.072985
## iter 100 value 156.047318
## iter 110 value 156.013310
## iter 120 value 155.941445
## iter 130 value 155.540320
## iter 140 value 155.498912
## iter 150 value 155.235208
## iter 160 value 155.143780
## iter 170 value 154.632828
## iter 180 value 152.130311
## iter 190 value 148.159323
## iter 200 value 147.682059
## iter 210 value 146.712537
## iter 220 value 146.436562
## iter 230 value 146.275482
## iter 240 value 146.236433
## iter 250 value 146.058022
## iter 260 value 146.028254
## iter 270 value 145.987487
## iter 280 value 145.952863
## iter 290 value 145.950232
## iter 300 value 145.919395
## iter 310 value 145.875095
## iter 320 value 145.829838
## iter 330 value 145.796835
## iter 340 value 145.412808
## iter 350 value 145.057879
## iter 360 value 143.121450
## iter 370 value 141.736454
## iter 380 value 141.539360
## iter 390 value 141.040444
## iter 400 value 140.374015
## iter 410 value 140.294960
## iter 420 value 139.681841
## iter 430 value 139.524165
## iter 440 value 139.429769
## iter 450 value 139.207085
## final value 139.205353
## converged
## trying - Al
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 222.335501
## iter 20 value 184.129629
## iter 30 value 175.845225
## iter 40 value 170.454354
## iter 50 value 167.297792
## iter 60 value 161.811357
## iter 70 value 160.729492
## iter 80 value 155.829786
## iter 90 value 154.959009
## iter 100 value 154.895207
## iter 110 value 154.741832
## iter 120 value 154.582729
## iter 130 value 152.606345
## iter 140 value 152.322481
## iter 150 value 151.939798
## iter 160 value 151.692121
## iter 170 value 149.789588
## iter 180 value 149.213993
## iter 190 value 148.214819
## iter 200 value 147.808313
## iter 210 value 147.628587
## iter 220 value 147.590529
## iter 230 value 147.490318
## iter 240 value 147.376809
## iter 250 value 146.573442
## iter 260 value 146.408628
## iter 270 value 145.497476
## iter 280 value 145.383744
## iter 290 value 145.340736
## iter 300 value 145.301863
## iter 310 value 144.931464
## iter 320 value 144.607006
## iter 330 value 144.560556
## iter 340 value 144.420041
## iter 350 value 144.330580
## iter 360 value 143.884611
## iter 370 value 143.801595
## iter 380 value 143.758242
## iter 390 value 143.747306
## iter 400 value 143.620341
## iter 410 value 143.571533
## iter 420 value 143.434716
## iter 430 value 143.301139
## iter 440 value 143.256250
## iter 450 value 142.874937
## iter 460 value 142.858533
## iter 470 value 142.850914
## iter 480 value 142.834575
## iter 490 value 142.765840
## iter 500 value 142.648412
## final value 142.648412
## stopped after 500 iterations
## trying - Si
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 212.515456
## iter 20 value 173.887797
## iter 30 value 160.680874
## iter 40 value 156.984412
## iter 50 value 155.201996
## iter 60 value 154.915520
## iter 70 value 154.425922
## iter 80 value 153.939912
## iter 90 value 153.478116
## iter 100 value 153.225297
## iter 110 value 153.077113
## iter 120 value 152.963234
## iter 130 value 152.870953
## iter 140 value 152.811450
## iter 150 value 152.794953
## iter 160 value 152.702306
## iter 170 value 152.542012
## iter 180 value 151.502741
## iter 190 value 151.171426
## iter 200 value 150.752491
## iter 210 value 150.496855
## iter 220 value 150.439324
## iter 230 value 150.381329
## iter 240 value 150.343190
## iter 250 value 150.315424
## iter 260 value 150.274450
## iter 270 value 150.091328
## iter 280 value 149.953480
## iter 290 value 149.922662
## iter 300 value 149.897093
## iter 310 value 149.880401
## iter 320 value 149.832946
## iter 330 value 149.704049
## iter 340 value 149.643569
## iter 350 value 149.576919
## iter 360 value 148.948774
## iter 370 value 148.759106
## iter 380 value 148.556009
## iter 390 value 148.286726
## iter 400 value 148.257258
## iter 410 value 148.241351
## iter 420 value 148.216657
## iter 430 value 148.119248
## iter 440 value 148.068623
## iter 450 value 147.917508
## iter 460 value 147.900154
## iter 470 value 147.891599
## iter 480 value 147.863690
## iter 490 value 147.848558
## iter 500 value 147.828190
## final value 147.828190
## stopped after 500 iterations
## trying - K
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 219.650886
## iter 20 value 177.935298
## iter 30 value 170.500872
## iter 40 value 166.985475
## iter 50 value 164.606012
## iter 60 value 163.843101
## iter 70 value 161.257283
## iter 80 value 158.620158
## iter 90 value 157.420784
## iter 100 value 156.079456
## iter 110 value 155.450293
## iter 120 value 155.276128
## iter 130 value 154.751290
## iter 140 value 154.232928
## iter 150 value 153.704375
## iter 160 value 152.902090
## iter 170 value 151.337874
## iter 180 value 148.157073
## iter 190 value 148.002509
## iter 200 value 147.978342
## iter 210 value 147.936411
## iter 220 value 146.863841
## iter 230 value 146.213310
## iter 240 value 146.059480
## iter 250 value 146.031731
## iter 260 value 145.769153
## iter 270 value 145.687203
## iter 280 value 145.292408
## final value 145.292401
## converged
## trying - Ca
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 235.440372
## iter 20 value 177.344078
## iter 30 value 163.951994
## iter 40 value 158.907690
## iter 50 value 156.308545
## iter 60 value 155.378161
## iter 70 value 154.094496
## iter 80 value 153.868715
## iter 90 value 153.213103
## iter 100 value 153.125465
## iter 110 value 153.090232
## iter 120 value 153.058642
## iter 130 value 152.786290
## iter 140 value 152.709628
## iter 150 value 152.453026
## iter 160 value 152.303548
## iter 170 value 151.607649
## iter 180 value 151.115668
## iter 190 value 150.223139
## iter 200 value 150.073500
## iter 210 value 149.644086
## iter 220 value 149.142092
## iter 230 value 148.903402
## iter 240 value 148.859457
## iter 250 value 148.808490
## iter 260 value 148.708348
## iter 270 value 148.680745
## iter 280 value 148.655447
## iter 290 value 148.651281
## iter 300 value 148.603169
## iter 310 value 148.569103
## iter 320 value 148.408149
## iter 330 value 148.372813
## iter 340 value 148.118900
## iter 350 value 147.866996
## iter 360 value 146.722855
## iter 370 value 144.302765
## iter 380 value 144.120638
## iter 390 value 143.318477
## iter 400 value 143.193763
## iter 410 value 143.034070
## iter 420 value 143.019382
## iter 430 value 142.992683
## iter 440 value 142.977858
## iter 450 value 142.899135
## iter 460 value 142.889340
## iter 470 value 142.885139
## iter 480 value 142.877395
## iter 490 value 142.855718
## iter 500 value 142.844611
## final value 142.844611
## stopped after 500 iterations
## trying - Ba
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 217.732572
## iter 20 value 176.503069
## iter 30 value 167.783153
## iter 40 value 162.829755
## iter 50 value 161.198223
## iter 60 value 160.304242
## iter 70 value 157.647246
## iter 80 value 157.422133
## iter 90 value 156.738042
## iter 100 value 155.305523
## iter 110 value 154.816832
## iter 120 value 154.760822
## iter 130 value 154.165286
## iter 140 value 153.797527
## iter 150 value 153.574401
## iter 160 value 150.879062
## iter 170 value 150.527080
## iter 180 value 146.049497
## iter 190 value 146.021969
## iter 200 value 146.009243
## iter 210 value 145.937036
## iter 220 value 143.648358
## iter 230 value 143.157105
## iter 240 value 143.022275
## iter 250 value 142.610644
## iter 260 value 142.144185
## iter 270 value 141.900796
## final value 141.893308
## converged
## trying - Fe
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 215.641612
## iter 20 value 173.214149
## iter 30 value 164.632566
## iter 40 value 161.561554
## iter 50 value 159.496454
## iter 60 value 155.584499
## iter 70 value 152.179463
## iter 80 value 152.081437
## iter 90 value 151.797307
## iter 100 value 151.774812
## iter 110 value 151.734089
## iter 120 value 151.691077
## iter 130 value 151.409245
## iter 140 value 150.449041
## iter 150 value 149.512602
## iter 160 value 149.485820
## iter 170 value 148.753125
## iter 180 value 148.300141
## iter 190 value 146.556332
## iter 200 value 146.315361
## iter 210 value 146.283540
## iter 220 value 146.146932
## iter 230 value 146.072898
## iter 240 value 145.181793
## iter 250 value 144.781463
## iter 260 value 144.766518
## iter 270 value 143.418592
## iter 280 value 143.187782
## iter 290 value 143.179707
## iter 300 value 143.126044
## iter 310 value 142.948439
## iter 320 value 142.866598
## iter 330 value 142.836898
## iter 340 value 142.794995
## iter 350 value 142.543456
## iter 360 value 142.439577
## iter 370 value 142.272862
## iter 380 value 142.263204
## iter 390 value 142.257452
## iter 400 value 142.207669
## iter 410 value 141.900872
## iter 420 value 141.845547
## iter 430 value 141.706034
## iter 440 value 141.504107
## iter 450 value 141.466039
## iter 460 value 141.351531
## iter 470 value 141.310089
## iter 480 value 141.286884
## iter 490 value 141.253594
## iter 500 value 141.242361
## final value 141.242361
## stopped after 500 iterations
## Df AIC
## - Mg 45 368.4107
## - Fe 45 372.4847
## - Ba 45 373.7866
## - Na 45 374.7778
## - Al 45 375.2968
## - Ca 45 375.6892
## - K 45 380.5848
## <none> 50 383.0754
## - RI 45 384.1578
## - Si 45 385.6564
## # weights: 60 (45 variable)
## initial value 383.436526
## iter 10 value 237.721763
## iter 20 value 190.671351
## iter 30 value 176.965071
## iter 40 value 165.832730
## iter 50 value 161.638340
## iter 60 value 159.826841
## iter 70 value 157.675960
## iter 80 value 157.039783
## iter 90 value 156.072985
## iter 100 value 156.047318
## iter 110 value 156.013310
## iter 120 value 155.941445
## iter 130 value 155.540320
## iter 140 value 155.498912
## iter 150 value 155.235208
## iter 160 value 155.143780
## iter 170 value 154.632828
## iter 180 value 152.130311
## iter 190 value 148.159323
## iter 200 value 147.682059
## iter 210 value 146.712537
## iter 220 value 146.436562
## iter 230 value 146.275482
## iter 240 value 146.236433
## iter 250 value 146.058022
## iter 260 value 146.028254
## iter 270 value 145.987487
## iter 280 value 145.952863
## iter 290 value 145.950232
## iter 300 value 145.919395
## iter 310 value 145.875095
## iter 320 value 145.829838
## iter 330 value 145.796835
## iter 340 value 145.412808
## iter 350 value 145.057879
## iter 360 value 143.121450
## iter 370 value 141.736454
## iter 380 value 141.539360
## iter 390 value 141.040444
## iter 400 value 140.374015
## iter 410 value 140.294960
## iter 420 value 139.681841
## iter 430 value 139.524165
## iter 440 value 139.429769
## iter 450 value 139.207085
## final value 139.205353
## converged
##
## Step: AIC=368.41
## Type2 ~ RI + Na + Al + Si + K + Ca + Ba + Fe
##
## trying - RI
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 237.791511
## iter 20 value 191.345527
## iter 30 value 180.776390
## iter 40 value 173.779335
## iter 50 value 169.747241
## iter 60 value 161.300922
## iter 70 value 159.126714
## iter 80 value 158.724750
## iter 90 value 158.558632
## iter 100 value 158.391606
## iter 110 value 157.500160
## iter 120 value 156.749878
## iter 130 value 156.359444
## iter 140 value 155.796896
## iter 150 value 155.492627
## iter 160 value 154.680912
## final value 154.678851
## converged
## trying - Na
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 256.662432
## iter 20 value 195.409149
## iter 30 value 183.438462
## iter 40 value 179.333224
## iter 50 value 175.556608
## iter 60 value 174.694081
## iter 70 value 174.551499
## iter 80 value 174.279329
## iter 90 value 174.261958
## iter 100 value 174.199608
## iter 110 value 174.127024
## iter 120 value 173.974913
## iter 130 value 173.833624
## iter 140 value 173.634763
## iter 150 value 170.012755
## iter 160 value 167.640548
## iter 170 value 166.509425
## final value 166.509416
## converged
## trying - Al
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 264.767668
## iter 20 value 229.380140
## iter 30 value 209.748387
## iter 40 value 200.824423
## iter 50 value 193.224513
## iter 60 value 191.623346
## iter 70 value 190.964971
## iter 80 value 189.537030
## iter 90 value 189.431530
## iter 100 value 189.389918
## iter 110 value 188.765409
## iter 120 value 188.575830
## iter 130 value 188.030544
## iter 140 value 187.780013
## iter 150 value 186.684700
## iter 160 value 179.601858
## iter 170 value 179.577277
## iter 180 value 179.504523
## iter 190 value 177.962159
## iter 200 value 177.856641
## iter 210 value 177.406335
## iter 220 value 177.301749
## iter 230 value 177.080387
## iter 240 value 176.907638
## iter 250 value 176.880983
## iter 260 value 176.876015
## iter 270 value 176.854627
## iter 280 value 176.782847
## iter 290 value 176.756657
## iter 300 value 176.733131
## iter 310 value 176.540553
## iter 320 value 176.047897
## iter 330 value 176.011561
## iter 340 value 176.005007
## iter 350 value 175.874574
## iter 360 value 175.818609
## iter 370 value 175.682095
## iter 380 value 175.650596
## iter 390 value 175.595078
## iter 400 value 175.445931
## iter 410 value 175.367933
## iter 420 value 175.353490
## iter 430 value 175.349207
## iter 440 value 175.330308
## iter 450 value 175.312367
## iter 460 value 175.285205
## iter 470 value 175.098249
## iter 480 value 174.989438
## iter 490 value 173.448307
## iter 500 value 173.438933
## final value 173.438933
## stopped after 500 iterations
## trying - Si
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 247.428033
## iter 20 value 183.933799
## iter 30 value 173.596732
## iter 40 value 171.647072
## iter 50 value 170.210199
## iter 60 value 169.369872
## iter 70 value 168.171492
## iter 80 value 166.543210
## iter 90 value 166.142509
## iter 100 value 165.478110
## iter 110 value 165.315727
## iter 120 value 165.307500
## iter 130 value 165.301974
## iter 140 value 165.193922
## iter 150 value 165.011465
## iter 160 value 164.919359
## iter 170 value 164.860143
## iter 180 value 164.811750
## iter 190 value 164.799833
## iter 200 value 164.765659
## iter 210 value 164.732969
## iter 220 value 164.699812
## iter 230 value 164.691383
## iter 240 value 164.689598
## final value 164.683302
## converged
## trying - K
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 239.548959
## iter 20 value 201.800693
## iter 30 value 189.018444
## iter 40 value 177.474517
## iter 50 value 174.536678
## iter 60 value 171.603520
## iter 70 value 169.846380
## iter 80 value 167.481145
## iter 90 value 167.112161
## iter 100 value 167.063802
## iter 110 value 166.860481
## iter 120 value 166.576375
## iter 130 value 166.450335
## iter 140 value 166.358202
## iter 150 value 166.160016
## iter 160 value 163.209562
## iter 170 value 163.122897
## iter 180 value 163.093308
## iter 190 value 162.850074
## iter 200 value 162.616130
## iter 210 value 162.232872
## iter 220 value 162.051086
## iter 230 value 160.784787
## iter 240 value 160.656211
## iter 250 value 160.625540
## iter 250 value 160.625539
## final value 160.625529
## converged
## trying - Ca
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 246.976002
## iter 20 value 204.527300
## iter 30 value 193.671153
## iter 40 value 188.216472
## iter 50 value 184.198387
## iter 60 value 182.813160
## iter 70 value 181.834672
## iter 80 value 181.351906
## iter 90 value 180.927812
## iter 100 value 180.732818
## iter 110 value 180.568183
## iter 120 value 180.247965
## iter 130 value 179.725925
## iter 140 value 179.369917
## iter 150 value 178.422984
## iter 160 value 171.427747
## iter 170 value 171.292290
## iter 180 value 170.378351
## iter 190 value 167.829104
## iter 200 value 167.634925
## iter 210 value 167.245502
## iter 220 value 167.143144
## iter 230 value 166.964509
## iter 240 value 166.184626
## iter 250 value 166.075550
## iter 260 value 165.489637
## iter 270 value 165.420787
## iter 280 value 165.219121
## iter 290 value 165.159151
## iter 300 value 165.062403
## iter 310 value 164.528208
## iter 320 value 164.031397
## iter 330 value 163.930389
## iter 340 value 163.759039
## iter 350 value 163.358277
## iter 360 value 163.055207
## iter 370 value 162.951026
## iter 380 value 162.722199
## iter 390 value 162.625261
## iter 400 value 161.566410
## iter 410 value 160.187619
## iter 420 value 159.752358
## iter 430 value 158.718387
## iter 440 value 158.210521
## iter 450 value 157.958939
## iter 460 value 157.925281
## iter 470 value 157.816367
## iter 480 value 157.665509
## iter 490 value 157.395409
## iter 500 value 157.341537
## final value 157.341537
## stopped after 500 iterations
## trying - Ba
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 246.499045
## iter 20 value 203.647954
## iter 30 value 189.296308
## iter 40 value 176.022920
## iter 50 value 172.785585
## iter 60 value 169.673973
## iter 70 value 168.641066
## iter 80 value 168.175255
## iter 90 value 168.160477
## iter 100 value 168.139067
## iter 110 value 167.828025
## iter 120 value 167.769327
## iter 130 value 167.444099
## iter 140 value 167.259312
## iter 150 value 166.785920
## iter 160 value 164.804543
## final value 164.772056
## converged
## trying - Fe
## # weights: 54 (40 variable)
## initial value 383.436526
## iter 10 value 237.844242
## iter 20 value 193.148413
## iter 30 value 180.705758
## iter 40 value 164.781019
## iter 50 value 162.547125
## iter 60 value 160.818558
## iter 70 value 159.972891
## iter 80 value 158.838939
## iter 90 value 158.769854
## iter 100 value 158.729982
## iter 110 value 158.655797
## iter 120 value 158.316391
## iter 130 value 158.218717
## iter 140 value 157.967523
## iter 150 value 155.884672
## iter 160 value 154.873439
## iter 170 value 153.125625
## iter 180 value 152.946495
## iter 190 value 152.121546
## iter 200 value 151.859952
## iter 210 value 151.277250
## iter 220 value 151.146240
## iter 230 value 151.035318
## iter 240 value 151.018915
## iter 250 value 150.905237
## iter 260 value 150.902054
## iter 270 value 150.833945
## iter 280 value 150.814203
## iter 290 value 150.781928
## iter 300 value 150.618499
## iter 310 value 150.567783
## iter 320 value 150.363248
## iter 330 value 150.269735
## iter 340 value 150.244301
## iter 350 value 150.118308
## iter 360 value 150.055680
## iter 370 value 149.971873
## iter 380 value 149.912503
## iter 390 value 149.866795
## iter 400 value 149.532487
## iter 410 value 149.453098
## iter 420 value 149.441262
## iter 430 value 149.406237
## iter 440 value 149.303424
## iter 450 value 149.214612
## iter 460 value 149.156403
## iter 470 value 149.143727
## iter 480 value 149.011280
## final value 148.936679
## converged
## Df AIC
## <none> 45 368.4107
## - Fe 40 377.8734
## - RI 40 389.3577
## - Ca 40 394.6831
## - K 40 401.2511
## - Si 40 409.3666
## - Ba 40 409.5441
## - Na 40 413.0188
## - Al 40 426.8779
## Call:
## multinom(formula = Type2 ~ RI + Na + Mg + Al + Si + K + Ca +
## Ba + Fe, data = Glass, maxit = 500)
##
## Coefficients:
## (Intercept) RI Na Mg Al Si
## 1 -415.99919 -167.08177 5.881057 8.376540 2.4658285 6.8424893
## 3 651.66849 -557.80584 2.538176 3.864543 -0.2959643 1.6316886
## 5 152.07360 34.04977 -2.994261 -3.989452 4.6163308 -1.9517233
## 6 -19.43813 -29.19078 25.080310 -17.188187 44.0924141 -1.2386517
## 7 -483.40668 269.21966 2.034348 -3.071133 3.2277167 0.9444326
## K Ca Ba Fe
## 1 6.1081813 6.877369 7.667502 -1.430038
## 3 0.1524141 3.315184 1.529108 -2.080106
## 5 -1.9592854 -2.282466 -4.125485 -7.584702
## 6 -249.6234920 -20.012065 -276.827750 -553.021324
## 7 -0.5982339 -2.290747 -1.072198 -24.407336
##
## Std. Errors:
## (Intercept) RI Na Mg Al Si
## 1 0.033903245 0.054727003 0.50940012 0.717237060 1.190534939 0.1293415
## 3 0.052284273 0.085877061 0.66601852 0.869099654 1.494971766 0.1676925
## 5 0.036333969 0.072522084 0.58771258 0.809324590 2.128155352 0.1743160
## 6 0.004373466 0.006643679 0.06049235 0.007839935 0.004690912 0.3200136
## 7 0.030477612 0.052267616 0.86604801 0.894615834 1.712834385 0.1763879
## K Ca Ba Fe
## 1 1.713323e+00 0.45734640 2.4055372386 2.105362e+00
## 3 2.232834e+00 0.57384855 4.3924133537 2.963871e+00
## 5 1.613888e+00 0.62290346 1.0112595066 4.088741e+00
## 6 2.622420e-06 0.04421153 0.0003230753 5.190840e-10
## 7 1.494351e+00 0.83547459 1.5162403671 8.894269e-02
##
## Residual Deviance: 283.0754
## AIC: 383.0754
## Call:
## multinom(formula = Type2 ~ RI + Na + Al + Si + K + Ca + Ba +
## Fe, data = Glass, maxit = 500)
##
## Coefficients:
## (Intercept) RI Na Al Si K
## 1 167.6987 -45.31065 -1.5694594 -5.619486 -0.8072653 -1.872352
## 3 1909.1870 -1080.18884 -1.5334776 -4.849690 -3.3507893 -4.344899
## 5 179.0702 -232.20003 0.8260273 7.731410 1.7718149 1.832209
## 6 -508.5268 -837.10141 39.1188154 71.364089 15.3882444 -394.387664
## 7 -1705.3713 821.03780 5.3885538 6.789217 5.1249653 2.125078
## Ca Ba Fe
## 1 -1.28209486 0.3157369 -3.114550
## 3 0.15758407 -1.6302102 -3.596981
## 5 1.94008019 0.1586387 -3.743536
## 6 4.66238322 -365.9121552 -139.198561
## 7 -0.02524386 2.2478751 -29.701509
##
## Std. Errors:
## (Intercept) RI Na Al Si K
## 1 0.030441147 0.048846878 0.43545320 1.113330697 0.1148634 1.636673e+00
## 3 0.041837992 0.068504389 0.64509040 1.407167943 0.1544955 2.216272e+00
## 5 0.045350391 0.063579773 0.56948104 2.153683336 0.1328806 1.824513e+00
## 6 0.005157714 0.007831495 0.07095717 0.003469225 0.3823473 4.843524e-06
## 7 0.024448610 0.039532078 0.81813467 1.528241001 0.1662220 1.753019e+00
## Ca Ba Fe
## 1 0.30143818 1.940820e+00 1.990543e+00
## 3 0.42079007 4.141456e+00 3.322302e+00
## 5 0.37941839 1.063745e+00 3.871095e+00
## 6 0.05557059 6.316873e-15 3.632643e-06
## 7 0.49900994 1.590792e+00 3.014781e-02
##
## Residual Deviance: 278.4107
## AIC: 368.4107
Adımsal seçim sonucunda Mg modelden çıkarılmıştır. Model 2’nin AIC değeri daha düşük olduğundan Model 2 daha iyi uyum sağlamaktadır. Mg’nin çıkarılması modeli hem sadeleştirmiş hem de uyumu iyileştirmiştir.
# Model 1
z1 <- summary(model1)$coefficients / summary(model1)$standard.errors
p1 <- (1 - pnorm(abs(z1), 0, 1)) * 2
cat("=== Z İstatistikleri (Model 1) ===\n"); print(round(z1, 3))## === Z İstatistikleri (Model 1) ===
## (Intercept) RI Na Mg Al Si K
## 1 -12270.188 -3053.004 11.545 11.679 2.071 52.902 3.565
## 3 12463.949 -6495.400 3.811 4.447 -0.198 9.730 0.068
## 5 4185.439 469.509 -5.095 -4.929 2.169 -11.196 -1.214
## 6 -4444.561 -4393.768 414.603 -2192.389 9399.540 -3.871 -95188228.390
## 7 -15861.042 5150.793 2.349 -3.433 1.884 5.354 -0.400
## Ca Ba Fe
## 1 15.038 3.187 -6.790000e-01
## 3 5.777 0.348 -7.020000e-01
## 5 -3.664 -4.080 -1.855000e+00
## 6 -452.644 -856851.993 -1.065379e+12
## 7 -2.742 -0.707 -2.744160e+02
##
## === p Değerleri (Model 1) ===
## (Intercept) RI Na Mg Al Si K Ca Ba Fe
## 1 0 0 0.000 0.000 0.038 0 0.000 0.000 0.001 0.497
## 3 0 0 0.000 0.000 0.843 0 0.946 0.000 0.728 0.483
## 5 0 0 0.000 0.000 0.030 0 0.225 0.000 0.000 0.064
## 6 0 0 0.000 0.000 0.000 0 0.000 0.000 0.000 0.000
## 7 0 0 0.019 0.001 0.060 0 0.689 0.006 0.479 0.000
# Model 2
z2 <- summary(model2)$coefficients / summary(model2)$standard.errors
p2 <- (1 - pnorm(abs(z2), 0, 1)) * 2
cat("=== Z İstatistikleri (Model 2) ===\n"); print(round(z2, 3))## === Z İstatistikleri (Model 2) ===
## (Intercept) RI Na Al Si K Ca
## 1 5508.947 -927.606 -3.604 -5.047 -7.028 -1.144 -4.253
## 3 45632.853 -15768.170 -2.377 -3.446 -21.689 -1.960 0.374
## 5 3948.592 -3652.105 1.450 3.590 13.334 1.004 5.113
## 6 -98595.391 -106889.091 551.302 20570.615 40.247 -81425764.099 83.900
## 7 -69753.304 20768.901 6.586 4.443 30.832 1.212 -0.051
## Ba Fe
## 1 1.630000e-01 -1.565
## 3 -3.940000e-01 -1.083
## 5 1.490000e-01 -0.967
## 6 -5.792615e+16 -38318816.446
## 7 1.413000e+00 -985.196
##
## === p Değerleri (Model 2) ===
## (Intercept) RI Na Al Si K Ca Ba Fe
## 1 0 0 0.000 0.000 0 0.253 0.000 0.871 0.118
## 3 0 0 0.017 0.001 0 0.050 0.708 0.694 0.279
## 5 0 0 0.147 0.000 0 0.315 0.000 0.881 0.334
## 6 0 0 0.000 0.000 0 0.000 0.000 0.000 0.000
## 7 0 0 0.000 0.000 0 0.225 0.960 0.158 0.000
Model 2, Mg olmaksızın da güçlü ve anlamlı sonuçlar üretmektedir. Düşük AIC ile birleştirildiğinde Model 2 hem daha iyi uyum hem de daha anlamlı katsayılar sunmaktadır. Type 6 satırındaki sayısal kararsızlık her iki modelde de mevcuttur ve bu kategoriye ilişkin yorumlar bulgular bölümünde açıkça sınırlandırılmalıdır.
## === Odds Ratios ===
## (Intercept) RI Na Al Si K Ca Ba
## 1 6.770273e+72 0 2.08000e-01 4.000000e-03 0.446 0.154 0.277 1.371
## 3 Inf 0 2.16000e-01 8.000000e-03 0.035 0.013 1.171 0.196
## 5 5.877497e+77 0 2.28400e+00 2.278813e+03 5.882 6.248 6.959 1.172
## 6 0.000000e+00 0 9.75182e+16 9.840795e+30 4819806.876 0.000 105.888 0.000
## 7 0.000000e+00 Inf 2.18887e+02 8.882170e+02 168.168 8.374 0.975 9.468
## Fe
## 1 0.044
## 3 0.027
## 5 0.024
## 6 0.000
## 7 0.000
##
## === %95 Güven Aralıkları ===
## , , 1
##
## 2.5 % 97.5 %
## (Intercept) 6.378149e+72 7.186505e+72
## RI 0.000000e+00 0.000000e+00
## Na 8.900000e-02 4.890000e-01
## Al 0.000000e+00 3.200000e-02
## Si 3.560000e-01 5.590000e-01
## K 6.000000e-03 3.802000e+00
## Ca 1.540000e-01 5.010000e-01
## Ba 3.100000e-02 6.153900e+01
## Fe 1.000000e-03 2.196000e+00
##
## , , 3
##
## 2.5 % 97.5 %
## (Intercept) Inf Inf
## RI 0.000 0.000
## Na 0.061 0.764
## Al 0.000 0.123
## Si 0.026 0.047
## K 0.000 0.999
## Ca 0.513 2.671
## Ba 0.000 656.481
## Fe 0.000 18.442
##
## , , 5
##
## 2.5 % 97.5 %
## (Intercept) 5.37762e+77 6.423840e+77
## RI 0.00000e+00 0.000000e+00
## Na 7.48000e-01 6.974000e+00
## Al 3.34570e+01 1.552127e+05
## Si 4.53300e+00 7.631000e+00
## K 1.75000e-01 2.232270e+02
## Ca 3.30800e+00 1.464000e+01
## Ba 1.46000e-01 9.427000e+00
## Fe 0.00000e+00 4.669700e+01
##
## , , 6
##
## 2.5 % 97.5 %
## (Intercept) 0.000000e+00 0.000000e+00
## RI 0.000000e+00 0.000000e+00
## Na 8.485683e+16 1.120687e+17
## Al 9.774109e+30 9.907936e+30
## Si 2.278112e+06 1.019728e+07
## K 0.000000e+00 0.000000e+00
## Ca 9.496100e+01 1.180730e+02
## Ba 0.000000e+00 0.000000e+00
## Fe 0.000000e+00 0.000000e+00
##
## , , 7
##
## 2.5 % 97.5 %
## (Intercept) 0.000 0.000
## RI Inf Inf
## Na 44.037 1087.969
## Al 44.430 17756.625
## Si 121.410 232.934
## K 0.270 260.065
## Ca 0.367 2.593
## Ba 0.419 213.956
## Fe 0.000 0.000
Güven aralığı dar ve OR büyük olan tek kategori Type 7’dir. Bu nedenle model yorumunun odak noktası Type 7 olmalıdır. Type 5 Al etkisi dikkat çekici olmakla birlikte CI genişliği nedeniyle destekleyici bir bulgu olarak sunulmalıdır. Type 3 ve Type 6 için katsayılar ihtiyatla yorumlanmalı, az gözlem kaynaklı kararsızlık raporlamada açıkça ifade edilmelidir.
## 'log Lik.' -141.5377 (df=50)
## 'log Lik.' -139.2054 (df=45)
Log-likelihood değeri modelin veriye ne kadar iyi uyduğunu gösterir. Sıfıra yakın (daha az negatif) değer daha iyi uyumu ifade eder. Model 2’nin log-likelihood değeri (−139.205), Model 1’inkinden (−141.538) daha az negatiftir. Bu fark küçük görünse de 5 daha az serbestlik derecesiyle elde edilmiştir. Model 2, Mg’yi çıkararak hem daha sade hem de daha iyi uyumlu bir model ortaya koymuştur.
## df AIC
## model_null 5 655.7058
## model1 50 383.0754
## model2 45 368.4107
## df BIC
## model_null 5 672.5357
## model1 50 551.3742
## model2 45 519.8796
Model 2, Model 1’e kıyasla 14.7 birimlik ek iyileşme sağlamıştır. AIC farkı için yaygın kabul gören eşik değeri 10’dur. Bu eşiğin aşılması Model 2’nin Model 1’e karşı anlamlı biçimde üstün olduğunu göstermektedir. Mg değişkeninin çıkarılması modeli hem sadeleştirmiş hem de uyumu iyileştirmiştir.
Null modelden Model 1’e geçişte 121.2 birimlik büyük düşüş gözlemlenmektedir. Model 1’den Model 2’ye geçişte ise 31.5 birimlik ek iyileşme elde edilmiştir. BIC farkı için 10 üzeri değerler güçlü kanıt olarak kabul edilmektedir. 31.5 birimlik fark Model 2 lehine çok güçlü bir kanıt sunmaktadır.
Her iki kriter de aynı sonuca işaret etmektedir. Model 2 en iyi modeldir. AIC ve BIC’nin aynı yönde karar vermesi, Mg’nin modelden çıkarılmasının rastlantısal değil, istatistiksel açıdan sağlam bir karar olduğunu güçlü biçimde desteklemektedir.
McFadden1 <- 1 - (logLik(model1) / logLik(model_null))
McFadden2 <- 1 - (logLik(model2) / logLik(model_null))
cat("McFadden R² — Model 1:", round(McFadden1, 3), "\n")## McFadden R² — Model 1: 0.562
## McFadden R² — Model 2: 0.569
AIC, BIC ve McFadden R² üçü birden Model 2 lehine tutarlı karar vermektedir. Bu üç kriterin aynı yönde işaret etmesi, Model 2’nin hem istatistiksel açıdan üstün hem de yorumsal açıdan daha sade bir model olduğunu güçlü biçimde doğrulamaktadır.
## Likelihood ratio tests of Multinomial Models
##
## Response: Type2
## Model Resid. df Resid. Dev Test Df
## 1 RI + Na + Al + Si + K + Ca + Ba + Fe 1025 278.4107
## 2 RI + Na + Mg + Al + Si + K + Ca + Ba + Fe 1020 283.0754 1 vs 2 5
## LR stat. Pr(Chi)
## 1
## 2 -4.66467 1
LR testi, AIC, BIC ve McFadden R² bulgularıyla tam anlamıyla örtüşmektedir. Dört kriter birden aynı sonuca ulaşmaktadır. Mg’nin modele katkısı istatistiksel açıdan anlamsızdır ve Model 2 tercih edilmelidir. Mg çıkarılarak hem model sadeleştirilmiş hem de uyum iyileştirilmiştir.
# Sınıf ve olasılık tahmini
Glass$predicted_class <- predict(model2, newdata = Glass, type = "class")
Glass$predicted_probs <- predict(model2, newdata = Glass, type = "probs")
# Olasılıkları görüntüle
head(Glass$predicted_probs)## 2 1 3 5 6 7
## 1 0.1048661 0.7122045 0.18288285 4.437645e-06 1.517825e-22 4.211706e-05
## 2 0.4733408 0.4043814 0.03627922 7.894107e-04 8.424441e-76 8.520920e-02
## 3 0.5404950 0.3224821 0.08645718 4.578174e-03 1.040610e-58 4.598755e-02
## 4 0.2951988 0.6120818 0.09181942 3.281679e-04 3.570311e-105 5.717515e-04
## 5 0.3033112 0.6598445 0.03134469 4.217663e-04 2.422868e-99 5.077817e-03
## 6 0.7620140 0.1826923 0.04836826 6.924296e-03 1.173773e-126 1.166074e-06
# Confusion Matrix
conf_mat <- table(Gerçek = Glass$Type2, Tahmin = Glass$predicted_class)
print(conf_mat)## Tahmin
## Gerçek 2 1 3 5 6 7
## 2 56 17 0 1 0 2
## 1 21 46 3 0 0 0
## 3 5 11 1 0 0 0
## 5 3 0 0 10 0 0
## 6 0 0 0 0 9 0
## 7 1 0 0 0 0 28
# Genel doğruluk
accuracy <- sum(diag(conf_mat)) / sum(conf_mat)
cat("Doğruluk (Accuracy):", round(accuracy * 100, 1), "%\n")## Doğruluk (Accuracy): 70.1 %
# Model 2, eğitim verisi üzerinde %70.1 genel doğruluk elde etmiştir. Yani 214 cam örneğinin 150'si doğru sınıflandırılmış, 64'ü yanlış sınıflandırılmıştır.
# caret ile sınıf bazlı metrikler
confusionMatrix(Glass$predicted_class, Glass$Type2)## Confusion Matrix and Statistics
##
## Reference
## Prediction 2 1 3 5 6 7
## 2 56 21 5 3 0 1
## 1 17 46 11 0 0 0
## 3 0 3 1 0 0 0
## 5 1 0 0 10 0 0
## 6 0 0 0 0 9 0
## 7 2 0 0 0 0 28
##
## Overall Statistics
##
## Accuracy : 0.7009
## 95% CI : (0.6348, 0.7614)
## No Information Rate : 0.3551
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.5839
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 2 Class: 1 Class: 3 Class: 5 Class: 6 Class: 7
## Sensitivity 0.7368 0.6571 0.058824 0.76923 1.00000 0.9655
## Specificity 0.7826 0.8056 0.984772 0.99502 1.00000 0.9892
## Pos Pred Value 0.6512 0.6216 0.250000 0.90909 1.00000 0.9333
## Neg Pred Value 0.8438 0.8286 0.923810 0.98522 1.00000 0.9946
## Prevalence 0.3551 0.3271 0.079439 0.06075 0.04206 0.1355
## Detection Rate 0.2617 0.2150 0.004673 0.04673 0.04206 0.1308
## Detection Prevalence 0.4019 0.3458 0.018692 0.05140 0.04206 0.1402
## Balanced Accuracy 0.7597 0.7313 0.521798 0.88213 1.00000 0.9774
library(effects)
# Modelde kalanların grafik çizimleri
# Al etkisi (cam türleri arasında en ayırt edici)
plot(Effect("Al", model2),
multiline = TRUE,
main = "Alüminyum İçeriğinin Cam Türüne Etkisi",
ylab = "Olasılık",
xlab = "Al (%)")# Ba etkisi
plot(Effect("Ba", model2),
multiline = TRUE,
main = "Baryum İçeriğinin Cam Türüne Etkisi")Her üç grafik farklı bir kimyasal boyutu temsil etmekte ve birbirini tamamlamaktadır. Al geniş bir spektrumda kademeli bir geçiş sağlarken Ba keskin ve tek odaklı bir ayrıştırma yapmakta, RI ise dar ama güçlü bir aralıkta sıralı bir geçiş sunmaktadır. Bu üç değişkenin modelde bir arada bulunması, farklı cam türlerinin farklı kimyasal boyutlarda tanımlanmasına olanak sağlamakta ve modelin %70.1 doğruluk oranını destekleyen temel mekanizmayı oluşturmaktadır.
# Örnek: 3 farklı cam profili
yeni_cam <- data.frame(
RI = c(1.516, 1.520, 1.510),
Na = c(13.0, 12.5, 14.0),
Mg = c(3.5, 0.0, 0.8),
Al = c(1.2, 2.0, 1.8),
Si = c(72.0, 71.5, 73.0),
K = c(0.5, 0.8, 0.4),
Ca = c(8.9, 9.5, 7.5),
Ba = c(0.0, 0.5, 0.2),
Fe = c(0.0, 0.1, 0.1)
)
# Tahmin
predict(model2, newdata = yeni_cam, type = "class")## [1] 3 2 3
## Levels: 2 1 3 5 6 7
## 2 1 3 5 6 7
## 1 0.01941606 0.07806528 0.90250374 1.485489e-05 8.073049e-103 6.262800e-08
## 2 0.82865109 0.02306291 0.01120965 1.370514e-01 2.344668e-225 2.498023e-05
## 3 0.11028937 0.01050509 0.86037133 1.845823e-02 3.765689e-81 3.759831e-04
set.seed(42)
train_idx <- createDataPartition(Glass$Type2, p = 0.75, list = FALSE)
train_data <- Glass[train_idx, c(1:9, 11)] # Type2 dahil
test_data <- Glass[-train_idx, c(1:9, 11)]
# Modeli train ile kur
model_train <- multinom(Type2 ~ ., data = train_data, maxit = 500)## # weights: 66 (50 variable)
## initial value 290.265034
## iter 10 value 163.684520
## iter 20 value 124.542729
## iter 30 value 117.898595
## iter 40 value 116.549278
## iter 50 value 115.401446
## iter 60 value 115.072736
## iter 70 value 114.937519
## iter 80 value 114.614116
## iter 90 value 113.501488
## iter 100 value 111.900785
## iter 110 value 111.282176
## iter 120 value 110.963896
## iter 130 value 110.776782
## iter 140 value 110.193499
## iter 150 value 108.676816
## iter 160 value 108.418274
## iter 170 value 108.386713
## iter 180 value 108.351755
## iter 190 value 108.203638
## iter 200 value 107.984734
## iter 210 value 107.240919
## iter 220 value 107.131587
## iter 230 value 107.102788
## iter 240 value 107.054532
## iter 250 value 107.015458
## iter 260 value 106.964375
## iter 270 value 106.742858
## iter 280 value 106.483621
## iter 290 value 106.351532
## iter 300 value 105.684007
## iter 310 value 105.487351
## iter 320 value 105.469271
## iter 330 value 105.402178
## iter 340 value 105.286989
## iter 350 value 105.270361
## iter 360 value 105.169172
## iter 370 value 105.040316
## iter 380 value 105.010753
## iter 390 value 104.950510
## iter 400 value 104.935247
## iter 410 value 104.790188
## iter 420 value 104.617139
## iter 430 value 104.606930
## iter 440 value 104.593254
## iter 450 value 104.540577
## iter 460 value 104.404474
## iter 470 value 103.730536
## iter 480 value 102.599663
## iter 490 value 102.362841
## iter 500 value 101.791029
## final value 101.791029
## stopped after 500 iterations
# Test seti tahmini
test_pred <- predict(model_train, newdata = test_data, type = "class")
# Test seti confusion matrix
confusionMatrix(test_pred, test_data$Type2)## Confusion Matrix and Statistics
##
## Reference
## Prediction 2 1 3 5 6 7
## 2 13 3 2 1 0 1
## 1 4 12 1 0 0 0
## 3 2 2 1 0 0 0
## 5 0 0 0 2 0 0
## 6 0 0 0 0 2 0
## 7 0 0 0 0 0 6
##
## Overall Statistics
##
## Accuracy : 0.6923
## 95% CI : (0.549, 0.8128)
## No Information Rate : 0.3654
## P-Value [Acc > NIR] : 1.719e-06
##
## Kappa : 0.5762
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: 2 Class: 1 Class: 3 Class: 5 Class: 6 Class: 7
## Sensitivity 0.6842 0.7059 0.25000 0.66667 1.00000 0.8571
## Specificity 0.7879 0.8571 0.91667 1.00000 1.00000 1.0000
## Pos Pred Value 0.6500 0.7059 0.20000 1.00000 1.00000 1.0000
## Neg Pred Value 0.8125 0.8571 0.93617 0.98000 1.00000 0.9783
## Prevalence 0.3654 0.3269 0.07692 0.05769 0.03846 0.1346
## Detection Rate 0.2500 0.2308 0.01923 0.03846 0.03846 0.1154
## Detection Prevalence 0.3846 0.3269 0.09615 0.03846 0.03846 0.1154
## Balanced Accuracy 0.7360 0.7815 0.58333 0.83333 1.00000 0.9286
stargazer(model1, model2,
type = "text",
title = "Glass Veri Seti — Multinominal Lojistik Regresyon",
ci = TRUE,
digits = 3)##
## Glass Veri Seti — Multinominal Lojistik Regresyon
## =======================================================================================================================================================================================================================================
## Dependent variable:
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
## 1 3 5 6 7 1 3 5 6 7
## (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
## RI -167.082*** -557.806*** 34.050*** -29.191*** 269.220*** -45.311*** -1,080.189*** -232.200*** -837.101*** 821.038***
## (-167.189, -166.975) (-557.974, -557.638) (33.908, 34.192) (-29.204, -29.178) (269.117, 269.322) (-45.406, -45.215) (-1,080.323, -1,080.055) (-232.325, -232.075) (-837.117, -837.086) (820.960, 821.115)
##
## Na 5.881*** 2.538*** -2.994*** 25.080*** 2.034** -1.569*** -1.533** 0.826 39.119*** 5.389***
## (4.883, 6.879) (1.233, 3.844) (-4.146, -1.842) (24.962, 25.199) (0.337, 3.732) (-2.423, -0.716) (-2.798, -0.269) (-0.290, 1.942) (38.980, 39.258) (3.785, 6.992)
##
## Mg 8.377*** 3.865*** -3.989*** -17.188*** -3.071***
## (6.971, 9.782) (2.161, 5.568) (-5.576, -2.403) (-17.204, -17.173) (-4.825, -1.318)
##
## Al 2.466** -0.296 4.616** 44.092*** 3.228* -5.619*** -4.850*** 7.731*** 71.364*** 6.789***
## (0.132, 4.799) (-3.226, 2.634) (0.445, 8.787) (44.083, 44.102) (-0.129, 6.585) (-7.802, -3.437) (-7.608, -2.092) (3.510, 11.953) (71.357, 71.371) (3.794, 9.785)
##
## Si 6.842*** 1.632*** -1.952*** -1.239*** 0.944*** -0.807*** -3.351*** 1.772*** 15.388*** 5.125***
## (6.589, 7.096) (1.303, 1.960) (-2.293, -1.610) (-1.866, -0.611) (0.599, 1.290) (-1.032, -0.582) (-3.654, -3.048) (1.511, 2.032) (14.639, 16.138) (4.799, 5.451)
##
## K 6.108*** 0.152 -1.959 -249.623*** -0.598 -1.872 -4.345** 1.832 -394.388*** 2.125
## (2.750, 9.466) (-4.224, 4.529) (-5.122, 1.204) (-249.623, -249.623) (-3.527, 2.331) (-5.080, 1.335) (-8.689, -0.001) (-1.744, 5.408) (-394.388, -394.388) (-1.311, 5.561)
##
## Ca 6.877*** 3.315*** -2.282*** -20.012*** -2.291*** -1.282*** 0.158 1.940*** 4.662*** -0.025
## (5.981, 7.774) (2.190, 4.440) (-3.503, -1.062) (-20.099, -19.925) (-3.928, -0.653) (-1.873, -0.691) (-0.667, 0.982) (1.196, 2.684) (4.553, 4.771) (-1.003, 0.953)
##
## Ba 7.668*** 1.529 -4.125*** -276.828*** -1.072 0.316 -1.630 0.159 -365.912*** 2.248
## (2.953, 12.382) (-7.080, 10.138) (-6.108, -2.143) (-276.828, -276.827) (-4.044, 1.900) (-3.488, 4.120) (-9.747, 6.487) (-1.926, 2.244) (-365.912, -365.912) (-0.870, 5.366)
##
## Fe -1.430 -2.080 -7.585* -553.021*** -24.407*** -3.115 -3.597 -3.744 -139.199*** -29.702***
## (-5.556, 2.696) (-7.889, 3.729) (-15.598, 0.429) (-553.021, -553.021) (-24.582, -24.233) (-7.016, 0.787) (-10.109, 2.915) (-11.331, 3.844) (-139.199, -139.199) (-29.761, -29.642)
##
## Constant -415.999*** 651.668*** 152.074*** -19.438*** -483.407*** 167.699*** 1,909.187*** 179.070*** -508.527*** -1,705.371***
## (-416.066, -415.933) (651.566, 651.771) (152.002, 152.145) (-19.447, -19.430) (-483.466, -483.347) (167.639, 167.758) (1,909.105, 1,909.269) (178.981, 179.159) (-508.537, -508.517) (-1,705.419, -1,705.323)
##
## ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
## Akaike Inf. Crit. 383.075 383.075 383.075 383.075 383.075 368.411 368.411 368.411 368.411 368.411
## =======================================================================================================================================================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Tablonun alt kısmında yer alan AIC değerleri tüm kategoriler için tutarlı biçimde raporlanmaktadır. Model 1 için 383.075, Model 2 için 368.411. Bu fark Model 2’nin üstünlüğünü bir kez daha ve görsel olarak net biçimde ortaya koymaktadır.
Stargazer tablosu analizin tüm bulgularını tek bir görünümde özetlemektedir. RI, Al ve Si modelin temel taşıyıcı değişkenleridir. Ba Type 7’yi tanımlayan kritik belirteçtir. Type 6 bulguları az gözlem nedeniyle ihtiyatla yorumlanmalıdır ve Model 2, Mg olmaksızın daha düşük AIC ile daha iyi uyum sağlayan tercih edilen modeldir.
Bu ödev, multinominal lojistik regresyonun yalnızca bir model kurma pratiği olmadığını, verinin hikayesini adım adım açan bütünleşik bir analiz süreci gerektirdiğini somut biçimde deneyimlememi sağladı.
Teknik açıdan en değerli kazanım, model seçim kriterlerinin birlikte yorumlanması oldu. AIC, BIC, McFadden R² ve LR testinin dört farklı perspektiften aynı sonuca, Model 2’nin üstünlüğüne, işaret etmesi, istatistiksel karar vermenin tek bir kritere dayanmaması gerektiğini pekiştirdi. Özellikle Mg’nin boxplot analizinde anlamlı görünmesine karşın LR testinde modele net katkı sunmaması, değişkenler arası korelasyonun bireysel katkıyı nasıl maskeleyebildiğini göstermesi açısından öğretici oldu.
Etki grafiklerinin yoruma kattığı derinlik de bu ödevin öne çıkan bir boyutuydu. Katsayı tabloları tek başına değişkenlerin yönünü ve büyüklüğünü aktarabilirken Al, Ba ve RI etki grafikleri olasılık eğrileri aracılığıyla değişkenlerin cam türü geçişlerini nasıl yönettiğini görsel olarak somutlaştırdı. Bu grafiklerin EDA bulguları ve OR değerleriyle bütünleşik okunması, analizin parçaları arasındaki tutarlılığı takip etme alışkanlığı kazandırdı.
Son olarak bu analiz, psikometri ve eğitim araştırmalarındaki çalışmalarımla bir köprü kurma fırsatı sundu. TIMSS verileriyle yürüttüğüm çalışmalarda öğrenci performans kategorileri bağımlı değişken olarak kurgulanabilir, o bağlamda da referans kategori seçimi, az gözlem riski ve değişkenler arası korelasyon aynı titizlikle ele alınması gereken meseleler olarak karşıma çıkacaktır. Glass veri seti üzerinden edinilen bu deneyim, o çalışmalar için hem metodolojik hem de yorumsal açıdan sağlam bir zemin oluşturdu.