Ekonometri Final Proje

Goukouni Fadaya Ahmat

12.05.2024

library(rmarkdown)
library(explore)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readr)
train_c <- read_csv("train_c.csv")
## Rows: 8693 Columns: 16
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): PassengerId, HomePlanet, Destination, deck, side
## dbl (8): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck, withgroup, ...
## lgl (3): CryoSleep, VIP, Transported
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(readr)
test_c <- read_csv("test_c.csv")
## Rows: 8693 Columns: 17
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (6): PassengerId, HomePlanet, Destination, deck, side, destination
## dbl (8): Age, RoomService, FoodCourt, ShoppingMall, Spa, VRDeck, withgroup, ...
## lgl (3): CryoSleep, VIP, Transported
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

AÇIKLAMA

Bu Projeden, Uzay Gemisi Titanic’in uzay-zaman anormalliği ile çarpışması sırasında bir yolcunun alternatif bir boyuta taşınıp taşınmadığını tahmin etmektir. Bu tahminleri yapmanıza yardımcı olmak için, geminin hasar görmüş bilgisayar sisteminden kurtarılan bir dizi kişisel kayıt verilmiştir.

Dosya ve Veri Alanı Açıklamaları train.csv - Eğitim verisi olarak kullanılacak yaklaşık üçte ikisi (~8700) yolcunun kişisel kayıtları.

PassengerId - Her yolcu için benzersiz bir kimlik. Her kimlik, yolcunun seyahat ettiği bir grubu gösteren gggg ile başlar ve pp grup içindeki sırasını temsil eder. Bir gruptaki insanlar genellikle aile üyeleridir, ancak her zaman değil.

HomePlanet - Yolcunun hareket ettiği gezegen, genellikle kalıcı ikamet gezegenleri. CryoSleep - Yolcunun yolculuğun süresi boyunca dondurulmuş animasyona alınıp alınmayacağını gösterir. CryoSleep’te olan yolcular kabinlerine kapatılmıştır.

Cabin - Yolcunun konakladığı kabin numarası. deck/num/side şeklinde alınır, burada side, Port için P veya Starboard için S olabilir.

Destination - Yolcunun ineceği gezegen.

Age - Yolcunun yaşı.

VIP - Yolcunun yolculuk sırasında özel VIP hizmeti için ödeme yapılıp yapılmadığını belirtir. RoomService, FoodCourt, ShoppingMall, Spa, VRDeck - Yolcunun Spaceship Titanic’in birçok lüks olanaklarında ne kadar fatura ödediği.

Name - Yolcunun adı ve soyadı.

Transported - Yolcunun başka bir boyuta taşınıp taşınmadığı. Bu, hedef, tahmin etmeye çalıştığınız sütun.

test.csv - Geri kalan üçte biri (~4300) yolcunun kişisel kayıtları, test verisi olarak kullanılacaktır. Göreviniz, bu setteki yolcular için Transported değerini tahmin etmektir.

sample_submission.csv - Doğru formatta bir sunum dosyası.

PassengerId - Test setindeki her yolcu için kimlik.

Transported - Hedef. Her yolcu için, True veya False değerlerinden birini tahmin edin.

