Adınız & Soyadınız:Elif BAŞAR

NO:23727095

Cevaplarınız bir .Rmd dosyası içinde hazırlayınız (bu dosyayı şablon olarak kullanabilirsiniz) ve .html çıktı dosyasını üretiniz (RStudio içinde knit komutu ile). adiniz_soyadiniz.Rmd ve adiniz_soyadiniz.html olarak isimlendirdiğiniz bu iki dosyayı Google Classroom’a yükleyiniz.


Soru 1

Bu klasörde yer alan sagliksig.rda içinde train_sig ve test_sig isimli iki veri çerçevesi bulunmaktadır:

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
load("/cloud/project/Odev/sagliksig.rda")
str(train_sig)
## tibble [1,002 × 8] (S3: tbl_df/tbl/data.frame)
##  $ yas     : num [1:1002] 18 28 32 31 30 18 19 19 26 24 ...
##  $ cinsiyet: Factor w/ 2 levels "E","K": 1 1 1 2 2 2 2 1 1 2 ...
##  $ BMI     : num [1:1002] 33.8 33 28.9 25.7 32.4 ...
##  $ cocuksay: num [1:1002] 1 3 0 0 1 0 5 0 0 0 ...
##  $ sigara  : Factor w/ 2 levels "evet","hayır": 2 2 2 2 2 2 2 2 2 2 ...
##  $ bolge   : Factor w/ 4 levels "güneybatı","güneydoğu",..: 2 2 3 2 1 4 1 3 1 4 ...
##  $ maliyet : num [1:1002] 1726 4449 3867 3757 4150 ...
##  $ lmaliyet: num [1:1002] 7.45 8.4 8.26 8.23 8.33 ...

Hedef değişken lmaliyet, sağlık sigortası maliyetinin doğal logaritmasıdır. Kestirim değişkenleri yaş, cinsiyet, BMI (vücut kitle endeksi), çocuk sayısı, sigara ve bölgedir.

(a)

Bu değişkenleri kullanarak lmaliyet için bir regresyon modeli tahmin ediniz. İdeal regresyon modelinizde uygun etkileşim terimleri de yer alabilir. Sonuçları yorumlayınız ve tartışınız.

model <- lm(lmaliyet ~ yas + cinsiyet + BMI + cocuksay + sigara + bolge, data = train_sig)
summary(model)
## 
## Call:
## lm(formula = lmaliyet ~ yas + cinsiyet + BMI + cocuksay + sigara + 
##     bolge, data = train_sig)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.09803 -0.20291 -0.03800  0.08032  2.16365 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     8.3858865  0.0894726  93.726  < 2e-16 ***
## yas             0.0342863  0.0009977  34.367  < 2e-16 ***
## cinsiyetK       0.0440780  0.0278793   1.581  0.11419    
## BMI             0.0147306  0.0024031   6.130 1.27e-09 ***
## cocuksay        0.1028666  0.0116636   8.819  < 2e-16 ***
## sigarahayır    -1.5608929  0.0341653 -45.686  < 2e-16 ***
## bolgegüneydoğu -0.0675984  0.0392995  -1.720  0.08573 .  
## bolgekuzeybatı  0.0324234  0.0401234   0.808  0.41923    
## bolgekuzeydoğu  0.1033006  0.0396355   2.606  0.00929 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4384 on 993 degrees of freedom
## Multiple R-squared:  0.7776, Adjusted R-squared:  0.7758 
## F-statistic:   434 on 8 and 993 DF,  p-value: < 2.2e-16
##Modelin çoğu bağımsız değişken için anlamlı olduğunu ve verileri oldukça iyi
##açıkladığını söyleyebiliriz. Ancak, cinsiyet ve bolge seviyeleri için p değerleri
##yüksek. Bu değişkenlerin modeldeki etkileri istatistiksel olarak anlamsızdır.

(b)

Test verisini kullanarak ortalama hata karesini (test MSE) hesaplayınız. Test verisindeki gerçek hedef değişken ile kestirim değerlerinin serpilme grafiğini 45-derece doğrusu ile birlikte çiziniz ve R-kare ile birlikte yorumlayınız.

