library(ggplot2) library(DT) library(kableExtra) library(broom)

Bu dokümanda kullanılan paketler ggplot2(Wickham, 2016), DT (Xie et al., 2023), broom (Robinson et al., 2023), kableExtra (Zhu, 2021) dır.

1 Basit Regresyon

1.1 Regresyon Kullanım Alanları

  • Tarımda belli ürünlerin verimi etkileyen toprak türü, tohum, sulama v.b. faktörlerin saptanması ve bunlar yardımıyla belli şartlarda alınacak ürün miktarının kestirilmesi tarımın önemli konusudur.

  • Bir değişkenin değerlerinin ilgili başka değişkenler yardımıyla kestirilmesi, günlük yaşamımızın, ticaretin ekonominin, doğa ve sosyal bilimlerin önemli konularını içendedir.

  • günlük yaşamımızın, ticaretin ekonominin, doğa ve sosyal bilimlerin pek çok alanındaki çalışmalarda iki ya da daha çok değişken arasında fonksiyonel ilişkiler vardır. Bu ilişkiler matematiksel bir denklem yazılabilir.

Örneğin taksi hizmeti ödenen ucret = a + bxucret = a + bx

a: sabit (taksimetre açılış ücreti)

b: her kilometrede artan ücret

  • Regresyon çözümlemenin temel amacı; bağımlı değişken ile bağımsız değişken(ler) arasındaki ilişkiyi matematiksel modelle açıklayarak bağlantılar bulmak ve bağımsız değişken(ler) yardımıyla bağımlı değişkenli kestirmek şeklinde özetlenebilir.

  • Sosyal bilimlerde değişkenler arasındaki ilişkiler bir dereceye kadar fonksiyoneldir. (taksimetre örneği kadar net değildir!) Bu ilişkiye probabilisitik ilişki denir.

  • Sosyal bilimlerde değişkenler arasındaki ilişkilerin matematiksel olarak kesin ifadelerle yazılamaması, bu değişkenlere ait önceki bilgiler yardımıyla elde edilmesi ve matematiksel ifadelerin bu bilgilere dayanılarak yazılması yolunu açmıştır.

  • Regresyon terimi 19. yüzyılda İngiliz istatistikçisi Francis Galton tarafından bir biyolojik inceleme için ortaya atılmıştır. Bu incelemenin ana konusu kalıtım olup, aile içinde baba ve annenin boyu ile çocukların boyu arasındaki bağlantıyı araştırmakta ve çocukların boylarının bir nesil içinde eski ata nesillerinin ortalamasına geri döndüklerini yani bir nesil içinde ortalamaya geri dönüş olduğu inceleme konusudur.

  • Bir bağımsız X değişkeninin değerlerinden ona bağlı değişkeninin değerlerinin kestirilmesini sağlayan denkleme Y’nin X’e göre regresyonu denir.

\[Y={bx}+{a}\]

  • Regresyon denkleminde

  • b doğrunun eğimidir => X’in 1 puanlık değişimine karşılık Y’nin ne kadar değişeceğini belirtir. (buna regresyon katsayısı denir)

  • a ise Y kesişim noktasıdır => X sıfıra eşit olduğunda Y’nin alacağı değerdir (buna regresyon sabiti denir)

  • Lise matematik puanlarından yararlanarak üniversite genel matematik puanlarını kestirme amacıyla üniversite genel matematik dersini alan öğrencilerden uygun bir örneklem alınmıştır.

lise_not <- c(18,35,53,24,64,58,32,39,64,82,32,49,48,70,57)
uni_not  <- c(33,46,47,21,73,55,74,32,56,68,43,46,68,84,61)
veri <- data.frame(lise_not, uni_not)
  • Regresyon analizi yapmadan önce saçılım diyagramı incelenmelidir. Puanlar saçılım grafiğinde tek bir doğru oluşturmamaktadır. Ancak doğru oluşturma eğilimleri vardır.
  • Noktalardan olabildiğinde yakın geçecek bir doğru çizilebilirse bu doğrudan yararlanarak X puanı bilinen öğrencilerin Y puanları kestirilebilir.

1.2 Basit Doğrusal Regresyon Uygulama

library(kableExtra)

veri <- data.frame(lise_not = c(18, 35, 53, 24, 64, 58, 32, 39, 64, 82, 32, 49, 48, 70, 57),
                  uni_not = c(33, 46, 47, 21, 73, 55, 74, 32, 56, 68, 43, 46, 68, 84, 61))