describe_all(train_c)
## # A tibble: 16 × 8
##    variable     type     na na_pct unique   min    mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>   <dbl> <dbl>
##  1 PassengerId  chr       0      0   8693    NA   NA       NA
##  2 HomePlanet   chr       0      0      3    NA   NA       NA
##  3 CryoSleep    lgl       0      0      2     0    0.36     1
##  4 Destination  chr       0      0      3    NA   NA       NA
##  5 Age          dbl       0      0     88     0   28.8     79
##  6 VIP          lgl       0      0      2     0    0.02     1
##  7 RoomService  dbl       0      0   1273     0  220.   14327
##  8 FoodCourt    dbl       0      0   1507     0  448.   29813
##  9 ShoppingMall dbl       0      0   1115     0  170.   23492
## 10 Spa          dbl       0      0   1327     0  305.   22408
## 11 VRDeck       dbl       0      0   1306     0  298.   24133
## 12 Transported  lgl       0      0      2     0    0.5      1
## 13 withgroup    dbl       0      0      2     0    0.45     1
## 14 deck         chr       0      0      8    NA   NA       NA
## 15 side         chr       0      0      2    NA   NA       NA
## 16 expense      dbl       0      0   2336     0 1441.   35987
describe_all(test_c)
## # A tibble: 17 × 8
##    variable     type     na na_pct unique   min    mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>   <dbl> <dbl>
##  1 PassengerId  chr       0    0     8693    NA   NA       NA
##  2 HomePlanet   chr       0    0        3    NA   NA       NA
##  3 CryoSleep    lgl       0    0        2     0    0.36     1
##  4 Destination  chr       0    0        3    NA   NA       NA
##  5 Age          dbl       0    0       88     0   28.8     79
##  6 VIP          lgl       0    0        2     0    0.02     1
##  7 RoomService  dbl       0    0     1273     0  220.   14327
##  8 FoodCourt    dbl       0    0     1507     0  448.   29813
##  9 ShoppingMall dbl       0    0     1115     0  170.   23492
## 10 Spa          dbl       0    0     1327     0  305.   22408
## 11 VRDeck       dbl       0    0     1306     0  298.   24133
## 12 Transported  lgl       0    0        2     0    0.5      1
## 13 withgroup    dbl       0    0        2     0    0.28     1
## 14 deck         chr       0    0        8    NA   NA       NA
## 15 side         chr     199    2.3      3    NA   NA       NA
## 16 destination  chr       0    0        3    NA   NA       NA
## 17 expense      dbl       0    0     2336     0 1441.   35987
train_c$Homeplanet<-as.factor(train_c$HomePlanet)
train_c$Destination<-as.factor(train_c$Destination)
train_c$deck<-as.factor(train_c$deck)
train_c$side<-as.factor(train_c$side)
test_c$HomePlanet<-as.factor(test_c$HomePlanet)
test_c$Destination<-as.factor(test_c$Destination)
test_c$deck<-as.factor(test_c$deck)
test_c$side<-as.factor(test_c$side)
model<-lm(Transported~.,data = train_c[,2:16])
model<-lm(Transported~.,data = test_c[,2:16])
summary(model)
## 
## Call:
## lm(formula = Transported ~ ., data = test_c[, 2:16])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.47067 -0.30531 -0.02774  0.28559  1.76010 
## 
## Coefficients: (2 not defined because of singularities)
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               3.257e-01  3.996e-02   8.150 4.16e-16 ***
## HomePlanetEuropa          1.974e-01  2.893e-02   6.823 9.53e-12 ***
## HomePlanetMars            8.980e-02  1.485e-02   6.048 1.53e-09 ***
## CryoSleepTRUE             3.907e-01  1.177e-02  33.204  < 2e-16 ***
## DestinationPSO J318.5-22 -4.507e-02  1.820e-02  -2.477  0.01326 *  
## DestinationTRAPPIST-1e   -4.926e-02  1.141e-02  -4.318 1.59e-05 ***
## Age                      -2.303e-03  3.212e-04  -7.170 8.15e-13 ***
## VIPTRUE                  -3.223e-02  3.013e-02  -1.070  0.28481    
## RoomService              -1.203e-04  7.463e-06 -16.115  < 2e-16 ***
## FoodCourt                 4.389e-05  3.077e-06  14.265  < 2e-16 ***
## ShoppingMall              8.244e-05  7.491e-06  11.005  < 2e-16 ***
## Spa                      -8.482e-05  4.214e-06 -20.128  < 2e-16 ***
## VRDeck                   -8.111e-05  4.151e-06 -19.542  < 2e-16 ***
## withgroup                 1.969e-02  1.004e-02   1.962  0.04981 *  
## deckB                     1.138e-01  2.908e-02   3.912 9.22e-05 ***
## deckC                     1.456e-01  2.921e-02   4.986 6.29e-07 ***
## deckD                     4.933e-02  3.493e-02   1.412  0.15793    
## deckE                     1.830e-03  3.632e-02   0.050  0.95982    
## deckF                     9.687e-02  3.724e-02   2.601  0.00931 ** 
## deckG                     4.123e-02  3.892e-02   1.059  0.28955    
## deckT                     6.558e-02  1.811e-01   0.362  0.71731    
## sideS                     8.645e-02  8.703e-03   9.933  < 2e-16 ***
## destinationPSO J318.5-22         NA         NA      NA       NA    
## destinationTRAPPIST-1e           NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4003 on 8472 degrees of freedom
##   (199 observations effacées parce que manquantes)
## Multiple R-squared:  0.3606, Adjusted R-squared:  0.359 
## F-statistic: 227.5 on 21 and 8472 DF,  p-value: < 2.2e-16
library(caTools)
set.seed(123)
split = sample.split(train_c$Transported, SplitRatio = 0.75)
train_c_train_c = subset(train_c, split == TRUE)
train_c_test_c = subset(train_c, split == FALSE)

REGRESYON

Regresyon, istatistiksel bir kavram olup bir değişkenin diğer bir veya birden fazla değişken tarafından tahmin edilmesini veya açıklanmasını sağlayan bir modelleme tekniğidir. Bu teknik, değişkenler arasındaki ilişkiyi anlamak, bir değişkenin değerini tahmin etmek veya bir değişkenin başka değişkenler tarafından nasıl etkilendiğini belirlemek için kullanılır.

Regresyon analizi, genellikle bir bağımlı değişkenin (tahmin edilmek istenen değişken) ve bir veya daha fazla bağımsız değişkenin (tahminleyici veya açıklayıcı değişkenler) arasındaki ilişkiyi modellemek için kullanılır. Bağımsız değişkenler, bağımlı değişkenin değerini açıklamak veya tahmin etmek için kullanılan değişkenlerdir.

Regresyon analizi, veri setinin doğasına bağlı olarak farklı biçimlerde uygulanabilir. Örneğin, eğer ilişki doğrusal ise, doğrusal regresyon analizi kullanılabilir. Eğer ilişki doğrusal değilse, polinomiyal regresyon veya non-lineer regresyon teknikleri kullanılabilir. Ayrıca, birden fazla bağımsız değişkenin bağımlı değişkeni etkilediği durumlarda çoklu regresyon analizi kullanılabilir.

Regresyon analizi, ekonometri, sosyal bilimler, mühendislik, sağlık bilimleri ve pazarlama gibi birçok alanda kullanılmaktadır. Bu analiz türü, veriye dayalı karar verme süreçlerinde ve geleceği tahmin etme amacıyla yaygın olarak kullanılmaktadır.