library(tidyverse)
load("/cloud/project/Odev/sagliksig.rda")
str(test_sig)
## tibble [336 × 8] (S3: tbl_df/tbl/data.frame)
##  $ yas     : num [1:336] 33 60 25 23 19 23 60 18 23 60 ...
##  $ cinsiyet: Factor w/ 2 levels "E","K": 1 2 1 1 1 1 2 1 1 1 ...
##  $ BMI     : num [1:336] 22.7 25.8 26.2 34.4 24.6 ...
##  $ cocuksay: num [1:336] 0 0 0 0 1 0 0 0 1 0 ...
##  $ sigara  : Factor w/ 2 levels "evet","hayır": 2 2 2 2 2 2 2 2 2 1 ...
##  $ bolge   : Factor w/ 4 levels "güneybatı","güneydoğu",..: 3 3 4 1 1 4 4 2 3 1 ...
##  $ maliyet : num [1:336] 21984 28923 2721 1827 1837 ...
##  $ lmaliyet: num [1:336] 10 10.27 7.91 7.51 7.52 ...

model2 <- lm(lmaliyet ~ yas + cinsiyet + BMI + cocuksay + sigara + bolge, data = test_sig)
test_sig$predicted <- predict(model2, newdata = test_sig)
test_MSE <- mean((test_sig$lmaliyet - test_sig$predicted)^2)
print(paste("Test MSE:", test_MSE))
## [1] "Test MSE: 0.206503252959391"
library(ggplot2)
ggplot(test_sig, aes(x = lmaliyet, y = predicted)) + geom_point() +  # Nokta olarak göster
  geom_abline(slope = 1, intercept = 0, color = "red") +  # 45 derece doğrusu
  labs(x = "Gerçek Değerler", y = "Tahmini Değerler", title = "Gerçek ve Tahmini Değerlerin Serpilme Grafiği")

summary(model2)$r.squared
## [1] 0.7453334

Soru 2

(a)

Önceki sorudaki verileri kullanarak bir regresyon ağacı eğitiniz. Ağacın grafiğini çizerek yorumlayınız. Test verisinde MSE’yi hesaplayınız. Önceki sorudaki regresyon modeline göre daha başarılı mı?

library(rpart.plot)
## Loading required package: rpart
model3 <- rpart(formula = lmaliyet ~ yas + cinsiyet + BMI + cocuksay + sigara + bolge, data = test_sig)
rpart.plot(model3)

(b)

Uygun ayarlanma parametrelerini seçerek Bagging ve Random Forest algoritmalarını eğitiniz. Her bir algoritmanın test MSE değerlerini hesaplayınız. Öncek sonuçlarla birlikte tartışınız. Bu yöntemlere göre önemli değişkenler hangileridir?

tahminler <- predict(model3, newdata = test_sig)
gercek_degerler <- test_sig$lmaliyet
hata_kareleri <- (tahminler - gercek_degerler)^2
mse <- mean(hata_kareleri)
mse
## [1] 0.1721315

Soru 3

(a)

Önceki sorulardaki sigorta veri kümesini kullanarak lmaliyet için Boosting algoritmasını eğitmek istiyoruz. Uygun ayarlanma parametrelerini kullanarak GBM paketi ile modeli eğitiniz. Test MSE değerini hesaplayınız ve önceki sonuçlarla karşılaştırınız.

install.packages("gbm")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(gbm)
## Loaded gbm 2.1.9
## This version of gbm is no longer under development. Consider transitioning to gbm3, https://github.com/gbm-developers/gbm3
gbm_model <- gbm(lmaliyet ~ yas + cinsiyet + BMI + cocuksay + sigara + bolge, data = test_sig,

                 distribution = "gaussian", n.trees = 100, interaction.depth = 3, shrinkage = 0.1)
gbm_tahminler <- predict(gbm_model, newdata = test_sig, n.trees = 100)
gbm_mse <- mean((gbm_tahminler - test_sig$lmaliyet)^2)
gbm_mse
## [1] 0.1208532

(b)

GBM boosting algoritmasında seçmemiz gereken 3 ayarlanma parametresi vardır. Bu hiperparametreler için aşağıdaki gibi bir grid oluşturalım.

