Keşifçi Veri Analizi

Keşifçi Veri Analizi (Exploratory Data Analysis veya kısaca EDA), veri setinizi anlamak, içindeki örüntüleri ve ilişkileri belirlemek ve olası sorunları tanımlamak amacıyla veriye yakından bakmanızı sağlayan bir veri analizi yaklaşımıdır. EDA, verileri tanımanıza veya verilerdeki olası özellikler ve ilişkiler hakkında daha derin bir anlayış kazanmanıza yardımcı olabilir. EDA, yeni bir şey değildir, ancak EDA, birkaç nedenden dolayı yakın geçmişte önemli ölçüde büyümüştür:

EDA, verilerinizin nihai analizi açısından genellikle istatistiksel değildir, ancak EDA’nın geçiş süreci olarak düşünülmesi gerekir. EDA’dan öğrendikleriniz modellemenize rehberlik edecek ve istatistiksel araçlar hakkında verdiğiniz kararları doğrudan bilgilendirecektir. R gibi programlama dilleri ve istatistiksel araçlar, EDA sürecini kolaylaştırmak ve verileri görselleştirmek için kullanışlıdır. EDA, veri madenciliği ve veri bilimi projelerinin başlangıcında sıklıkla kullanılır ve aşağıdaki adımları içerir:

  1. Veri İçe Aktarma: İlk adım, analiz yapmak için veriyi içe aktarmaktır. Veriyi R ortamına çeşitli formatlardan (CSV, Excel, SQL veritabanları, vb.) içe aktarabilirsiniz.

  2. Veriye Genel Bakış: Veri setinize ilk bakışta, kaç gözlem ve değişken olduğunu, değişken türlerini (sayısal, kategorik, metinsel vb.) ve eksik verilerin varlığını incelemelisiniz. Bu bilgi, veri hakkında ilk fikirlerinizi oluşturmanıza yardımcı olur.

  3. Veri Görselleştirme: Verileri görselleştirmek, EDA’nın önemli bir parçasıdır. R’nin ggplot2 gibi kütüphaneleri, verilerinizi grafiklerle görselleştirmek için kullanışlı araçlar sunar. Histogramlar, kutu grafikleri, çubuk grafikleri ve dağılım grafikleri gibi grafikler oluşturarak verilerinizi daha iyi anlayabilirsiniz.

  4. Merkezi Eğilim ve Dağılım Ölçüleri: Veri setinizin merkezi eğilimini (ortalama, medyan, mod) ve dağılımını (standart sapma, varyans, çeyrekler arası aralık) hesaplayarak verilerinizin genel özelliklerini değerlendirebilirsiniz.

  5. Değişkenler Arası İlişkiler: Değişkenler arasındaki ilişkileri anlamak için korelasyon analizi, scatter plotlar ve faktör analizi gibi teknikleri kullanabilirsiniz.

  6. Aykırı Değerler ve Eksik Veriler: Aykırı değerleri tanımlayın ve bunların analiz üzerindeki etkilerini değerlendirin. Ayrıca eksik verileri ele alın (örneğin, eksik verileri doldurma veya eksik gözlemleri çıkarma).

  7. Veri Gruplama ve Alt Kümelere Bölme: İhtiyaca göre veriyi gruplara ayırabilir veya alt kümeler oluşturabilirsiniz. Bu, farklı veri alt kümeleri arasındaki farkları incelemek için kullanışlı olabilir.

  8. Hipotez Testleri ve İstatistiksel Analiz: EDA süreci sırasında, veriler üzerinde belirli hipotezleri test etmek için istatistiksel testler (t-test, ANOVA, vb.) uygulayabilirsiniz. Bu, verilerinizde anlamlı farklılıkları veya özellikleri tespit etmenize yardımcı olur.

  9. Sonuçların Yorumlanması: EDA sürecinin sonunda, elde edilen sonuçları yorumlamalı ve bulgularınızı raporlamalısınız. Bulgularınız, daha sonraki analiz aşamaları veya veri madenciliği projeleri için temel oluşturur.

EDA, veri analizi sürecinin önemli bir parçasıdır çünkü veriyi daha iyi anlamanızı ve daha ileri analizler için yol haritasını belirlemenizi sağlar. Aynı zamanda veri setinizdeki hataları veya tutarsızlıkları tespit etmenize ve düzeltmenize de yardımcı olur.

Veri ile Tanışma

Veri analizinin başlangıç aşamasında, verinin yapısına, ne tür değişkenler içerdiğine, çeşitli özet istatistiklerine bakmak ve gerekli ise ne tür dönüşümler yapmak gerektiğini bilmek önemlidir. Bu süreçler daha derin analizlere daha kolay devam edebilmek için de önemlidir. Bunları gerçekleştirmek için hem özet tablolar hem de grafikler yardımıyla verileri tanımak gerekmektedir.