regresyon<-lm(Transported ~.,data = train_c_train_c[,-c(1)])
summary(regresyon)
## 
## Call:
## lm(formula = Transported ~ ., data = train_c_train_c[, -c(1)])
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.55277 -0.30795 -0.02772  0.28588  1.74204 
## 
## Coefficients: (3 not defined because of singularities)
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               3.373e-01  4.627e-02   7.290 3.46e-13 ***
## HomePlanetEuropa          1.979e-01  3.338e-02   5.927 3.25e-09 ***
## HomePlanetMars            8.044e-02  1.706e-02   4.715 2.46e-06 ***
## CryoSleepTRUE             3.849e-01  1.335e-02  28.834  < 2e-16 ***
## DestinationPSO J318.5-22 -6.053e-02  2.076e-02  -2.915 0.003563 ** 
## DestinationTRAPPIST-1e   -5.053e-02  1.304e-02  -3.876 0.000107 ***
## Age                      -2.382e-03  3.714e-04  -6.414 1.52e-10 ***
## VIPTRUE                  -1.268e-02  3.376e-02  -0.375 0.707329    
## RoomService              -1.147e-04  7.788e-06 -14.729  < 2e-16 ***
## FoodCourt                 4.005e-05  3.466e-06  11.555  < 2e-16 ***
## ShoppingMall              8.546e-05  8.407e-06  10.166  < 2e-16 ***
## Spa                      -8.430e-05  4.704e-06 -17.921  < 2e-16 ***
## VRDeck                   -8.077e-05  4.771e-06 -16.930  < 2e-16 ***
## withgroup                 1.620e-02  1.073e-02   1.510 0.130979    
## deckB                     1.003e-01  3.283e-02   3.057 0.002248 ** 
## deckC                     1.388e-01  3.311e-02   4.193 2.78e-05 ***
## deckD                     3.548e-02  3.952e-02   0.898 0.369332    
## deckE                    -1.945e-02  4.186e-02  -0.465 0.642212    
## deckF                     8.940e-02  4.267e-02   2.095 0.036188 *  
## deckG                     4.025e-02  4.456e-02   0.903 0.366367    
## deckT                     5.872e-02  1.818e-01   0.323 0.746676    
## sideS                     8.994e-02  9.958e-03   9.033  < 2e-16 ***
## expense                          NA         NA      NA       NA    
## HomeplanetEuropa                 NA         NA      NA       NA    
## HomeplanetMars                   NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4003 on 6498 degrees of freedom
## Multiple R-squared:  0.3611, Adjusted R-squared:  0.3591 
## F-statistic: 174.9 on 21 and 6498 DF,  p-value: < 2.2e-16
reg_tahmin = predict(regresyon, newdata = train_c_test_c[, -c(1,12)])
reg_Transported_tahmin<-ifelse(reg_tahmin > 0.5,1,0)
Transported_gercek<-ifelse(train_c_test_c[12]==TRUE,1,0)
cm=table(Transported_gercek,reg_Transported_tahmin)
cm
##                   reg_Transported_tahmin
## Transported_gercek   0   1
##                  0 904 175
##                  1 320 774
(904+774)/(904+775+175+320)
## [1] 0.7718491
reg_tahmin = predict(regresyon, newdata = train_c_train_c[, -c(1, 12)])
reg_Transported_tahmin <- ifelse(reg_tahmin > 0.5, 1 ,0)
Transported_gercek <- ifelse(train_c_train_c[12] ==TRUE, 1, 0)
cm =table(Transported_gercek, reg_Transported_tahmin)
cm
##                   reg_Transported_tahmin
## Transported_gercek    0    1
##                  0 2673  563
##                  1  936 2348
(2673+2348)/(2673+2348+936+563)
## [1] 0.770092
reg_tahmin_bd = predict(model , newdata = test_c [, -c(1)])
reg_Transported_test_c_tahmin <- ifelse(reg_tahmin_bd > 0.5, TRUE,FALSE)
Transported <- as.character(reg_Transported_test_c_tahmin)
passengerId<- test_c$PassengerId
Transported<-as.vector(Transported)
submission_regresyon <- cbind(passengerId, Transported)
submission_regresyon <- as.data.frame(submission_regresyon)
library(stringr)
submission_regresyon$Transported <- str_to_title(submission_regresyon$Transported)
  write.csv(submission_regresyon,"siniftahmini.csv", row.names = FALSE,quote = FALSE)

LOGİSTİC

Logistik regresyonun katsayıları, ilgili bağımsız değişkenin bağımlı değişken üzerindeki etkisini belirtir. Pozitif bir katsayı, bağımsız değişkenin arttığında bağımlı değişkenin olasılığının arttığını gösterir. Negatif bir katsayı ise bağımsız değişkenin arttığında bağımlı değişkenin olasılığının azaldığını gösterir.

train için Bu R dilindeki kod, bir veri çerçevesinden belirli bir sütun aralığını (2. sütundan 15. sütuna kadar olan sütunlar) seçmeyi amaçlar. İşte bu kodun açıklamaları: train: Bu, üzerinde işlem yapılacak olan veri çerçevesini temsil eder. [2:15]: Bu ifade, veri çerçevesindeki sütunları seçmek için kullanılır. Burada 2:15, 2. sütundan başlayarak 15. sütuna kadar olan tüm sütunları seçer.

test için Bu R dilindeki kod, bir veri çerçevesinden belirli bir sütun aralığını (2. sütundan 15. sütuna kadar olan sütunlar) seçmeyi amaçlar. İşte bu kodun açıklamaları: train: Bu, üzerinde işlem yapılacak olan veri çerçevesini temsil eder. [2:15]: Bu ifade, veri çerçevesindeki sütunları seçmek için kullanılır. Burada 2:15, 2. sütundan başlayarak 15. sütuna kadar olan tüm sütunları seçer

train_c_log <- train_c %>%
  mutate_at(c(5, 7:11, 16), ~ log(1 + .))
test_c_log <- test_c %>%
  mutate_at(c(5, 7:11, 17), ~ log(1 + .))