# create a grid of hyper-parameters
B <- c(500,1000,2000,5000) # n.trees
d <- c(1,2,3,4)            # interaction.depth
lambda <- c(0.001,0.01,0.02,0.03,0.05,0.1,0.2) # shrinkage
G <- expand.grid(B=B, d=d, lambda=lambda)
# Hiperparametre grid'i oluşturun
B <- c(500, 1000, 2000, 5000)             # n.trees
d <- c(1, 2, 3, 4)                        # interaction.depth
lambda <- c(0.001, 0.01, 0.02, 0.03, 0.05, 0.1, 0.2) # shrinkage

# Grid oluşturma
G <- expand.grid(B = B, d = d, lambda = lambda)

# Grid'i gösterin
print(G)
##        B d lambda
## 1    500 1  0.001
## 2   1000 1  0.001
## 3   2000 1  0.001
## 4   5000 1  0.001
## 5    500 2  0.001
## 6   1000 2  0.001
## 7   2000 2  0.001
## 8   5000 2  0.001
## 9    500 3  0.001
## 10  1000 3  0.001
## 11  2000 3  0.001
## 12  5000 3  0.001
## 13   500 4  0.001
## 14  1000 4  0.001
## 15  2000 4  0.001
## 16  5000 4  0.001
## 17   500 1  0.010
## 18  1000 1  0.010
## 19  2000 1  0.010
## 20  5000 1  0.010
## 21   500 2  0.010
## 22  1000 2  0.010
## 23  2000 2  0.010
## 24  5000 2  0.010
## 25   500 3  0.010
## 26  1000 3  0.010
## 27  2000 3  0.010
## 28  5000 3  0.010
## 29   500 4  0.010
## 30  1000 4  0.010
## 31  2000 4  0.010
## 32  5000 4  0.010
## 33   500 1  0.020
## 34  1000 1  0.020
## 35  2000 1  0.020
## 36  5000 1  0.020
## 37   500 2  0.020
## 38  1000 2  0.020
## 39  2000 2  0.020
## 40  5000 2  0.020
## 41   500 3  0.020
## 42  1000 3  0.020
## 43  2000 3  0.020
## 44  5000 3  0.020
## 45   500 4  0.020
## 46  1000 4  0.020
## 47  2000 4  0.020
## 48  5000 4  0.020
## 49   500 1  0.030
## 50  1000 1  0.030
## 51  2000 1  0.030
## 52  5000 1  0.030
## 53   500 2  0.030
## 54  1000 2  0.030
## 55  2000 2  0.030
## 56  5000 2  0.030
## 57   500 3  0.030
## 58  1000 3  0.030
## 59  2000 3  0.030
## 60  5000 3  0.030
## 61   500 4  0.030
## 62  1000 4  0.030
## 63  2000 4  0.030
## 64  5000 4  0.030
## 65   500 1  0.050
## 66  1000 1  0.050
## 67  2000 1  0.050
## 68  5000 1  0.050
## 69   500 2  0.050
## 70  1000 2  0.050
## 71  2000 2  0.050
## 72  5000 2  0.050
## 73   500 3  0.050
## 74  1000 3  0.050
## 75  2000 3  0.050
## 76  5000 3  0.050
## 77   500 4  0.050
## 78  1000 4  0.050
## 79  2000 4  0.050
## 80  5000 4  0.050
## 81   500 1  0.100
## 82  1000 1  0.100
## 83  2000 1  0.100
## 84  5000 1  0.100
## 85   500 2  0.100
## 86  1000 2  0.100
## 87  2000 2  0.100
## 88  5000 2  0.100
## 89   500 3  0.100
## 90  1000 3  0.100
## 91  2000 3  0.100
## 92  5000 3  0.100
## 93   500 4  0.100
## 94  1000 4  0.100
## 95  2000 4  0.100
## 96  5000 4  0.100
## 97   500 1  0.200
## 98  1000 1  0.200
## 99  2000 1  0.200
## 100 5000 1  0.200
## 101  500 2  0.200
## 102 1000 2  0.200
## 103 2000 2  0.200
## 104 5000 2  0.200
## 105  500 3  0.200
## 106 1000 3  0.200
## 107 2000 3  0.200
## 108 5000 3  0.200
## 109  500 4  0.200
## 110 1000 4  0.200
## 111 2000 4  0.200
## 112 5000 4  0.200

Eğitim verilerini kullanarak 5-katlı çapraz geçerleme yöntemi ile optimal ayarlanma parametrelerini seçiniz. Bu değerleri kullanarak test MSE’yi hesaplayınız.