Tek ve iki değişkenli olarak sayısal ve kategorik veri analizi mpg verisi kullanılarak yapılacaktır. Bu veri setinde 38 farklı aracın yakıt verileri bulunmaktadır.

# mpg verisi ggplot2 paketinde olduğundan paketi çağırıyoruz
library(ggplot2)

head(mpg)
# A tibble: 6 × 11
  manufacturer model displ  year   cyl trans      drv     cty   hwy fl    class 
  <chr>        <chr> <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr> 
1 audi         a4      1.8  1999     4 auto(l5)   f        18    29 p     compa…
2 audi         a4      1.8  1999     4 manual(m5) f        21    29 p     compa…
3 audi         a4      2    2008     4 manual(m6) f        20    31 p     compa…
4 audi         a4      2    2008     4 auto(av)   f        21    30 p     compa…
5 audi         a4      2.8  1999     6 auto(l5)   f        16    26 p     compa…
6 audi         a4      2.8  1999     6 manual(m5) f        18    26 p     compa…
nrow(mpg)
[1] 234
ncol(mpg)
[1] 11
str(mpg)
tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
 $ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
 $ model       : chr [1:234] "a4" "a4" "a4" "a4" ...
 $ displ       : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
 $ year        : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
 $ cyl         : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
 $ trans       : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
 $ drv         : chr [1:234] "f" "f" "f" "f" ...
 $ cty         : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
 $ hwy         : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
 $ fl          : chr [1:234] "p" "p" "p" "p" ...
 $ class       : chr [1:234] "compact" "compact" "compact" "compact" ...
colnames(mpg)
 [1] "manufacturer" "model"        "displ"        "year"         "cyl"         
 [6] "trans"        "drv"          "cty"          "hwy"          "fl"          
[11] "class"       
summary(mpg)
 manufacturer          model               displ            year     
 Length:234         Length:234         Min.   :1.600   Min.   :1999  
 Class :character   Class :character   1st Qu.:2.400   1st Qu.:1999  
 Mode  :character   Mode  :character   Median :3.300   Median :2004  
                                       Mean   :3.472   Mean   :2004  
                                       3rd Qu.:4.600   3rd Qu.:2008  
                                       Max.   :7.000   Max.   :2008  
      cyl           trans               drv                 cty       
 Min.   :4.000   Length:234         Length:234         Min.   : 9.00  
 1st Qu.:4.000   Class :character   Class :character   1st Qu.:14.00  
 Median :6.000   Mode  :character   Mode  :character   Median :17.00  
 Mean   :5.889                                         Mean   :16.86  
 3rd Qu.:8.000                                         3rd Qu.:19.00  
 Max.   :8.000                                         Max.   :35.00  
      hwy             fl               class          
 Min.   :12.00   Length:234         Length:234        
 1st Qu.:18.00   Class :character   Class :character  
 Median :24.00   Mode  :character   Mode  :character  
 Mean   :23.44                                        
 3rd Qu.:27.00                                        
 Max.   :44.00                                        
df <- mpg

# class değişkenini faktöre çevirip, kategorilerine bakalım
df$class <- factor(df$class)
levels(df$class)
[1] "2seater"    "compact"    "midsize"    "minivan"    "pickup"    
[6] "subcompact" "suv"       
dplyr::glimpse(df)
Rows: 234
Columns: 11
$ manufacturer <chr> "audi", "audi", "audi", "audi", "audi", "audi", "audi", "…
$ model        <chr> "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 quattro", "…
$ displ        <dbl> 1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0, 2.0, 2.…
$ year         <int> 1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1999, 200…
$ cyl          <int> 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, 8, …
$ trans        <chr> "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)", "auto…
$ drv          <chr> "f", "f", "f", "f", "f", "f", "f", "4", "4", "4", "4", "4…
$ cty          <int> 18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 17, 17, 1…
$ hwy          <int> 29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 25, 25, 2…
$ fl           <chr> "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p…
$ class        <fct> compact, compact, compact, compact, compact, compact, com…

Sürekli Değişkenler