modellog <- lm(Transported ~ 1 + HomePlanet + Destination + deck + side + CryoSleep + Age + RoomService + FoodCourt + ShoppingMall + Spa + VRDeck, data = train_c_log )
reg_tahmin_log = predict(modellog, newdata = test_c_log[, -c(1)])
reg_Transported_test_c_tahmin_log <- ifelse(reg_tahmin_log > 0.5, TRUE, FALSE) 
Transported <- as.character(reg_Transported_test_c_tahmin_log)
PassengerId <- test_c$PassengerId
Transported<-as.vector(Transported)
submission_regresyon_log <- cbind(PassengerId, Transported)
submission_regresyon_log <- as.data.frame(submission_regresyon_log)
submission_regresyon_log$Transported <- str_to_title(submission_regresyon_log$Transported)
write.csv(submission_regresyon_log,"submission_regresyon_log.csv",row.names = FALSE,quote = FALSE)
train_c_train_c <- train_c[2:15]
logistic <- glm(formula = Transported ~ ., 
                family = binomial,
                data = train_c_train_c[, - c(1)])
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
summary(logistic)
## 
## Call:
## glm(formula = Transported ~ ., family = binomial, data = train_c_train_c[, 
##     -c(1)])
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)    
## (Intercept)               7.519e-01  2.344e-01   3.208 0.001337 ** 
## CryoSleepTRUE             1.574e+00  7.421e-02  21.214  < 2e-16 ***
## DestinationPSO J318.5-22 -4.606e-01  1.121e-01  -4.110 3.96e-05 ***
## DestinationTRAPPIST-1e   -4.053e-01  8.001e-02  -5.065 4.08e-07 ***
## Age                      -8.108e-03  2.106e-03  -3.850 0.000118 ***
## VIPTRUE                  -2.040e-01  2.495e-01  -0.818 0.413546    
## RoomService              -1.431e-03  8.834e-05 -16.200  < 2e-16 ***
## FoodCourt                 5.457e-04  3.973e-05  13.733  < 2e-16 ***
## ShoppingMall              5.874e-04  6.546e-05   8.974  < 2e-16 ***
## Spa                      -1.972e-03  1.044e-04 -18.894  < 2e-16 ***
## VRDeck                   -1.893e-03  1.023e-04 -18.500  < 2e-16 ***
## withgroup                 1.849e-01  6.064e-02   3.049 0.002296 ** 
## deckB                     1.150e+00  2.556e-01   4.497 6.89e-06 ***
## deckC                     2.357e+00  2.888e-01   8.163 3.27e-16 ***
## deckD                    -3.106e-02  2.455e-01  -0.126 0.899338    
## deckE                    -9.314e-01  2.244e-01  -4.151 3.31e-05 ***
## deckF                    -4.710e-01  2.135e-01  -2.207 0.027347 *  
## deckG                    -1.151e+00  2.147e-01  -5.358 8.42e-08 ***
## deckT                    -8.880e-01  1.539e+00  -0.577 0.563841    
## sideS                     5.644e-01  5.724e-02   9.859  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 12050.6  on 8692  degrees of freedom
## Residual deviance:  7567.4  on 8673  degrees of freedom
## AIC: 7607.4
## 
## Number of Fisher Scoring iterations: 7
logistic_tahmin <- predict(logistic,newdata= train_c_test_c[, -c(1,12)])
head(logistic_tahmin)
##           1           2           3           4           5           6 
##  -1.0569674 -11.0233442   1.1954753  -1.6644963  -0.5865155  -1.5221862
logistic_Transported_tahmin <- ifelse(logistic_tahmin > 0.5,1,0)
head(logistic_Transported_tahmin)
## 1 2 3 4 5 6 
## 0 0 1 0 0 0
Transported_gercek <- ifelse(train_c_test_c[12]==TRUE,1,0)
library(tidymodels)
## ── Attaching packages ────────────────────────────────────── tidymodels 1.2.0 ──
## ✔ broom        1.0.6      ✔ rsample      1.2.1 
## ✔ dials        1.2.1      ✔ tune         1.2.1 
## ✔ infer        1.0.7      ✔ workflows    1.1.4 
## ✔ modeldata    1.3.0      ✔ workflowsets 1.1.0 
## ✔ parsnip      1.2.1      ✔ yardstick    1.3.1 
## ✔ recipes      1.0.10
## ── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ──
## ✖ scales::discard() masks purrr::discard()
## ✖ dplyr::filter()   masks stats::filter()
## ✖ recipes::fixed()  masks stringr::fixed()
## ✖ dplyr::lag()      masks stats::lag()
## ✖ yardstick::spec() masks readr::spec()
## ✖ recipes::step()   masks stats::step()
## • Use tidymodels_prefer() to resolve common conflicts.
result =  data.frame(cbind(Transported_gercek, logistic_Transported_tahmin))
result$Transported <- as.factor(result$Transported)
result$logistic_Transported_tahmin <- as.factor(result$logistic_Transported_tahmin)
accuracy(result, truth = Transported, estimate =  logistic_Transported_tahmin)
## # A tibble: 1 × 3
##   .metric  .estimator .estimate
##   <chr>    <chr>          <dbl>
## 1 accuracy binary         0.786
conf_mat(result, truth  =Transported,estimate = logistic_Transported_tahmin)
##           Truth
## Prediction   0   1
##          0 911 296
##          1 168 798
library(caret)
## Le chargement a nécessité le package : lattice
## 
## Attachement du package : 'caret'
## Les objets suivants sont masqués depuis 'package:yardstick':
## 
##     precision, recall, sensitivity, specificity
## L'objet suivant est masqué depuis 'package:purrr':
## 
##     lift
cm=table(Transported_gercek, logistic_Transported_tahmin)
cm
##                   logistic_Transported_tahmin
## Transported_gercek   0   1
##                  0 911 168
##                  1 296 798
(911+798)/(911+798+168+296)
## [1] 0.7864703
confusionMatrix(as.factor(Transported_gercek), as.factor(logistic_Transported_tahmin))
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 911 168
##          1 296 798
##                                           
##                Accuracy : 0.7865          
##                  95% CI : (0.7686, 0.8035)
##     No Information Rate : 0.5555          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.5733          
##                                           
##  Mcnemar's Test P-Value : 3.728e-09       
##                                           
##             Sensitivity : 0.7548          
##             Specificity : 0.8261          
##          Pos Pred Value : 0.8443          
##          Neg Pred Value : 0.7294          
##              Prevalence : 0.5555          
##          Detection Rate : 0.4192          
##    Detection Prevalence : 0.4965          
##       Balanced Accuracy : 0.7904          
##                                           
##        'Positive' Class : 0               
## 
logistic_bd <- glm(formula = Transported ~ ., 
                  family = binomial, 
                  data = train_c[, -c(1)])