Soru 4

Bu soruda döviz kurunun yönünü (yukarı/aşağı) sınıflandırmaya çalışacağız. USD/TL döviz kurundaki günlük değişimin yönünü (up/down) son 5 günlük döviz kuru ve hisse senedi piyasası değişimlerinden hareketle öngörmek istiyoruz.

finmarkets.RData 13/01/2000 - 04/05/2020 dönemini kapsayan 5086 günlük gözlemden oluşmaktadır.

library(tidyverse)
load("finmarkets.RData")
str(finmarkets) 
## 'data.frame':    5086 obs. of  20 variables:
##  $ datechar     : chr  "2000-01-13" "2000-01-14" "2000-01-17" "2000-01-18" ...
##  $ year         : chr  "2000" "2000" "2000" "2000" ...
##  $ month        : chr  "01" "01" "01" "01" ...
##  $ day          : Ord.factor w/ 7 levels "Pazar"<"Pazartesi"<..: 5 6 2 3 4 6 2 3 4 5 ...
##  $ bist100      : num  18138 19110 18458 19577 19288 ...
##  $ usd          : num  0.539 0.54 0.543 0.546 0.546 ...
##  $ bistret      : num  6.87 5.22 -3.47 5.89 -1.49 ...
##  $ bistdirection: Factor w/ 2 levels "Down","Up": 2 2 1 2 1 1 1 2 2 2 ...
##  $ bistretlag1  : num  3.53 6.87 5.22 -3.47 5.89 ...
##  $ bistretlag2  : num  3.17 3.53 6.87 5.22 -3.47 ...
##  $ bistretlag3  : num  -2.27 3.17 3.53 6.87 5.22 ...
##  $ bistretlag4  : num  -4.42 -2.27 3.17 3.53 6.87 ...
##  $ bistretlag5  : num  -3.37 -4.42 -2.27 3.17 3.53 ...
##  $ usdret       : num  -0.0619 0.196 0.4419 0.6445 0.0304 ...
##  $ usddirection : Factor w/ 2 levels "Down","Up": 1 2 2 2 2 2 2 2 2 2 ...
##  $ usdretlag1   : num  0.8285 -0.0619 0.196 0.4419 0.6445 ...
##  $ usdretlag2   : num  0 0.8285 -0.0619 0.196 0.4419 ...
##  $ usdretlag3   : num  0.00299 0 0.82846 -0.06192 0.196 ...
##  $ usdretlag4   : num  -0.12587 0.00299 0 0.82846 -0.06192 ...
##  $ usdretlag5   : num  -0.92476 -0.12587 0.00299 0 0.82846 ...
##  - attr(*, "na.action")= 'omit' Named int [1:6] 1 2 3 4 5 6
##   ..- attr(*, "names")= chr [1:6] "1" "2" "3" "4" ...

usdret: USD/TL döviz kurundaki günlük değişim, %.

usddirection: iki seviyeli faktör değişkeni, usdret’in işaret negatifse “Down”, pozitifse “Up”.

usdretlag1-usdretlag5: usdret’in 5 günlük gecikmeli değerleri, birinci gecikme, ikinci gecikme, vs. 

bistretlag1-bistretlag5: BIST100 getirilerinin gecikmeli değerleri.

Bugünkü döviz kurunun yönünü öngörmek isteyen bir yatırımcının son beş günlük döviz kuru ve BIST100 hareketlerini bildiğini varsayıyoruz.

Verileri aşağıdaki gibi eğitim ve test kümelerine ayıralım:

fin_train <- finmarkets |> filter(year<=2016)
fin_test <- finmarkets |> filter(year>2016)

(a)

Eğitim kümesini kullanarak hedef değişken usddirection için bir lojistik regresyon sınıflandırma modeli eğitiniz. Modelde sadece usdretlag1 - usdretlag5 gecikme değişkenlerini (5 değişken) kullanın. Test verilerini kullanarak doğruluk ve hata oranlarını hesaplayınız. Karışıklık matrisini (Confusion matrix) hesaplayınız ve yorumlayınız. No information rate kaçtır? Model sizce başarılı mı?