kable(veri, col.names = c("lise_not", "uni_not")) %>%
  kable_styling(full_width = FALSE, font_size = 20) %>%
  row_spec(2,4,6,8, background = "lightgray")
lise_not uni_not
18 33
35 46
53 47
24 21
64 73
58 55
32 74
39 32
64 56
82 68
32 43
49 46
48 68
70 84
57 61

İlişki grafik üzerinde görelim.

veri <- data.frame(lise_not = c(18, 35, 53, 24, 64, 58, 32, 39, 64, 82, 32, 49, 48, 70, 57),
                  uni_not = c(33, 46, 47, 21, 73, 55, 74, 32, 56, 68, 43, 46, 68, 84, 61))
library(ggplot2)
ggplot2::ggplot(veri, aes(x = lise_not, y = uni_not)) + 
            geom_point() +   
            geom_smooth(method = "lm", se = F)
## `geom_smooth()` using formula = 'y ~ x'

## `geom_smooth()` using formula = 'y ~ x'

Basit regresyon denklemini kuralım.

basitreg <- lm(uni_not ~ lise_not , veri)
summary(basitreg)
## 
## Call:
## lm(formula = uni_not ~ lise_not, data = veri)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.4748  -8.3488  -0.4494   5.0374  31.1580 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  21.3733    10.1955   2.096   0.0562 . 
## lise_not      0.6709     0.1983   3.383   0.0049 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.45 on 13 degrees of freedom
## Multiple R-squared:  0.4681, Adjusted R-squared:  0.4272 
## F-statistic: 11.44 on 1 and 13 DF,  p-value: 0.004904
## Call:
## lm(formula = uni_not ~ lise_not, data = veri)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -16.4748  -8.3488  -0.4494   5.0374  31.1580 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  21.3733    10.1955   2.096   0.0562 . 
## lise_not      0.6709     0.1983   3.383   0.0049 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.45 on 13 degrees of freedom
## Multiple R-squared:  0.4681, Adjusted R-squared:  0.4272 
## F-statistic: 11.44 on 1 and 13 DF,  p-value: 0.004904