## Warning: glm.fit: des probabilités ont été ajustées numériquement à 0 ou 1
logistic_tahmin_bd = predict(logistic_bd, newdata = train_c_log[, -c(1)])
## Warning in predict.lm(object, newdata, se.fit, scale = 1, type = if (type == :
## prediction from rank-deficient fit; attr(*, "non-estim") has doubtful cases
logistic_tahmin_test_c_tahmin <- ifelse(logistic_tahmin_bd > 0.5,TRUE,FALSE)
Transported <- as.character(logistic_tahmin_test_c_tahmin)
PassengerId <- test_c$PassengerId 
Transported<- as.vector(Transported)
submission_llogistic<- cbind(PassengerId, Transported)
submission_llogistic<- as.data.frame(submission_llogistic)
submission_llogistic$Transported<- str_to_title(submission_llogistic$Transported)
write.csv(submission_llogistic, "submission_logistic.csv", row.names = FALSE, quote = FALSE)
logistic_bd = glm(formula = Transported ~., 
                  family = binomial, 
                  data = train_c_log[, -c(1)])
Transported <- as.character(logistic_tahmin_test_c_tahmin)
PassengerId <- test_c$PassengerId 
Transported<- as.vector(Transported)
submission_llogistic<- cbind(PassengerId, Transported)
submission_llogistic<- as.data.frame(submission_llogistic)
submission_llogistic$Transported<- str_to_title(submission_llogistic$Transported)
write.csv(submission_llogistic, "submission_logistic.csv", row.names = FALSE, quote = FALSE)

NAİVE BAYES

“Navie” ifadesi, “Naive Bayes” adlı bir makine öğrenimi algoritmasını ifade etmektedir. Naive Bayes, özellikle sınıflandırma problemleri için kullanılan basit ancak etkili bir olasılık temelli bir algoritmadır. İşte Naive Bayes’in temel prensipleri ve uygulamalı ekonometri dersinizle ilişkilendirilmiş açıklamalar:

Bayes Teoremi:

Naive Bayes, Bayes Teoremi’ne dayanır. Bayes Teoremi, bir olayın gerçekleşme olasılığını hesaplamak için kullanılır ve şu şekilde ifade edilir:

“Naive” ifadesi, algoritmanın temel varsayımına atıfta bulunur: Tüm özellikler (değişkenler) birbirinden bağımsızdır. Bu, sınıflandırma için basitleştirici bir varsayımdır ve bu nedenle “naive” (saf) olarak adlandırılır.

library(e1071)
## 
## Attachement du package : 'e1071'
## L'objet suivant est masqué depuis 'package:tune':
## 
##     tune
## L'objet suivant est masqué depuis 'package:rsample':
## 
##     permutations
## L'objet suivant est masqué depuis 'package:parsnip':
## 
##     tune
fit_nb <-naiveBayes(Transported ~ .,data = train_c_train_c[, -1])
fit_nb
## 
## Naive Bayes Classifier for Discrete Predictors
## 
## Call:
## naiveBayes.default(x = X, y = Y, laplace = laplace)
## 
## A-priori probabilities:
## Y
##     FALSE      TRUE 
## 0.4963764 0.5036236 
## 
## Conditional probabilities:
##        CryoSleep
## Y           FALSE      TRUE
##   FALSE 0.8674392 0.1325608
##   TRUE  0.4198264 0.5801736
## 
##        Destination
## Y       55 Cancri e PSO J318.5-22 TRAPPIST-1e
##   FALSE  0.16268830    0.09154114  0.74577057
##   TRUE   0.25079945    0.09159434  0.65760621
## 
##        Age
## Y           [,1]     [,2]
##   FALSE 29.89040 13.56605
##   TRUE  27.79596 15.00787
## 
##        VIP
## Y            FALSE       TRUE
##   FALSE 0.97149479 0.02850521
##   TRUE  0.98264048 0.01735952
## 
##        RoomService
## Y            [,1]     [,2]
##   FALSE 380.42526 867.5761
##   TRUE   61.90178 272.3304
## 
##        FoodCourt
## Y           [,1]     [,2]
##   FALSE 375.1676 1189.550
##   TRUE  520.6462 1910.983
## 
##        ShoppingMall
## Y           [,1]     [,2]
##   FALSE 163.9159 452.1892
##   TRUE  175.1473 713.1374
## 
##        Spa
## Y            [,1]      [,2]
##   FALSE 552.34948 1536.8892
##   TRUE   60.39356  260.0868
## 
##        VRDeck
## Y            [,1]     [,2]
##   FALSE 532.29108 1548.648
##   TRUE   67.60027  288.556
## 
##        withgroup
## Y            [,1]      [,2]
##   FALSE 0.3902665 0.4878665
##   TRUE  0.5034262 0.5000454
## 
##        deck
## Y                  A            B            C            D            E
##   FALSE 0.0298957126 0.0523754345 0.0560834299 0.0632676709 0.1311703360
##   TRUE  0.0301507538 0.1368204660 0.1178620375 0.0479671083 0.0719506624
##        deck
## Y                  F            G            T
##   FALSE 0.3677867903 0.2984936269 0.0009269988
##   TRUE  0.2843764276 0.3106441297 0.0002284148
## 
##        side
## Y               P         S
##   FALSE 0.5511008 0.4488992
##   TRUE  0.4470078 0.5529922
pred_nb <- predict(fit_nb, newdata = train_c_test_c[, -c(1, 12)], type =  "raw") %>%
  data.frame()