model <- glm(usddirection ~ usdretlag1 + usdretlag2 + usdretlag3 + usdretlag4 + usdretlag5, 

             data = fin_train, 

             family = binomial)

predictions <- predict(model, newdata = fin_test, type = "response")

predicted_classes <- ifelse(predictions > 0.5, "Up", "Down")

actual_classes <- fin_test$usddirection

accuracy <- mean(predicted_classes == actual_classes)

cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.5354142
error_rate <- mean(predicted_classes != actual_classes)

cat("Error rate:", error_rate, "\n")
## Error rate: 0.4645858
conf_matrix <- table(predicted_classes, actual_classes)

conf_matrix
##                  actual_classes
## predicted_classes Down  Up
##              Down  270 264
##              Up    123 176

(b)

Lojistik regresyon modelini usdretlag1 - usdretlag5 gecikmelerinin yanı sıra BIST100 gecikmelerini, bistretlag1-bistretlag5, ekleyerek genişletiniz (toplamda 10 değişkenli bir model) ve eğitiniz. Modelin performansını test verilerinden hareketle değerlendiriniz ve öncek kısımdaki sonuçlarla karşılaştırınız. Test performansına göre hangi model daha başarılıdır? Seçtiğiniz modeli yatırım stratejilerinizde kullanır mısınız? Tartışınız.

logit_model_expanded <- glm(usddirection ~ usdretlag1 + usdretlag2 + usdretlag3 + usdretlag4 + usdretlag5 +

                            bistretlag1 + bistretlag2 + bistretlag3 + bistretlag4 + bistretlag5,

                            data = fin_train, family = binomial)

predicted_classes_expanded <- predict(logit_model_expanded, newdata = fin_test, type = "response")

predicted_direction_expanded <- ifelse(predicted_classes_expanded > 0.5, "Up", "Down")

test_accuracy_expanded <- mean(predicted_direction_expanded == fin_test$usddirection)

test_accuracy_expanded
## [1] 0.6110444

##Genişletilmiş modelin test verileri üzerindeki doğruluk oranı %61,1 olarak hesaplanmıştır. Önceki modele kıyasla daha yüksek bir doğruluk oranıdır, bu da genişletilmiş modelin daha iyi performans gösterdiğini gösterir.Yatırım stratejilerinde kullanmak için yeterli bulmuyorum. Modelin karmaşıklığı, uygulanabilirliği ve diğer faktörler de dikkate alınmalıdır.


Soru 5

yasamveri2015.RData dosyasında veriler isimli bir veri çerçevesi içinde Türkiye’de il düzeyinde mutluluk endeksi ile bazı il özelliklerine ilişkin değişkenler yer almaktadır.