Veri analizi, birçok farklı değişken türünün incelenmesini gerektirir. Bu değişkenler arasında sürekli değişkenler özellikle önemlidir. Sürekli değişkenler, belirli bir aralıktaki değerleri alabilen ve sonsuz sayıda mümkün değer içeren değişkenlerdir. Örnek olarak, yaş, gelir, sıcaklık gibi değerler sürekli değişkenlere örnektir. Sürekli değişkenlerin analizi, verileri anlamak ve içindeki örüntüleri keşfetmek için kullanılır. Bu analiz, genellikle aşağıdaki adımları içerir:

  1. Veri Görselleştirme:Sürekli değişkenlerin analizine başlamak için verilerinizi görselleştirmek önemlidir. Histogramlar, kutu grafikleri, yoğunluk grafikleri ve saçılım grafikleri gibi grafikler, veri dağılımını ve örüntülerini görsel olarak incelemenize yardımcı olur. Bu grafikler, veri setinizin merkezi eğilimini (ortalama veya medyan), yayılımını ve aykırı değerleri hızla görmeye yardımcı olur.

  2. Merkezi Eğilim ve Dağılım Ölçüleri: Sürekli değişkenlerin merkezi eğilimini ve dağılımını hesaplamak verileri özetlemenin önemli bir yoludur. Bu ölçümler, veri setinin merkezi noktasını ve veri noktalarının nasıl dağıldığını anlamamıza yardımcı olur. Örnek olarak, ortalama (mean), medyan (median), standart sapma (standard deviation) ve varyans (variance) gibi ölçümler bu aşamada kullanılır.

  3. Korelasyon Analizi: Eğer birden fazla sürekli değişken arasındaki ilişkiyi anlamak istiyorsanız, korelasyon analizi yapabilirsiniz. Korelasyon, iki değişken arasındaki ilişkinin gücünü ve yönünü ölçer. Korelasyon katsayısı, bu ilişkiyi değerlendirmek için kullanılır. Pozitif bir korelasyon, iki değişkenin aynı yönde değiştiğini, negatif bir korelasyon ise iki değişkenin ters yönde değiştiğini gösterir.

  4. Hipotez Testleri: Sürekli değişkenler arasındaki farklılıkları değerlendirmek için hipotez testleri kullanılabilir. Örneğin, iki grup arasındaki ortalama değerlerin istatistiksel olarak anlamlı bir farklılık gösterip göstermediğini belirlemek için t-testleri veya ANOVA analizi kullanılabilir.

  5. Güven Aralıkları: Sürekli değişkenlerin analizi sırasında, belirli bir parametre (örneğin, ortalama) hakkında güven aralıkları hesaplanabilir. Bu güven aralıkları, parametrenin belirli bir güven düzeyinde bulunduğu aralığı gösterir. Bu, parametrenin tahmini kesinliğini değerlendirmek için kullanışlıdır.

Sürekli değişkenlerin analizi, verileri anlama ve kararlarınızı destekleme sürecinin önemli bir parçasıdır. İyi bir analiz, veri setinizdeki örüntüleri ve ilişkileri açığa çıkarmanıza yardımcı olur ve bilinçli kararlar almanıza yardımcı olur. Bu nedenle, sürekli değişkenlerin analizi yaparken yukarıda belirtilen adımları takip etmek önemlidir.

# cty ve hwy değişkenlerini inceleyelim. 
# cty şehiriçi, hwy şehirarasını ifade ediyor.

summary(df$cty)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   9.00   14.00   17.00   16.86   19.00   35.00 
var(df$cty)
[1] 18.11307
mean(df$cty)
[1] 16.85897
summary(df$hwy)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  12.00   18.00   24.00   23.44   27.00   44.00 
var(df$hwy)
[1] 35.45778
mean(df$hwy)
[1] 23.44017
# 1 mile= 1.609 km
# 1 galon = 3.79 lt

# litre başına km hesaplama
galonmil_to_ltkm <- function(x){
  
  km <- x * 1.609/3.79
  return(km)
}

df$cty_ltkm <- galonmil_to_ltkm(df$cty)
df$hwy_ltkm <- galonmil_to_ltkm(df$hwy)
quantile(df$cty_ltkm) 
       0%       25%       50%       75%      100% 
 3.820844  5.943536  7.217150  8.066227 14.858839 
# şehiriçi araçların % 75'i 1 lt ile 8.06 km den az yol alıyor.
quantile(df$hwy_ltkm)
       0%       25%       50%       75%      100% 
 5.094459  7.641689 10.188918 11.462533 18.679683 
# şehirlerarası araçların % 75'i 1 lt ile 11.46 km den az yol alıyor.


# değişken dağılımı için histogram grafiği kullanılabilir.
hist(df$cty_ltkm,freq = FALSE,col = "red",border = "blue")
lines(density(df$cty_ltkm), col = "black", lwd = 2,)

hist(df$hwy_ltkm,xlim = c(4,20), ylim = c(0,60), breaks = 10)

# Boxplot
boxplot(df$cty_ltkm, main = "Boxplot cty")