head(pred_nb)
##       FALSE.         TRUE.
## 1 0.28625938  7.137406e-01
## 2 1.00000000 4.573854e-137
## 3 0.02871421  9.712858e-01
## 4 0.48731747  5.126825e-01
## 5 0.03653340  9.634666e-01
## 6 0.40191903  5.980810e-01
Transported_pred_nb = ifelse(pred_nb$TRUE.> 0.5,1, 0)
head(Transported_pred_nb)
## [1] 1 0 1 1 1 1
Transported_train_c_test_c <- ifelse(train_c_test_c[12]== TRUE,10, 0)
head(Transported_train_c_test_c)
##      Transported
## [1,]          10
## [2,]           0
## [3,]          10
## [4,]           0
## [5,]           0
## [6,]           0
cm=table(Transported_train_c_test_c, Transported_pred_nb)
cm
##                           Transported_pred_nb
## Transported_train_c_test_c    0    1
##                         0   488  591
##                         10   76 1018
(577+1015)/(577+1015+502+79)
## [1] 0.7326277
nb= naiveBayes(Transported~.,data = train_c[,-1])
pred_nb <- predict(nb,newdata=test_c, type="raw"  )%>% data.frame()
Transported_pred_nb=ifelse(pred_nb$TRUE. > 0.5, TRUE,FALSE)
Transported <- as.character(Transported_pred_nb)
PassengerId <- test_c$PassengerId
transported <- as.vector(Transported)
sample_submission <- cbind(PassengerId,Transported)
sample_submission <- as.data.frame(sample_submission) 
sample_submission$Transported <- str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_nb.csv",row.names = FALSE, quote = FALSE)

SVM

SVM, veya “Destek Vektör Makineleri” (Support Vector Machines), makine öğrenimi alanında sınıflandırma ve regresyon problemleri için kullanılan bir öğrenme algoritmasıdır. Özellikle sınıflandırma problemlerinde etkilidir.

SVM, veri noktalarını birbirinden ayıracak en iyi hiper düzlemi bulmaya odaklanır. Bu hiper düzlem, veri noktalarını sınıflarına göre mümkün olduğunca iyi ayırmak için seçilir. SVM, bu hiper düzlemi bulurken, veri setinin sınıflarının arasındaki en geniş marjı (maksimum marj) oluşturmayı hedefler.

SVM’nin temel fikri, veri noktalarını sınıflandırmak için bir karar sınırlayıcısı oluşturmak için destek vektörleri olarak adlandırılan noktaları kullanmaktır. Bu destek vektörleri, hiper düzleme en yakın olan ve bu nedenle sınıfların ayrılmasında kritik öneme sahip olan noktalardır.

SVM, lineer ve non-lineer sınıflandırma problemleri için kullanılabilir. Lineer SVM, veri noktalarını doğrusal bir hiper düzlemle ayırmaya çalışırken, non-lineer SVM, çekirdek fonksiyonları kullanarak verileri daha yüksek boyutlu uzaylara dönüştürerek doğrusal olarak ayrılabilir hale getirir.

SVM’nin avantajlarından biri, hem düşük boyutlu hem de yüksek boyutlu veri setlerinde iyi performans göstermesidir. Ayrıca, SVM’nin regresyon problemleri için de uyarlanmış bir versiyonu vardır, bu da SVM’nin çok yönlülüğünü artırır.

SVM’nin kullanım alanları arasında metin sınıflandırması, görüntü sınıflandırması, biyomedikal veri analizi, el yazısı tanıma ve finansal tahmin gibi birçok uygulama bulunmaktadır.

fit_svm  <- svm(Transported ~., data= train_c_train_c[, -1], type = 'C-classification', kernel = 'linear')
preds <- predict(fit_svm, newdata = train_c_test_c[, -c(1, 12)], type = "raw") %>%
  data.frame()
Transported_pred_svm=ifelse(preds$.== TRUE, 1 ,0)
cm=table(Transported_train_c_test_c, Transported_pred_svm)
fit_svm  <- svm(Transported ~ ., data = train_c[, -1],
             type= 'C-classification',
             kernel = 'linear')
preds <- predict(fit_svm, newdata = train_c, type = "raw") %>%
  data.frame()
Transported_pred_svm = ifelse(preds$. == TRUE, TRUE, FALSE)
Transported <- as.character(Transported_pred_svm)
PassengerId <- test_c$PassengerId
Transported <- as.vector(Transported)
sample_submission <- cbind(PassengerId, Transported)
sample_submission <- as.data.frame(sample_submission) 
sample_submission$Transported <- str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_svm.csv",row.names = FALSE, quote = FALSE)

SVM RADİAL

SVM-Radial (Destek Vektör Makineleri - Radyal Temel Fonksiyon) veya RBF (Radial Basis Function), makine öğrenimi alanında sınıflandırma ve regresyon için kullanılan bir destek vektör makinesi (SVM) çekirdek fonksiyonudur.

SVM, sınıflandırma ve regresyon problemlerinde kullanılan güçlü bir öğrenme algoritmasıdır. SVM’nin temel amacı, iki sınıf arasındaki ayrımı en iyi şekilde yapacak bir karar sınırlayıcısı (hiper düzlem) bulmaktır.

SVM-Radial, SVM algoritmasının çekirdek fonksiyonu olarak Radyal Temel Fonksiyonu’nu kullanır. Bu, özellik vektörlerini daha yüksek boyutlu uzaylara eşlemek ve sınıfları ayrılabilir hale getirmek için kullanılır. Radyal Temel Fonksiyonu, veri noktalarını dönüştürmek için bir Gauss fonksiyonunu kullanır.

RBF, veri noktalarını bir merkez etrafında bir radyal desen oluşturacak şekilde dönüştürür. Bu, daha karmaşık ve belirgin ayrımların yapılabildiği bir uzay oluşturur. SVM-Radial, bu dönüşümle birlikte destek vektör makinesinin optimizasyon algoritmasını kullanarak optimal bir karar sınırlayıcısı bulur.

SVM-Radial, özellikle veri seti non-lineer olarak ayrılabilir olduğunda etkilidir. Çünkü RBF dönüşümü, veri setindeki karmaşık yapıları daha iyi yakalayabilir. Bu nedenle, SVM-Radial, özellikle resim sınıflandırması, metin sınıflandırması ve biyomedikal veri analizi gibi alanlarda yaygın olarak kullanılmaktadır.