load("yasamveri2015.RData")
str(veriler)
## tibble [81 × 42] (S3: tbl_df/tbl/data.frame)
##  $ il                 : chr [1:81] "Adana" "Adıyaman" "Afyonkarahisar" "Ağrı" ...
##  $ oda                : num [1:81] 1.22 0.93 1.36 0.84 1.4 1.57 1.38 1.62 1.45 1.55 ...
##  $ tuv                : num [1:81] 86.3 77.1 90.2 64.1 95 ...
##  $ ev_kalite          : num [1:81] 22.7 41.1 12.9 40.5 16.9 ...
##  $ istihdam           : num [1:81] 43.3 39.2 51.1 53.2 47.4 44.5 52.9 47.1 51.4 44.4 ...
##  $ issizlik           : num [1:81] 13.2 9.1 5.6 6.8 6.6 10.2 7.9 7.1 6.9 6 ...
##  $ ort_gun_kazanc     : num [1:81] 59.1 53.2 53.9 56.1 53.8 ...
##  $ is_tatmin          : num [1:81] 73.3 64.3 85.3 64 88.7 ...
##  $ tasarruf           : num [1:81] 5428 1543 4062 842 3121 ...
##  $ orta_ust_gelir_gr  : num [1:81] 34.1 16.3 29.7 22.6 34.8 ...
##  $ temel_iht_gr       : num [1:81] 59.8 74.8 44.1 73.5 43.8 ...
##  $ bebek_mort         : num [1:81] 13.18 12.06 9.57 14.43 15.38 ...
##  $ yasam_bek          : num [1:81] 77.4 79.5 77 75.6 77.8 ...
##  $ doktor_basv        : num [1:81] 5323 7437 5727 6720 8067 ...
##  $ saglik_tatmin      : num [1:81] 68.5 69.1 80.1 66.2 74.2 ...
##  $ kamu_saglik_tatmin : num [1:81] 72.5 74.6 87.3 63.3 86.5 ...
##  $ okullasma_3_5      : num [1:81] 28.4 30 31.8 25.4 47.1 ...
##  $ TEOG               : num [1:81] 282 289 296 234 317 ...
##  $ YGS                : num [1:81] 200 197 195 190 196 ...
##  $ yuk_egit_orani     : num [1:81] 14.21 12.29 10.78 8.62 13.43 ...
##  $ kamu_egit_tatmin   : num [1:81] 63.9 69 88.9 65.3 87.5 ...
##  $ hava_kir           : num [1:81] 44.8 71 81 47 29 ...
##  $ orman_alan         : num [1:81] 42.094 25.234 17.001 0.532 39.174 ...
##  $ atik_hiz           : num [1:81] 97.9 65.9 73.1 56.2 70 ...
##  $ gurultu_kir        : num [1:81] 25.53 19.39 6.48 12.92 12.83 ...
##  $ bel_temiz_tatmin   : num [1:81] 59.6 36.7 77.6 35.9 74.4 ...
##  $ cinayet            : num [1:81] 42.9 18.4 29.7 29.1 21.7 ...
##  $ tra_kaza           : num [1:81] 2.26 1.76 2.82 1.3 3.08 ...
##  $ gece_guv_yuru      : num [1:81] 53.1 73.6 87.2 57.9 67.5 ...
##  $ kamu_guv_tatmin    : num [1:81] 76.6 82.8 91.2 76.9 92.3 ...
##  $ oy_verme_belediye  : num [1:81] 88.1 87.2 92 77.1 91.2 90.9 89.8 87.7 90.7 91.3 ...
##  $ uyelik_siy_parti   : num [1:81] 20.6 22.3 20 18.6 22.1 ...
##  $ sendika            : num [1:81] 7.6 6.98 5.71 6.36 5.42 ...
##  $ internet           : num [1:81] 9.74 3.71 7.04 2.16 8.61 ...
##  $ kanalizasyon       : num [1:81] 91.5 67.7 71.9 50.4 69 ...
##  $ havaalani          : num [1:81] 7449.8 74.3 12 167 21.7 ...
##  $ kamu_ulasim_tatmin : num [1:81] 56.3 36.7 74.2 48.5 73.4 ...
##  $ sin_tiyatro        : num [1:81] 73.09 2.9 34.92 6.32 19.26 ...
##  $ avm                : num [1:81] 82.4 0 119.9 0 0 ...
##  $ sosyal_ilis_tatmin : num [1:81] 81.9 81.8 94 90 92.8 ...
##  $ sosyal_hayat_tatmin: num [1:81] 46.7 56.9 70.3 46.2 62.7 ...
##  $ mutluluk           : num [1:81] 53 65 76.4 60.1 66 ...

(a)

İllerin mutluluk düzeyinin histogramını çiziniz ve özet istatistikleri ile birlikte yorumlayınız. İlleri mutluluk düzeyine göre büyükten küçüğe doğru sıralayan bir grafik çiziniz. En mutlu ve en mutsuz iller hangileridir?

summary(veriler$mutluluk)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   41.98   56.54   60.39   61.15   65.57   77.66
veriler %>% ggplot(mapping = aes(x = mutluluk)) +

  geom_histogram(bins = 6, color = "darkblue", fill = "lightblue")

(b)

Hedef değişken mutluluk için bir LASSO regresyon modeli tahmin ediniz. Ayarlanma parametresi lambda’ya 5-katlı çapraz geçerleme ile belirleyiniz. Hangi değişkenler seçildi?

ggplot(veriler, aes(x = mutluluk, y = fct_reorder(il, mutluluk))) +

  geom_point() +

  theme(axis.text.y = element_text(size = 5)) + 

  labs(title = "Mutluluk sıralaması (2015)", 

       subtitle = "Kaynak: TÜİK") +

  xlab("Mutluluk düzeyi") +

  ylab("")

summary(veriler$mutluluk)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   41.98   56.54   60.39   61.15   65.57   77.66