1.3 En küçük kareler yöntemi

  • Bu yönteme göre a ve b öyle bir belirlenmelidir ki dağılımdaki noktaların, doğrunun etrafındaki değişkenliği en aza indirgenmiş olmalıdır.

  • Regresyon doğrusu, noktalar ile regresyon doğrusu arasındaki sapmaların kareler toplamı en az olacak şekilde, saçılım grafiğindeki noktalar kümesine en uygun yere çizildiğinden bu ölçüte en küçük kareler ölçütü adı verilir.

  • Y değeri ve regresyon doğrusundaki Y’nin arasındaki farkın en küçük olacak şekilde yerleştirilir.

  • ∑(Y−Y′) 2 en küçük olacak şekilde yerleştirir.

  • byx hesaplama

  • \[b~yx~ = {n∑XY}-{∑X∑Y} \ {\{n∑X^2^}-{(∑X)^2}\]

  • n <- length(lise_not)
    byx = (n*sum(lise_not*uni_not)-sum(lise_not)*sum(uni_not))/
      (n*sum(lise_not^2) - sum(lise_not)^2);byx
## [1] 0.670898
  • Regresyon doğrusunun eğimi, değişkenlerin standart sapmalarının oranlarıyla bunlar arasındaki korelasyonun çarpımına eşittir.
(sd(uni_not)/sd(lise_not))*cor(lise_not,uni_not)
## [1] 0.670898
  • ayx hesaplama

  • \[a~yx~= n∑Y- b~yx~∑X\n\] attach(veri) ## The following objects are masked by .GlobalEnv: ## ## lise_not, uni_not ayx = (sum(uni_not) - byx*sum(lise_not))/15 ayx ## [1] 21.37326

1.4 Kestirimin Standart Hatası

  • Kestirim sonunda Y değişkeninin gözlenen değerleri ile regresyon değerleri Y’ arasında fark olmaması veya bu farkın olabildiği kadar küçük olması istenir.

  • Gözlenen Y ve kestirilen Y’ değerleri arasındaki farklar kestirimdeki hatalardır. Bu farkların karelerinin ortalamasının kare köküne kestirimin standart hatası adı verilir.

\[S~yx~ = {sqrt}{∑(Y-Y')^2\n-2}\] \[S~yx~ = {sqrt}{∑(Y)^2-a∑Y- b∑XY}\{n-2}\]

  • Ortak dağılımın için kestirimin standart hatası tek değişkenli dağılımın standart sapmasına benzer.

  • Standart sapma tek değişkenli dağılımın ortalamadan farkının standart bir ölçüsü olduğu gibi, kestirimin standart hatası da noktaların standart regresyon çizgisinden farkının ölçüsüdür.

  • Bu nedenle kestirimin standart hatası verilen X değeri için kestirilen Y değerinin standart sapması şeklinde okunabilen Syx sembolü ile gösterilir.

X değerlerinden kestirilen Y’lerin standart hatası

res <- basitreg$residuals
sd(res)
## [1] 12.95603
sqrt(sum((res - mean(res)) ^ 2 / (length(res)-2)))
## [1] 13.44511
basitreg <- lm(uni_not ~ lise_not , veri)
library(broom)
glance(basitreg)
## # A tibble: 1 × 12
##   r.squared adj.r.squared sigma statistic p.value    df logLik   AIC   BIC
##       <dbl>         <dbl> <dbl>     <dbl>   <dbl> <dbl>  <dbl> <dbl> <dbl>
## 1     0.468         0.427  13.4      11.4 0.00490     1  -59.2  124.  127.
## # ℹ 3 more variables: deviance <dbl>, df.residual <int>, nobs <int>
  • R iki değişken arasında pearson korelasyon katsayısı

  • R-Square:R-Square: Determinasyon katsayısı/bağımsız değişkenin bağımlı değişken üzerindeki açıklama oranı

  • Adjusted R SquareAdjusted R Square: Düzeltmiş determinasyon katsayısı, şans eseri açıklanan değişimin neden olduğu hatanın arındırılmış hali.

  • Standart Kestirimin Hatası:Standart Kestirimin Hatası: Hata teriminin standart sapmasıdır.

1.5 Basit Doğrusal Regresyon Uygulama

basitreg <- lm(uni_not ~ lise_not , veri)
library(broom)
glance(basitreg) %>% kable()
r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual nobs
0.4681284 0.4272152 13.44511 11.44199 0.0049036 1 -59.19005 124.3801 126.5042 2350.021 13 15
  • Tablodaki p değeri regresyon modelindeki yordanan ve yordayan değişkenler arasındaki ilişki için hesaplanan değerin anlamlı olup olmadığını göstermektedir.

    glance(basitreg)[,c(1,2,4,6,5)]
    ## # A tibble: 1 × 5
    ##   r.squared adj.r.squared statistic    df p.value
    ##       <dbl>         <dbl>     <dbl> <dbl>   <dbl>
    ## 1     0.468         0.427      11.4     1 0.00490
  • Yani regresyon modelinde lise matematik puanları ile genel matematik puanları arasında doğrusal ilişki anlamlı düzeydedir. Regresyon modelindeki df df 1 olması nedeni,regresyon modelindeki sabit ve eğimi katsayı olarak almasıdır. 2-1

    tidy(basitreg)
    ## # A tibble: 2 × 5
    ##   term        estimate std.error statistic p.value
    ##   <chr>          <dbl>     <dbl>     <dbl>   <dbl>
    ## 1 (Intercept)   21.4      10.2        2.10 0.0562 
    ## 2 lise_not       0.671     0.198      3.38 0.00490
  • p p değerleri sabitin ve yordayıcı değişkenin katsayısının anlamlılık testi sonuçları

Kaynaklar

Kilic, S. (2013). Linear regression analysis. Journal of Mood Disorders, 3(2), 90. https://doi.org/10.5455/jmood.20130624120840

Robinson, D., Hayes, A., & Couch, S. (2023). Broom: Convert statistical objects into tidy tibbles. https://CRAN.R-project.org/package=broom

Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. https://ggplot2.tidyverse.org

Xie, Y., Cheng, J., & Tan, X. (2023). DT: A wrapper of the JavaScript library 'DataTables'. https://CRAN.R-project.org/package=DT

Zhu, H. (2021). kableExtra: Construct complex table with 'kable' and pipe syntax. https://CRAN.R-project.org/package=kableExtra