fit_svm  <- svm(Transported ~ ., data = train_c[, -1],
             type= 'C-classification',
             kernel = 'radial')
preds <- predict(fit_svm, newdata = train_c_test_c[, -c(1, 12)], type = "raw") %>%
  data.frame()
Transported_pred_svm = ifelse(preds$. == TRUE , 1 ,0)
cm = table(Transported_train_c_test_c, Transported_pred_svm)
cm
##                           Transported_pred_svm
## Transported_train_c_test_c   0   1
##                         0  861 218
##                         10 204 890
fit_svm  <- svm(Transported ~ ., data = train_c[, -1],
             type= 'C-classification',
             kernel = 'radial')

preds <- predict(fit_svm, newdata = train_c, type = "raw") %>%
  data.frame() 
Transported_pred_svm = ifelse(preds$. == TRUE, TRUE, FALSE)
Transported <- as.character(Transported_pred_svm)
PassengerId <- test_c$PassengerId
Transported <- as.vector(Transported)
sample_submission <- cbind(PassengerId, Transported)
sample_submission <- as.data.frame(sample_submission) 
sample_submission$Transported <- str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_svm_radial.csv",row.names = FALSE, quote = FALSE)
describe_all(train_c_train_c)
## # A tibble: 14 × 8
##    variable     type     na na_pct unique   min   mean   max
##    <chr>        <chr> <int>  <dbl>  <int> <dbl>  <dbl> <dbl>
##  1 HomePlanet   chr       0      0      3    NA  NA       NA
##  2 CryoSleep    lgl       0      0      2     0   0.36     1
##  3 Destination  fct       0      0      3    NA  NA       NA
##  4 Age          dbl       0      0     88     0  28.8     79
##  5 VIP          lgl       0      0      2     0   0.02     1
##  6 RoomService  dbl       0      0   1273     0 220.   14327
##  7 FoodCourt    dbl       0      0   1507     0 448.   29813
##  8 ShoppingMall dbl       0      0   1115     0 170.   23492
##  9 Spa          dbl       0      0   1327     0 305.   22408
## 10 VRDeck       dbl       0      0   1306     0 298.   24133
## 11 Transported  lgl       0      0      2     0   0.5      1
## 12 withgroup    dbl       0      0      2     0   0.45     1
## 13 deck         fct       0      0      8    NA  NA       NA
## 14 side         fct       0      0      2    NA  NA       NA
P <-ggplot(data.frame(train_c_train_c),aes(x=HomePlanet, y=deck,color=Transported)) +
  geom_point(aes(shape=Transported), size=3) +
  scale_color_viridis_d() +
  labs(title = "", x="HomePlanet", y="deck") +
  theme_minimal() +
  theme(legend.position = "top")
P

library(rpart)
## 
## Attachement du package : 'rpart'
## L'objet suivant est masqué depuis 'package:dials':
## 
##     prune
library(rpart.plot)
library(randomForest)
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
## 
## Attachement du package : 'randomForest'
## L'objet suivant est masqué depuis 'package:dplyr':
## 
##     combine
## L'objet suivant est masqué depuis 'package:ggplot2':
## 
##     margin
library(caret)
fit_tree <- rpart:: rpart(transported ~., data = train_c_train_c[, -1])
summary(fit_tree)
## Call:
## rpart::rpart(formula = transported ~ ., data = train_c_train_c[, 
##     -1])
##   n= 8693 
## 
##          CP nsplit rel error    xerror        xstd
## 1 0.3630048      0 1.0000000 1.0000000 0.017865642
## 2 0.3226227      1 0.6369952 0.6396005 0.015187671
## 3 0.1984368      2 0.3143726 0.3208858 0.011291100
## 4 0.0100000      3 0.1159357 0.1220148 0.007160181
## 
## Variable importance
##         Spa RoomService      VRDeck 
##          37          34          29 
## 
## Node number 1: 8693 observations,    complexity param=0.3630048
##   predicted class=TRUE   expected loss=0.2649258  P(node) =1
##     class counts:  2303  6390
##    probabilities: 0.265 0.735 
##   left son=2 (924 obs) right son=3 (7769 obs)
##   Primary splits:
##       RoomService < 705.5 to the right, improve=977.2266, (0 missing)
##       Spa         < 662.5 to the right, improve=932.0519, (0 missing)
##       VRDeck      < 738.5 to the right, improve=780.3843, (0 missing)
##       CryoSleep   < 0.5   to the left,  improve=680.4179, (0 missing)
##       Transported < 0.5   to the left,  improve=675.6905, (0 missing)
## 
## Node number 2: 924 observations
##   predicted class=FALSE  expected loss=0.04761905  P(node) =0.1062924
##     class counts:   880    44
##    probabilities: 0.952 0.048 
## 
## Node number 3: 7769 observations,    complexity param=0.3226227
##   predicted class=TRUE   expected loss=0.1831639  P(node) =0.8937076
##     class counts:  1423  6346
##    probabilities: 0.183 0.817 
##   left son=6 (933 obs) right son=7 (6836 obs)
##   Primary splits:
##       Spa         < 642.5 to the right, improve=1084.1860, (0 missing)
##       VRDeck      < 738.5 to the right, improve= 908.6087, (0 missing)
##       Transported < 0.5   to the left,  improve= 361.2157, (0 missing)
##       CryoSleep   < 0.5   to the left,  improve= 348.3438, (0 missing)
##       FoodCourt   < 0.5   to the right, improve= 251.3139, (0 missing)
## 
## Node number 6: 933 observations
##   predicted class=FALSE  expected loss=0.1018221  P(node) =0.1073277
##     class counts:   838    95
##    probabilities: 0.898 0.102 
## 
## Node number 7: 6836 observations,    complexity param=0.1984368
##   predicted class=TRUE   expected loss=0.08557636  P(node) =0.7863798
##     class counts:   585  6251
##    probabilities: 0.086 0.914 
##   left son=14 (597 obs) right son=15 (6239 obs)
##   Primary splits:
##       VRDeck      < 738.5 to the right, improve=831.36940, (0 missing)
##       CryoSleep   < 0.5   to the left,  improve= 83.66997, (0 missing)
##       Transported < 0.5   to the left,  improve= 83.46779, (0 missing)
##       Spa         < 0.5   to the right, improve= 59.23314, (0 missing)
##       FoodCourt   < 0.5   to the right, improve= 53.93865, (0 missing)
## 
## Node number 14: 597 observations
##   predicted class=FALSE  expected loss=0.1172529  P(node) =0.06867595
##     class counts:   527    70
##    probabilities: 0.883 0.117 
## 
## Node number 15: 6239 observations
##   predicted class=TRUE   expected loss=0.009296362  P(node) =0.7177039
##     class counts:    58  6181
##    probabilities: 0.009 0.991
rpart.plot(fit_tree)