fivenum(df$cty_ltkm) # minimum, Q1, median, Q3, maximum
[1]  3.820844  5.943536  7.217150  8.066227 14.858839
# outliers 
boxplot(df$cty_ltkm)$out

[1] 11.88707 11.88707 14.00976 14.85884 12.31161
# outliers hangi sıralarda
which(df$cty_ltkm %in% boxplot(df$cty_ltkm)$out)
[1] 100 197 213 222 223
boxplot(df$hwy_ltkm, main = "Boxplot cty")

fivenum(df$hwy_ltkm) # minimum, Q1, median, Q3, maximum
[1]  5.094459  7.641689 10.188918 11.462533 18.679683
boxplot(hwy_ltkm ~ cyl, data = df, xlab = "Silindir Sayısı",
   ylab = "Litre Başına KM", main = "Mileage Data")

boxplot(hwy_ltkm ~ cyl, data = df, 
   xlab = "Silindir Sayısı",
   ylab = "Litre Başına KM", 
   main = "Mileage Data",
   notch = TRUE, 
   varwidth = TRUE, 
   col = c("green","yellow","purple","blue"),
   names = c("2 Silindir","4 Silindir","6 Silindir","8 Silindir")
)
Warning in (function (z, notch = FALSE, width = NULL, varwidth = FALSE, : some
notches went outside hinges ('box'): maybe set notch=FALSE

# Sürekli iki değişken incelemek istersek;

# displ ve cty_ltkm değişkenlerini inceleyelim
# displ motor hacmini ifade ediyor

summary(df$displ)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.600   2.400   3.300   3.472   4.600   7.000 
with(df,cor(displ,cty_ltkm))
[1] -0.798524
# motor hacmi ile lt başına km ters ilişkili

plot(df$displ,df$cty_ltkm, 
     main = "Motor Hacmi- Yakıt Tüketimi Saçılım Grafiği",
     col="red",
     xlab = "Motor Hacmi",
     ylab = "Yakıt Tüketimi")

# birden fazla değişkenin saçılım grafiği
pairs(~hwy_ltkm+cty_ltkm+displ+cyl,data = df,main = "Scatterplot Matrix")

Kategorik Değişkenler

Veri analizi sürecinde, kategorik değişkenler (veya gruplar) genellikle çok önemli bir rol oynar. Kategorik değişkenler, belirli bir sınıfı veya kategoriyi temsil eden değişkenlerdir ve tipik olarak metin veya sembollerle ifade edilirler. Örnek olarak, cinsiyet, eğitim seviyesi, ürün kategorileri gibi değişkenler kategorik değişkenlere örnektir. Kategorik değişkenlerin analizi, bu değişkenlerin içindeki örüntüleri, dağılımları ve ilişkileri anlamamıza yardımcı olur. Aşağıda, kategorik değişkenlerin analizi için izlenebilecek temel adımları bulabilirsiniz:

  1. Frekans Tabloları ve Görselleştirme: Kategorik değişkenlerin frekans tablolarını ve grafiklerini oluşturarak, her kategori veya sınıfın veri setinde ne kadar sık görüldüğünü anlayabilirsiniz. Örneğin, bar grafikleri, pasta grafikleri veya çubuk grafikleri kullanarak kategori frekanslarını görselleştirebilirsiniz. summary() ve table() gibi R fonksiyonları ile bu verileri inceleyebilirsiniz.

  2. İlişkileri İnceleme: Kategorik değişkenler arasındaki ilişkileri anlamak önemlidir. İki kategorik değişken arasındaki ilişkiyi değerlendirmek için çapraz tablolar (cross-tabulation) ve ki-kare (chi-squared) istatistiksel testleri kullanabilirsiniz. Bu testler, iki değişken arasındaki bağımlılığı değerlendirmek için kullanılır.

  3. İstatistiksel Testler: Kategorik değişkenlerin analizi sırasında, gruplar arasındaki farkları değerlendirmek için hipotez testleri kullanabilirsiniz. İki kategorik değişken arasındaki ilişkinin istatistiksel olarak anlamlı olup olmadığını belirlemek için ki-kare testi veya Fisher’in kesin testi gibi testler kullanabilirsiniz. Ayrıca ANOVA gibi testler, bir kategorik değişkenin birden fazla grup üzerindeki etkisini değerlendirmek için kullanılabilir.

  4. Veri Görselleştirme: Kategorik değişkenlerin analizinde, gruplar arasındaki farkları daha iyi anlamak için grafikler kullanabilirsiniz. Bar grafikleri, grupların frekanslarını görselleştirmek için sıklıkla kullanılırken, gruplar arasındaki ilişkiyi anlamak için mozaik grafikleri veya heatmap’leri de kullanabilirsiniz.

Kategorik değişkenlerin analizi, veri setinizin içindeki desenleri ve ilişkileri anlamanıza yardımcı olur. Bu analiz, kararlarınızı desteklemek ve veriyi daha iyi anlamak için önemlidir. R programlama dili, kategorik değişkenlerin analizi için bir dizi kullanışlı fonksiyon ve paket sunar. Bu adımları takip ederek, veri analiz projelerinizde kategorik değişkenleri etkili bir şekilde analiz edebilirsiniz.

# class ve trans değişkenlerine bakalım
# class araç sınıfı, trans ise vites türünü ifade ediyor.

summary(df$class)
   2seater    compact    midsize    minivan     pickup subcompact        suv 
         5         47         41         11         33         35         62 
table(df$class)

   2seater    compact    midsize    minivan     pickup subcompact        suv 
         5         47         41         11         33         35         62 
xtabs(~class,data=df)
class
   2seater    compact    midsize    minivan     pickup subcompact        suv 
         5         47         41         11         33         35         62 
table(df$trans)

  auto(av)   auto(l3)   auto(l4)   auto(l5)   auto(l6)   auto(s4)   auto(s5) 
         5          2         83         39          6          3          3 
  auto(s6) manual(m5) manual(m6) 
        16         58         19 
prop.table(table(df$class))

   2seater    compact    midsize    minivan     pickup subcompact        suv 
0.02136752 0.20085470 0.17521368 0.04700855 0.14102564 0.14957265 0.26495726 
tab <- table(df$class)
barplot(tab,col="blue",border="red")

pie(tab)

par(mfrow = c(1, 2))
barplot(tab)
pie(tab)

# Kategorik iki değişken incelemek istersek;

xtabs(~trans+class,data=df)
            class
trans        2seater compact midsize minivan pickup subcompact suv
  auto(av)         0       2       3       0      0          0   0
  auto(l3)         0       1       0       1      0          0   0
  auto(l4)         1       8      14       8     12         11  29
  auto(l5)         0       4       5       0      8          4  18
  auto(l6)         0       0       0       2      0          0   4
  auto(s4)         0       2       1       0      0          0   0
  auto(s5)         0       2       0       0      0          0   1
  auto(s6)         1       5       6       0      0          1   3
  manual(m5)       0      18       9       0      8         16   7
  manual(m6)       3       5       3       0      5          3   0
prop.table(table(df$year,df$class),1) # satır toplamları 1' eşittir
      
          2seater    compact    midsize    minivan     pickup subcompact
  1999 0.01709402 0.21367521 0.17094017 0.05128205 0.13675214 0.16239316
  2008 0.02564103 0.18803419 0.17948718 0.04273504 0.14529915 0.13675214
      
              suv
  1999 0.24786325
  2008 0.28205128
prop.table(table(df$year,df$class),2) # sütun toplamları 1' eşittir
      
         2seater   compact   midsize   minivan    pickup subcompact       suv
  1999 0.4000000 0.5319149 0.4878049 0.5454545 0.4848485  0.5428571 0.4677419
  2008 0.6000000 0.4680851 0.5121951 0.4545455 0.5151515  0.4571429 0.5322581
proportions(xtabs(~ manufacturer + year, data = df), 1)
            year
manufacturer      1999      2008
  audi       0.5000000 0.5000000
  chevrolet  0.3684211 0.6315789
  dodge      0.4324324 0.5675676
  ford       0.6000000 0.4000000
  honda      0.5555556 0.4444444
  hyundai    0.4285714 0.5714286
  jeep       0.2500000 0.7500000
  land rover 0.5000000 0.5000000
  lincoln    0.6666667 0.3333333
  mercury    0.5000000 0.5000000
  nissan     0.4615385 0.5384615
  pontiac    0.6000000 0.4000000
  subaru     0.4285714 0.5714286
  toyota     0.5882353 0.4117647
  volkswagen 0.5925926 0.4074074
# araç sınıfı ile drv değişkenine birlikte bakalım
# f = front-wheel drive (önden çekiş), 
# r = rear wheel drive (arkadan çekiş), 
# 4 = 4wd (4 çeker)

plot(class ~ factor(drv), data = df)

Eğer hem sürekli hem de kategorik değişkenleri incelemek istersek, benzer şekilde görselleştirme ve kategoriler arasında merkezi eğilim ölçüleri hesaplanabilir. Bunlar dışında uygun istatistiksel testler de gerçekleştirilebilir.

# Silindir düzeyinde yakıt tüketimi 
tapply(df$cty_ltkm, df$cyl, mean)
       4        5        6        8 
8.920545 8.703034 6.883968 5.337052 
# Same using aggregate()
aggregate(cty_ltkm ~ cyl, data = df, FUN = mean)
  cyl cty_ltkm
1   4 8.920545
2   5 8.703034
3   6 6.883968
4   8 5.337052
boxplot(cty_ltkm ~ cyl, data = df)

Zaman Serileri

R programlama dili, zaman serileri analizi için kapsamlı bir dizi fonksiyon ve paket sunar. Zaman serileri analizi, zaman içindeki veri noktalarının örüntülerini ve trendlerini incelemeyi amaçlar. R’de zaman serileri ile çalışmak için ts (time series) nesnesi kullanılır. Bu nesne, zaman serisi verilerini zaman dilimleri (örneğin aylar, yıllar) veya tarihler ile ilişkilendirerek işlem yapmanıza olanak tanır.

AirPassengers
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432
class(AirPassengers)
[1] "ts"
diff(AirPassengers) # fark alma
      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
1949         6   14   -3   -8   14   13    0  -12  -17  -15   14
1950   -3   11   15   -6  -10   24   21    0  -12  -25  -19   26
1951    5    5   28  -15    9    6   21    0  -15  -22  -16   20
1952    5    9   13  -12    2   35   12   12  -33  -18  -19   22
1953    2    0   40   -1   -6   14   21    8  -35  -26  -31   21
1954    3  -16   47   -8    7   30   38   -9  -34  -30  -26   26
1955   13   -9   34    2    1   45   49  -17  -35  -38  -37   41
1956    6   -7   40   -4    5   56   39   -8  -50  -49  -35   35
1957    9  -14   55   -8    7   67   43    2  -63  -57  -42   31
1958    4  -22   44  -14   15   72   56   14 -101  -45  -49   27
1959   23  -18   64  -10   24   52   76   11  -96  -56  -45   43
1960   12  -26   28   42   11   63   87  -16  -98  -47  -71   42
stats::lag(AirPassengers,-1) # 1. gecikmesini alma
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949     112 118 132 129 121 135 148 148 136 119 104
1950 118 115 126 141 135 125 149 170 170 158 133 114
1951 140 145 150 178 163 172 178 199 199 184 162 146
1952 166 171 180 193 181 183 218 230 242 209 191 172
1953 194 196 196 236 235 229 243 264 272 237 211 180
1954 201 204 188 235 227 234 264 302 293 259 229 203
1955 229 242 233 267 269 270 315 364 347 312 274 237
1956 278 284 277 317 313 318 374 413 405 355 306 271
1957 306 315 301 356 348 355 422 465 467 404 347 305
1958 336 340 318 362 348 363 435 491 505 404 359 310
1959 337 360 342 406 396 420 472 548 559 463 407 362
1960 405 417 391 419 461 472 535 622 606 508 461 390
1961 432                                            
plot(AirPassengers,type = "p", col = "red") # points

plot(AirPassengers,type = "l", col = "red") # line

plot(AirPassengers,type = "o", col = "red") # points and line

plot(log(AirPassengers),type = "l", col = "red") # line

plot(diff(AirPassengers),type = "l", col = "red") # line

plot(diff(log(AirPassengers)),type = "l", col = "red") # line

# çoklu zaman serisi
ts <- ts(rnorm(length(AirPassengers),250,100),start = c(1949,1),frequency=12)
ts
            Jan        Feb        Mar        Apr        May        Jun
1949 290.786144 192.203541 298.816237 277.792359 275.752298 483.380534
1950  87.985113 285.602389 284.799728 235.234485 260.002547 262.359041
1951 279.958255 107.868519 288.220234 296.539513  68.817558 186.224247
1952 125.355915 344.716070 437.832946 280.521461 225.968306 336.365552
1953 120.044058 125.365069 224.895050 166.447837 256.316684 281.970705
1954 210.881369 257.078095 295.248679 217.025387 365.108962 218.089700
1955 342.513866 280.595432 456.396255 341.697685  89.806982 254.642112
1956 232.175201 238.863344 240.363646 269.182453 286.571773 405.714868
1957 292.486754 108.355436 398.456227 160.725594 151.592262 299.731173
1958 148.584450 229.450069 213.228687 223.996785 125.029413 329.705333
1959 216.137185 369.413156 294.616891 190.316239 146.717585 174.484329
1960 185.030458 387.551935 240.217553 139.553012 224.352199 215.939564
            Jul        Aug        Sep        Oct        Nov        Dec
1949 310.487662 272.929838 320.731558 393.505893 387.991728 261.558988
1950 120.997382 266.531430 153.304370 327.456574 404.266784 411.233188
1951 362.302010 297.592098  -7.025727 269.088641 293.862720 226.535469
1952  27.328671 335.469696 154.552897 171.979387 210.137189  18.858206
1953 420.210522 226.850490 331.121369 187.550683 273.952172 144.442567
1954 412.661922 247.280086 323.766596 313.101114 283.898841 256.974980
1955 257.447070 186.651684 173.963017 183.487437 304.141186 314.631940
1956 169.632962 286.693946 217.165810 254.049509 432.508624 -63.943851
1957 309.529856 176.089947 265.976974 399.154902 184.414114 201.488682
1958 213.529328 202.912267 168.892189 247.978620 204.058201 322.841891
1959 211.850271 357.303627 219.375886 190.245596 226.145147 144.097063
1960 168.937756 262.774203 309.185121  75.155980 283.032284 384.061062
plot(AirPassengers,type = "l",col = "red")
lines(ts, type = "l", col = "blue")

# yüzde değişim
growth <- AirPassengers/stats::lag(AirPassengers,-1)*100-100
growth
             Jan         Feb         Mar         Apr         May         Jun
1949               5.3571429  11.8644068  -2.2727273  -6.2015504  11.5702479
1950  -2.5423729   9.5652174  11.9047619  -4.2553191  -7.4074074  19.2000000
1951   3.5714286   3.4482759  18.6666667  -8.4269663   5.5214724   3.4883721
1952   3.0120482   5.2631579   7.2222222  -6.2176166   1.1049724  19.1256831
1953   1.0309278   0.0000000  20.4081633  -0.4237288  -2.5531915   6.1135371
1954   1.4925373  -7.8431373  25.0000000  -3.4042553   3.0837004  12.8205128
1955   5.6768559  -3.7190083  14.5922747   0.7490637   0.3717472  16.6666667
1956   2.1582734  -2.4647887  14.4404332  -1.2618297   1.5974441  17.6100629
1957   2.9411765  -4.4444444  18.2724252  -2.2471910   2.0114943  18.8732394
1958   1.1904762  -6.4705882  13.8364780  -3.8674033   4.3103448  19.8347107
1959   6.8249258  -5.0000000  18.7134503  -2.4630542   6.0606061  12.3809524
1960   2.9629630  -6.2350120   7.1611253  10.0238663   2.3861171  13.3474576
             Jul         Aug         Sep         Oct         Nov         Dec
1949   9.6296296   0.0000000  -8.1081081 -12.5000000 -12.6050420  13.4615385
1950  14.0939597   0.0000000  -7.0588235 -15.8227848 -14.2857143  22.8070175
1951  11.7977528   0.0000000  -7.5376884 -11.9565217  -9.8765432  13.6986301
1952   5.5045872   5.2173913 -13.6363636  -8.6124402  -9.9476440  12.7906977
1953   8.6419753   3.0303030 -12.8676471 -10.9704641 -14.6919431  11.6666667
1954  14.3939394  -2.9801325 -11.6040956 -11.5830116 -11.3537118  12.8078818
1955  15.5555556  -4.6703297 -10.0864553 -12.1794872 -13.5036496  17.2995781
1956  10.4278075  -1.9370460 -12.3456790 -13.8028169 -11.4379085  12.9151292
1957  10.1895735   0.4301075 -13.4903640 -14.1089109 -12.1037464  10.1639344
1958  12.8735632   2.8513238 -20.0000000 -11.1386139 -13.6490251   8.7096774
1959  16.1016949   2.0072993 -17.1735242 -12.0950324 -11.0565111  11.8784530
1960  16.2616822  -2.5723473 -16.1716172  -9.2519685 -15.4013015  10.7692308
plot(growth,type = "l", col = "red")

Veri Analizi Bazı Paketler

Veri analizi için skimr paketi de kullanılabilir. skimr, R programlama dilinde veri setlerinin hızlı bir şekilde özetlenmesini sağlayan bir pakettir. Veri setlerinin yapısını, özelliklerini ve bazı istatistiksel özetlerini görsel ve açıklayıcı bir şekilde sunar. Bu paket, veri keşfi aşamasında veri setinin genel özelliklerini anlamak için kullanılır.

skimr paketi, veri setinizdeki değişkenlerin türlerine göre istatistiksel özetler sunar. Örneğin, sayısal değişkenler için merkezi eğilim ölçüleri (ortalama, medyan), dağılım (standart sapma, min-max değerleri), faktör değişkenleri için sınıf sayısı, en sık rastlanan sınıf ve eksik veri durumları gibi bilgileri sunar.

Bu paket, veri setinin yapısını hızlıca anlamak ve önemli özelliklerini keşfetmek için kullanılır. Özellikle veri setlerinin keşfedilmesi, temizlenmesi ve analiz edilmesi aşamalarında oldukça faydalıdır. Bu, veri analiz sürecinde veriye daha derinlemesine bakmayı ve hangi analiz tekniklerinin kullanılacağına dair daha iyi bir anlayış geliştirmeyi sağlar.

Bunun yanında, modelsummary paketi de, R programlama dili için geliştirilmiş olan bir pakettir ve istatistiksel modellerin özetlenmesi, karşılaştırılması ve görselleştirilmesi için kullanılır. Bu paket, farklı türdeki modellerin çıktılarını standartlaştırarak, bunları karşılaştırmak ve analiz etmek için kullanıcıya kolaylık sağlar.

Bu paket genellikle doğrusal regresyon, lojistik regresyon, karar ağaçları, destek vektör makineleri gibi çeşitli istatistiksel ve makine öğrenimi modellerinin özet istatistiklerini, katsayılarını, belirlilik ölçülerini, hata ölçümlerini ve diğer önemli çıktıları sunar. Bunların yanı sıra, çıktıları tablolar halinde gösterir ve görselleştirmeler yaparak model performansını karşılaştırmak için grafikler oluşturabilir.

Bu paket, araştırmacılar, veri bilimcileri veya istatistikçilerin farklı modelleri anlamak, karşılaştırmak ve raporlamak için verimli bir araç sunar. Model sonuçlarını görselleştirme ve karşılaştırma açısından kullanışlıdır. Paket, model özetlerinin ötesinde, veri kümesine genel bakış, korelasyon matrisleri, (çok seviyeli) çapraz tablolar ve denge tabloları gibi son derece esnek veri özet tabloları üretmek için bir dizi araç da içerir.

# Paketin birkaç özelliğine bakalım

library(modelsummary)

# kategorik verilere hızlı bir bakış
datasummary_skim(mpg, "categorical")
N %
manufacturer audi 18 7.7
chevrolet 19 8.1
dodge 37 15.8
ford 25 10.7
honda 9 3.8
hyundai 14 6.0
jeep 8 3.4
land rover 4 1.7
lincoln 3 1.3
mercury 4 1.7
nissan 13 5.6
pontiac 5 2.1
subaru 14 6.0
toyota 34 14.5
volkswagen 27 11.5
model 4runner 4wd 6 2.6
a4 7 3.0
a4 quattro 8 3.4
a6 quattro 3 1.3
altima 6 2.6
c1500 suburban 2wd 5 2.1
camry 7 3.0
camry solara 7 3.0
caravan 2wd 11 4.7
civic 9 3.8
corolla 5 2.1
corvette 5 2.1
dakota pickup 4wd 9 3.8
durango 4wd 7 3.0
expedition 2wd 3 1.3
explorer 4wd 6 2.6
f150 pickup 4wd 7 3.0
forester awd 6 2.6
grand cherokee 4wd 8 3.4
grand prix 5 2.1
gti 5 2.1
impreza awd 8 3.4
jetta 9 3.8
k1500 tahoe 4wd 4 1.7
land cruiser wagon 4wd 2 0.9
malibu 5 2.1
maxima 3 1.3
mountaineer 4wd 4 1.7
mustang 9 3.8
navigator 2wd 3 1.3
new beetle 6 2.6
passat 7 3.0
pathfinder 4wd 4 1.7
ram 1500 pickup 4wd 10 4.3
range rover 4 1.7
sonata 7 3.0
tiburon 7 3.0
toyota tacoma 4wd 7 3.0
trans auto(av) 5 2.1
auto(l3) 2 0.9
auto(l4) 83 35.5
auto(l5) 39 16.7
auto(l6) 6 2.6
auto(s4) 3 1.3
auto(s5) 3 1.3
auto(s6) 16 6.8
manual(m5) 58 24.8
manual(m6) 19 8.1
drv 4 103 44.0
f 106 45.3
r 25 10.7
fl c 1 0.4
d 5 2.1
e 8 3.4
p 52 22.2
r 168 71.8
class 2seater 5 2.1
compact 47 20.1
midsize 41 17.5
minivan 11 4.7
pickup 33 14.1
subcompact 35 15.0
suv 62 26.5
# nümerik verilere hızlı bir bakış
datasummary_skim(mpg, "numeric")
Unique (#) Missing (%) Mean SD Min Median Max
displ 35 0 3.5 1.3 1.6 3.3 7.0
year 2 0 2003.5 4.5 1999.0 2003.5 2008.0
cyl 4 0 5.9 1.6 4.0 6.0 8.0
cty 21 0 16.9 4.3 9.0 17.0 35.0
hwy 27 0 23.4 6.0 12.0 24.0 44.0