head(preds)
##       .
## 1 FALSE
## 2 FALSE
## 3 FALSE
## 4 FALSE
## 5 FALSE
## 6 FALSE
head(preds)
##       .
## 1 FALSE
## 2 FALSE
## 3 FALSE
## 4 FALSE
## 5 FALSE
## 6 FALSE
fit_tree <- rpart(Transported ~ ., data = train_c[, -1])

preds <- predict(fit_tree, newdata = train_c) %>%
  data.frame()
Transported_pred_tree = ifelse(preds$. > 0.5, TRUE, FALSE)
Transported <- as.character(Transported_pred_tree)
PassengerId <- test_c$PassengerId
Transported <- as.vector(Transported)
sample_submission <- cbind(PassengerId, Transported)
sample_submission <- as.data.frame(sample_submission) 
sample_submission$Transported <- str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_tree.csv", row.names = FALSE, quote = FALSE)

RANDOM FOREST

Random Forest, makine öğrenimi alanında yaygın olarak kullanılan bir topluluk öğrenme algoritmasıdır. Random Forest, birçok karar ağacını bir araya getirerek karar verme sürecini gerçekleştirir ve bu nedenle topluluk (ensemble) bir öğrenme yöntemidir.

Random Forest algoritması, her bir ağacın bağımsız olarak eğitildiği bir karar ağacı (decision tree) topluluğunu kullanır. Her ağaç, rastgele seçilen özellikler ve veri noktalarının bir alt kümesi üzerinde eğitilir. Bu, her ağacın birbirinden farklı özellikler ve veri noktaları üzerinde odaklanmasını sağlar.

Random Forest, her bir karar ağacının tahminini alır ve genellikle sınıflandırma problemlerinde sınıfın bir çoğunluğunu veya regresyon problemlerinde ortalamayı kullanarak topluluk tahminini yapar. Bu, her bir ağacın kendi hatalarını telafi etmesine ve genel olarak daha güvenilir bir tahmin sağlamasına olanak tanır.

Random Forest’in avantajlarından biri, overfitting’e (aşırı uydurma) karşı dayanıklı olmasıdır. Her ağaç, yalnızca rastgele seçilen özellikler ve veri noktaları üzerinde eğitildiği için, tek başına bir ağacın yapabileceği aşırı uyum riski azalır.

Random Forest ayrıca özelliklerin önemini değerlendirmek için kullanılabilir. Algoritma, her bir özelliğin her bir ağaçta ne sıklıkta kullanıldığını izler ve böylece her özelliğin tahminde ne kadar etkili olduğunu belirlemeye yardımcı olur.

Random Forest, sınıflandırma ve regresyon problemlerinde geniş bir kullanım alanına sahiptir. Özellikle büyük ve karmaşık veri setlerinde iyi performans gösterir ve genellikle biyomedikal araştırmalardan finansal tahminlere kadar çeşitli uygulamalarda kullanılır.

fit_forest <- randomForest(Transported ~ ., data = train_c_train_c[, -1])
## Warning in randomForest.default(m, y, ...): The response has five or fewer
## unique values.  Are you sure you want to do regression?
  fit_forest$importance
##              IncNodePurity
## CryoSleep       245.481131
## Destination      38.451720
## Age             154.667196
## VIP               4.257172
## RoomService     212.724662
## FoodCourt       180.685865
## ShoppingMall    152.528137
## Spa             227.433362
## VRDeck          203.841907
## withgroup        20.913410
## deck            151.052454
## side             30.014192
varImpPlot(fit_forest)

preds = predict(fit_forest, newdata = train_c_test_c[, -c(1,12)]) %>%
  data.frame()
head(preds)
##            .
## 1 0.55774161
## 2 0.06003333
## 3 0.91858218
## 4 0.12289220
## 5 0.28157260
## 6 0.09244040
Transported_pred_forest = ifelse(preds$. >0.5, 1, 0)
cm = table(Transported_train_c_test_c, Transported_pred_forest)
cm
##                           Transported_pred_forest
## Transported_train_c_test_c    0    1
##                         0   911  168
##                         10   12 1082
fit_forest <- rpart(Transported ~ ., data = train_c[, -1])

preds <- predict(fit_forest, newdata = train_c) %>%
  data.frame()
Transported_pred_forest = ifelse(preds$. > 0.5, TRUE, FALSE)
Transported <- as.character(Transported_pred_tree)
PassengerId <- test_c$PassengerId
Transported <- as.vector(Transported)
sample_submission <- cbind(PassengerId, Transported)
sample_submission <- as.data.frame(sample_submission) 
sample_submission$Transported <- str_to_title(sample_submission$Transported)
write.csv(sample_submission, "sub_forest.csv", row.names = FALSE, quote = FALSE)

BÜTÜN SONUÇLAR