Upload
suekrue-erguentop
View
472
Download
48
Embed Size (px)
Citation preview
T.C.
BILECIK SEYH EDEBALI ÜNIVERSITESI
MÜHENDISLIK FAKÜLTESI
BILGISAYAR MÜHENDISLIGI
R PROGRAMLAMA VE BAZI R PAKET UYGULAMALARI
SÜKRÜ ERGÜNTOP
BITIRME ÇALISMASI
MAYIS-2015
BILECIK
T.C.
BILECIK SEYH EDEBALI ÜNIVERSITESI
MÜHENDISLIK FAKÜLTESI
BILGISAYAR MÜHENDISLIGI
R PROGRAMLAMA VE BAZI R PAKET UYGULAMALARI
SÜKRÜ ERGÜNTOP
BITIRME ÇALISMASI
MAYIS-2015
BILECIK
BILDIRIM
Bu kitaptaki bütün bilgilerin etik davranıs ve akademik kurallar çerçevesinde elde edildi-ginive yazım kurallarına uygun olarak hazırlanan bu çalısmada bana ait olmayan her türlüifade ve bilginin kaynagına eksiksiz atıf yapıldıgını bildiririm.
DECLARATION
I hereby declare that all information in this document has been obtained and presentedin accordance with academic rules and ethical conduct. I also declare that, as required bythese rules and conduct, I have fully cited and referenced all materials and results that arenot original to this work.
Imza
Ögrencinin Adı SOYADI
tarih:
ii
ÖZET
BITIRME ÇALISMASI
R PROGRAMLAMA VE BAZI R PAKET UYGULAMALARI
Sükrü ERGÜNTOP
BILECIK SEYH EDEBALI ÜNIVERSITESIMÜHENDISLIK FAKÜLTESI
BILGISAYAR MÜHENDISLIGI BÖLÜMÜ
Danısman: Ögr. Gör. Murat ÖZALP
2015, 56 Sayfa
Jüri Üyeleri Imza
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bu çalısmada son yıllarda popüler olan R Programlama dili ve R Programlama Paket Uygulama-
ları Mevcuttur. Bu çalısma ile R programlama dilinin ögrenilmesi ve paketlerin kullanımı hakkında
örnekler ile genel bilgi verilmistir. : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anahtar Kelimeler: R Programming, R Data Mining, R Neural Network, nnet, neuralnetwork,
R Web Developer, Shiny, RWeka, R Datasets
iii
ABSTRACT
THESIS
R PROGRAMMING AND SEVERAL APPLICATONS OF THE R PACKAGE
Sükrü ERGÜNTOP
BILECIK SHEIKH EDEBALI UNIVERSITYENGINEERING FACULTY
DEPARTMENT OF COMPUTER ENGINEERING
Advisor: Ögr. Gör. Murat ÖZALP
2015, 56 Pages
Jury Sign
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
In this study, R programming language popular in recent years and R Packages Application are
available. This study aimed to learn the R programming language and general information are
given about the use of R programming language packages
Anahtar Kelimeler: R Programming, R Data Mining, R Neural Network, nnet, neuralnetwork,
R Web Developer, Shiny, RWeka, R Datasets
iv
ÖNSÖZ
3 bölümden meydana gelen bu kitabın birinci bölümünde yani giris bölümünde, R program-
lama’nın gelisimi kullanımına dair bilgiler, platformları, neden tercih edildigi, konusunda bilgiler
verilmistir Ikinci bölümde R programlama dilinin yapısından, nasıl kullanıldıgından, syntax’ından
bahsedilmistir, 3. bölümde ise bazı R paketlerin nerelerde ve nasıl kullanıldıgına dair birkaç uy-
gulamalar gerçeklestirilmistir.
Bu projenin yazımının basından sonuna kadar emegi geçen ve beni bu konuya yönlendiren
saygı deger hocam ve danısmanım Sayın Ögr. Gör. Murat ÖZALP’a tüm katkılarından ve hiç
eksiltmedigi desteginden dolayı tesekkür ederim.
Sükrü ERGÜNTOP
v
Içindekiler
ÖNSÖZ v
SEKILLER TABLOSU ix
1 GIRIS 1
1.1 Projede Kullanılan Programlama Dili . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 R Programlama’ya Giris . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 R Programlama Dili Artıları ve Eksileri . . . . . . . . . . . . . . . . . 1
1.1.3 R Grafik Kullanıcı Arayüzleri . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.4 R Programlama Dili Özellikleri . . . . . . . . . . . . . . . . . . . . . . 7
1.1.5 R programlama Paketleri . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 R PROGRAMALAMA 8
2.1 Veri Tipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1 Diziler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.2 Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.3 List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.4 Veri Çerçevesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.5 Vektörler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Döngüler, Kosullar ve Durumlar . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 For döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 If-Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Repeat döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 Which . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.5 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Çizimler ve Grafikler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.1 Barplot ile Çubuk Grafik Çizimi . . . . . . . . . . . . . . . . . . . . . 14
2.3.2 Circle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.3 Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3.4 Plot PCH Sembol Tablosu . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.5 Plot Renk Tablosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.6 pie(Pasta) Grafigi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
vi
2.3.7 Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.8 Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.4 Veri Okuma ve Yazma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4.1 R Ortamına Excelden Veri Aktarma . . . . . . . . . . . . . . . . . . . 24
2.4.2 R Ortamına txt’den Veri Aktarma . . . . . . . . . . . . . . . . . . . . . 25
2.4.3 R Ortamında Veri Olusturma . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.4 R Ortamına Aktarılan Verileri Görüntüleme . . . . . . . . . . . . . . . 26
2.5 Veri Yönetimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.1 Hazır Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.2 Fonksiyon Olusturma . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5.3 Özel Fonksiyonlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6 R Programlama Olasılık Dagılımları . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6.1 Binomal Dagılım . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6.2 Poission Dagılım . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.3 Normal Dagılım . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.6.4 Sürekli Düzgün Dagılım . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.6.5 Üssel Dagılım . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3 R PAKET UYGULAMALARI 34
3.1 Karekök Almayı Gerçeklestiren Yapay Sinir Agı Olustuma . . . . . . . . . . . . 34
3.1.1 Uygulamanın Amacı . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.2 Uygulamanın Içerigi . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.3 Ugulamanın Asamaları . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.4 Ugulamanın R kodları . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.5 Uygulamanın Sonucu . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2 Iris Verisini sınıflandıran Yapay Sinir Agı Olustuma . . . . . . . . . . . . . . . 36
3.2.1 Uygulamanın Amacı . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.2 Uygulamanın Içerigi . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.3 Ugulamanın Asamaları . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.4 Ugulamanın R kodları . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.5 Uygulamanın Sonucu . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3 Yapay Sinir Agı ile "Dataset" paketindeki "infert" verisini sınıflandırma . . . . . 38
3.3.1 Uygulamanın Amacı . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
vii
3.3.2 Uygulamanın Içerigi . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.3 Ugulamanın Asamaları . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.4 Ugulamanın R kodları . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4 Yapay Sinir Agı ile Kredi Derecelendirmesi Uygulaması . . . . . . . . . . . . . 39
3.4.1 Uygulamanın Amacı . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.2 Uygulamanın Içerigi . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.3 Uygulamanın Asamaları . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.4 Ugulamanın R kodları . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5 Web Ortamında Dinamik Veri Analizi . . . . . . . . . . . . . . . . . . . . . . . 41
3.5.1 Uygulamanın Amacı . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.5.2 Uygulamanın Içerigi . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5.3 Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.6 Yapay sinir Agı ile Animasyon Örnegi . . . . . . . . . . . . . . . . . . . . . . 42
3.6.1 Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
ARASTIRMA BULGULARI VE TARTISMA 43
SONUÇLAR VE ÖNERILER 44
KAYNAKLAR 45
ÖZGEÇMIS 46
viii
SEKILLER TABLOSU
1 R’ın kullanım istatistigi[4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 R Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 R Comander kütüphanesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4 R Comander Arayüzü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5 R Comander Örnek Bir Uygulama . . . . . . . . . . . . . . . . . . . . . . . . . 5
6 R Studio Arayüzü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
7 Barplot ile çubuk grafik çizimi 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 15
8 Barplot ile çubuk grafik çizimi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 15
9 Barplot ile çubuk grafik çizimi 3 . . . . . . . . . . . . . . . . . . . . . . . . . 16
10 Barplot ile çubuk grafik çizimi 4 . . . . . . . . . . . . . . . . . . . . . . . . . 16
11 Barplot ile çubuk grafik çizimi 5 . . . . . . . . . . . . . . . . . . . . . . . . . 17
12 Circle çizimi 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
13 Circle çizimi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
14 Plot çizimi 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
15 Plot çizimi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
16 Plot çizimi 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
17 PCH Sembol Tablosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
18 Renk Tablosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
19 pie grafigi 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
20 pie grafigi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
21 pie 3D grafigi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
22 Histogram grafigi 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
23 line grafigi 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
24 line grafigi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
25 Karekök Almayı Gerçeklestiren Yapay Sinir Agı . . . . . . . . . . . . . . . . . 35
26 Iris Veri Sınıflandırmasını Gerçeklestiren Yapay Sinir Agı . . . . . . . . . . . . 37
27 Iris Veri Sınıflandırmasını Gerçeklestiren Yapay Sinir Agının Testi . . . . . . . . 37
28 Infert Verisi Sınıladıran Yapay Sinir Agı Modeli . . . . . . . . . . . . . . . . . 39
29 Kredi Derecelendirme Gerçeklestiren Yapay Sinir Agı . . . . . . . . . . . . . . 41
30 Shiny Paket Uygulması . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
31 nnet ve animation Paket Uygulması . . . . . . . . . . . . . . . . . . . . . . . . 42
ix
1 GIRIS
1.1 Projede Kullanılan Programlama Dili
1.1.1 R Programlama’ya Giris
Tanım :R istatistiksel hesaplama ve grafik sistemidir. R hem bir programlama hemde yüksek
seviyeli grafik dilidir, diger diller için arayüz ve hata ayıklama olanaklarını saglar[1]
R dili Yeni Zelanda’daki Aucland Üniversi-
tesi Istatistik Bölümü’nden Ross Ihaka ve Ro-
bert Gentleman tarafından yazılmıstır. Dünya-
nın çesitli yerlerindeki arastırmacılar R’ yi ge-
listirmek için bir araya gelmis ve 1997’de bu
gruba "R core team" adı verilmistir. R dili-
nin ilk sürümü "R core team" tarafından 29
Subat 2000 tarihinde yayınlanmıstır. R istatis-
tiksel yazılım gelistirme ortamı veri manipü-
lasyonu, hesaplama ve grafik gösterim için ta-
sarlanmıstır. R dilinin söz dizimi kuralları (syntax) C diline benzerlik gösterir. Fonksiyonel bir
programlama dili olan R istatistikçiler ve matematikçiler için kod yazmayı kolaylastıran fonksi-
yonlara sahiptir.[2]
1.1.2 R Programlama Dili Artıları ve Eksileri
Artıları[3]
• R açık kaynak kodlu GNU lisansı olan bir yazılım
• Hızlı ve ücretsiz
• Isletim sisteminden bagımsız olarak çalısır.
1
• R en kapsamlı istatiksel analiz paketidir. Standart istatistiksel testler, modellerin hepsini
içerir ve analizlerin yanı sıra , verileri yönetmek ve islemek için kapsamlı bir dil saglamıstır.
Yeni teknoloji ve fikirler R ortamından erisim saglanabilir.
• R ekonometri, veri madenciligi, mekansal analiz, ve biyo-bilisim gibi konularda uzmanlas-
mıs, birçok kaynaktan temin edebileceginiz 15,000 ’in üstünde paket vardır.
• 32 ve 64 bit islemci üzerinde çalısan, GNU / Linux, Macintosh ve Microsoft Windows
üzerinde çalısabilir.
• R Microsoft Excel, Microsoft Access, Oracle, MySQL ve SQLite, Hadoop, SAS ve SPSS
gibi birçok araçlar ile baglantı kurularak data import- export islemleri gerçeklestirebilir.
Ayrıca PDF, JPG, PNG ve SVG formatlarında ve LATEX ve HTML için tablo ve grafik
çıktısı alabilirsiniz.
Eksileri[3]
• Ögrenme süreci uzundur.
• Kullanıcı dostu degildir.(Arayüz Bakımından)
• Veriyi islenecek hale getirmek zaman alıcı ve hataya açık bir süreçtir.
• Tüm islemler hafızada gerçeklestirilir. Bu demek oluyor ki çok büyük veri için fazla ram
gerekir
Sekil 1: R’ın kullanım istatistigi[4]
2
1.1.3 R Grafik Kullanıcı Arayüzleri
R Terminali: R da komutların derlendigi terminaldir. Komutlar buraya yazıldıktan sonra R ter-
minali kapatılırsa komutlar yok olur. Bu sorunu çözmek için "Dosya" menüsünden yeni
betik olusturulur. R termimali kullanıcı dostu bir arayüz degildir. Her islemi komutlarla
yapılmaktadır
Sekil 2: R Console
R Comander: tcltk tabanlı GUI’dir R terminelinden "paketler" menüsünden "Rcmdr" paketi ku-
rulur kurulduktan sonra R terminaline "library(Rcmdr)" yazılarak arayüz baslatılır
Sekil 3: R Comander kütüphanesi
R termimale "library(Rcmdr)" yazıldıktan sonra sekil 4’teki arayüz olusmaktadır
3
Sekil 4: R Comander Arayüzü
R Comander sekil 5 de görüldügü gibi 3 bölümden olusmaktadır 1. bölüm input, veri
degerlerimizi girdigimiz bölüm 2. bölüm output, verilerimizin sonuçlarını elde ettigimiz
bölüm ve son olarak 3.bölüm message,kodlarımızı derledigimizde hata veya uyarının gös-
terildigi bölüm
sekil 5 de R Comander arayüzü üzerinde bir degiskene vektör atanması ve bu degisken-
deki vektör degerlerini gösterilmesi ile ilgili bir örnek uygulama gerçeklestirilmistir
4
Sekil 5: R Comander Örnek Bir Uygulama
Sekil 5 de gösterilen "submit" butonu eger input bölümünden herhangi bir satır seçilme-
den basılırsa her zaman input bölümünün son satırını derler
R Studio: Kullanımı oldukça kolay ve gelismis bir arayüz
5
Sekil 6: R Studio Arayüzü
Sekilde 6’da görüldügü gibi R Studio 4 bölümden meydana gelmektedir. Öncelikle R
kodlarının yazıldıgı R scriptten bahsedilecek olunursa, "File" menüsünün altında bulunan
"New File" sekmesindeki "R Scipt" sekmesi seçilerek olusturulur, R Comander aratüzün-
deki gibi yine kodların derlendigi R Console bölümü, R scripte yazılan degiskenlerin gös-
terildigi bölüm ve son olarak R scripte yazılan grafiksel kodların, grafiklerinin gösterildigi
bölüm bulunmaktadır. R scipteki kodlar diger arayüzler gibi kodlar derlendiginde eger bir
satır seçilmisse o satırı derler herhangi bir satır seçilmemis ise son satırı varsayılan olarak
derler.
6
1.1.4 R Programlama Dili Özellikleri
• Etkin bir veri isleme ve depolama[5]
• Dizi ve matris hesaplamaları için komutlar grubu[5]
• Veri analizi için ileri düzeyli teknikler toplulugu[5]
• Verinin ekranda ya da basılı bir eserde görüntülenebilmesine olanak veren genis grafiksel
özellikler[5]
• Kolay programlamaya uygun fakat karmasık programlama dillerinin özelliklerin[5] sahip
bir programlama dili olanaklarını sunmaktadır[5]
• Veri analizi için kullanılabilecek uyumlu ve bir arada kullanılabilen araçlar içerir.[4]
• Besne yönelimli bir programlama dili olması
• 2-D, 3-D gelismis grafik araçlarına sahip olması
1.1.5 R programlama Paketleri
R fonskiyonları ayrı ayrı paketler içine aktarılmıstır, böylece gerekli paketlerle çalısarak
daha az bellek kullanımı ve hızlı islem gücü saglanır. Bu paketlerin bir baska avantajı da yazılan
fonksiyonlardan olusan paketlerin R web sitesinden temin edilerek yüklenebilmesidir[2]
"Install.package() ve update.package() fonksiyonları R komut satırından istenilen paketin indi-
rilmesi ve yüklenmesi için kullanılırlar.[2] Paketlere ait fonksiyonlar kullanılacagı zaman paket
çagrılmalıdır paketlerin çagrılma komutu "library(paket_isimi)" seklindedir
7
2 R PROGRAMALAMA
2.1 Veri Tipleri
2.1.1 Diziler
Dizler çok boyutlara sahip veri tipidir. array() fonksiyonu dizileri test eder veya olusturur.
dim() fonksiyonu dizinin boyutunu tanımlar
Örnek 1
• x <−array(1 : 9) : 1 den 9’a kadar bir dizi olusturur
• x : diziyi gösteren komut
• [1] 1 2 3 4 5 6 7 8 9 : Dizinin konsoldan görünümü
Örnek 2
• x <−array(1 : 9, c(3,3)) : 1 den 9’a kadar 3x3 lük bir dizi olusturur
• x : Diziyi gösteren komut
Örnek 3
• x <−1 : 64 : x degiskenine 1 den 64’e kadar bir vektör atandı
• dim(x)<−c(2,4,8) : vektörü diziye dönüstürür, 2x4 lük 8 tane dizi olusturulur burda dik-
kat edilmesi gereken 2x4x8=64 olması yoksa boyut hatası verir
• is.array(x) : x adında bir dizi olup olmadıgını sorgular
• x : Diziyi gösteren komut
8
2.1.2 Matrix
Matrix 2 boyutlu dizilerdir. R, matrix’i çok uygun ele almanzı saglayan çok fazla opratör
ve fonksiyona sahiptir
Örnek 1
• A <−matrix(c(3,5,7,1,9,4),nrow = 3,ncol = 2) : vektörü 3x2 lik bir matrix’e dönüstürür
• A Matrixi gösterem komut
Örnek 2
• rA <−nrow(A) : A matrix’in sütun sayısını rA degiskenine atıyor
• rA : Sütun sayısını gösterir
• cA <−ncol(A) : A matrix’in kolon sayısını rA degiskenine atıyor
• cA : Kolon sayısını gösterir
Örnek 3
• B <−t(A) : A matrix’inin transpozunu B degiskenine atar
• B : A matrix’inin transpozunu gösterir
Örnek 4
• C <−A∗A : matrix çarpımı(bölme /, çıkarma -, toplama + operatörleri ile yapılır)
• C : çarpım sonucun gösterir
2.1.3 List
R da list veri türü ,elemanlarının sıralı koleksiyon içeren bir nesneye karsılık gelir. Ögeleri
farklı modu veya tipte olabilir.
Örnek 1
9
• x < −list(sayi = 3,yazi = ”LungCancerPatients”,har f = c(”A”,”B”,”C”)) : Sayi,yazi ve
karakter içeren bir liste olusturur
• x : Listeyi gösterir
• is.list(x) : x degiskeni adında bir liste olup olmadıgını sorgular
Örnek 2
• x[[1]] : x listesinin 1. elemanını getiri yani sayıyı(3)
• x[[2]] : x listesinin 2. elemanını getirir yani yazi(Lung Cancer Patients)
• x[[3]] : x listesinin 3. elemanını getirir yani harf(A,B,C)
• x[[3]][2]: x listesinin 3. elemanının kendi içinde 2. elemanını getirir yani B
• x$har f : x listesindeki harf’i getirir yani A,B,C
• x[[”har f ”]] : x listesindeki harf’i getirir yani A,B,C
• length(x) : Listenin uzunlugunu belirler
• as.data. f rame(x) x listesinin baslık baslık düzgün sıralanmasını saglar
2.1.4 Veri Çerçevesi
R’da data.frame çok güçlü bir veri tipidir, Özellikle bir taplo islendigi zaman. Tabloya
göre sütun ve satır olarak veriyi depolar.
Örnekte R da veri kümesi olan BOD(Biyo kimyasal oksijen ihtiyacı) verisini kullanalım. BOD bir
veriçerçevesidir Örnek
• x <−BOD : veri kümesini x degiskenine atandı.
• is.data. f rame(x) : x’in bir veri çerçevesiolup olmadıgı kontrol ediliyor
• class(x) : x verisi sınıflandırılıyor
• x[2, ] : x verisinin 2. satırı ve 2. satırdaki tüm sütunlar
10
• x$Time : x verisindeki "Time" degerlerini yazdırır
• x$demand x verisindeki "demand" degerlerini yazdırır
2.1.5 Vektörler
R programlama dilinde vektör diger programlama dillerinin
dizilerine benzer.Elemanları sıralı bir sayıda olusturuyor. Elemanlar numerik, lojik, karakter ve
karmasık olabilir
• v <−c(2,3,5.5,7.1,2.1,3) : Bir vektör tanımlar
• assign(”v”,c(2,3,5.5,7.1,2.1,3)) : yukardaki maddeyle aynı, vektör tanımlamanın diger
bir yöntemi
• v <−1 : 10 : 1’den 10’a kadar bir vektör dizisi olusturur
• v <−rep(2,10) : 10 tane 2 den olusan bir vektör dizisi tanımlar
• v <−seq(1,5,by = 0.5) : 1 den baskayarak 5’e kadar 0.5 artan bir vektör tanımlar
• v <−seq(length = 10, f rom = 1,by = 0.5) : 1 den baslayarak uzunlugu 10 olana kadar 0.5
artan bir vektör tanımlar
2.2 Döngüler, Kosullar ve Durumlar
2.2.1 For döngüsü
• veri <−c(rep(1 : 10)) : 1 den 10’ a kadar sayı içeren bir vektör tanımlar
• f or(ornek in veri)
{
print(ornek)
}
Açıklama:for döngüsü ile veri vektörü içindeki degerleri tek tek gösterir
11
• f or(ornek in veri)
{
str <−paste(ornek,”,veri mevcut”,sep = ” ”)
print(str)
}
Açıklama:Vektör degerlerini bir string ile birletirerek ekrana tek tek basar
• f or(ornek in veri)
{
i f (ornek == 3)break
str <−paste(ornek,”,veri mevcut”,sep = ” ”)
print(str)
}
Açıklama:Vektör degeri 3 oldugunda döngüden çıkar
• f or(ornek in veri)
{
i f (ornek%%2 == 0)next
str <−paste(ornek,”,veri mevcut”,sep = ” ”)
print(str)
}
Açıklama:Vektör degeri 2’ye tam bölünmeyenleri yazdırır
• son <−length(veri)
baslangic <−son−2
f or(ornek in baslangic : son)
str <−paste(ornek,”,veri mevcut”,sep = ” ”)
print(str)
Açıklama: vektörün son üç degerini yazdırır
2.2.2 If-Else
• veri <−c(rep(1 : 10)) : 1 den 10’ a kadar sayı içeren bir vektör tanımlar
• f or(ornek in veri)
12
{
i f (ornek%%2! = 0)next
else print(ornek)
print(ornek)
}
Açıklama: 2 ile kalansız bölünmeyenler yazdırır
• i f else(veri > 6,2,1) : Veri 6’dan büyükse ekrana 2 yazdır 6’dan küçükse 1 yazdırır
2.2.3 Repeat döngüsü
Repeat "while" ve "for" döngüsüne benzerdir, bir komut blogunu sona erene kadar yürütür
• toplam <−0
• repeat{toplam < −toplam + 1; print(toplam); i f (toplam > 6)break;} Açıklama: top-
lam degiskeni 6 dan büyük olana kadar döngü devam eder ve toplam degiskeni 1’er 1’er
artar
2.2.4 Which
Which() fonksiyonu mantıksal bir nesnenin "TRUE"indexini verir ,dizi indeksine izin verir
• which(letters == ”h”) : h harfinin alfabedeki sırasını verir
• which(BOD$demand == 16) : BOD verisindeki demand degeri 16’ya esit olan karsılıgını
verir
• x <−matrix(1 : 9,3,3) : 3x3 lük 1 den 9’a kadar bir matrix tanımlar
which(x%%3 == 0,arr.ind = T RUE): x matrix’inden 3’e tam bölünenlerin satır ve sütun
numaralarını gösterir
• which(x%%3 == 0,arr.ind = FALSE) : x matrix’inden 3’e tam bölünenleri gösterir
13
2.2.5 While
While() döngüsü sartlar yerine getirilene kadar komutlar blogunu çalıstırır
• x <−1
while(x < 5)
{
x <−x+1;
print(x);
}
Açıklama: x, 5 ten küçük oldugu sürece 1’er 1’er artırılarak ekrana yazdırılır
• while(x < 5)
{
x <−x+1;
i f (x == 3)break; print(x);} : x, 3’e esit oldugunda döngüden çıkar
• while(x < 5)
{
x <−x+1;
i f (x == 3)next; print(x);
}
Açıklama: x, 3’e esit oldugunda bir bir sonraki degere gitmesini ifade eder
2.3 Çizimler ve Grafikler
2.3.1 Barplot ile Çubuk Grafik Çizimi
• x <−c(3,2,6,8,4)
barplot(x)
Açıklama: x vektöründeki degerleri bir çubuk grafigi ile gösterir.
14
Sekil 7: Barplot ile çubuk grafik çizimi 1
Biraz açıklamalı çubuk grafigi çizelim
• barplot(x,border = ”tan2”,names.arg = c(”Jan”,”Feb”,”Mar”,”Apr”,”May”),+xlab =
”Month”,ylab = ”Revenue”,density = c(0,5,20,50,100))
Sekil 8: Barplot ile çubuk grafik çizimi 2
Açıklamalar
- x, eldeki verilerimiz yani y eksenine karsılık gelen degerlerimiz
- border, çubukların kenar kalınlıgını belirler
- names.arg, y eksenindeki verilerin x eksenindeki isimleri temsil eder
- xlab, x eksenin genel adını temsil eder
- ylab, y eksenin genel adını temsil eder
- density, çubukların yogunluklarını ayarlar
• kodlar
15
* A<−matrix(c(3,5,7,1,9,4,6,5,2,12,2,1,7,6,8),nrow= 3,ncol = 5,byrow=T RUE)
Açıklama:3x5 lik bir matrix olusturur, "byrow=TRUE" anlamı, matrixin dizilisini be-
lirler yani matrix 3,5,7,1... diye sıralanır eger FALSE olsaydı 3,1,5.. diye sıralanırdı
* barplot(A,main= ”totalrevenue”,names.arg= c(”Jan”,”Feb”,”Mar”,”Apr”,”May”),
xlab = ”month”,ylab = ”revenue”,col = c(”tan2”,”blue”,”darkslategray3”))
Açıklama: "A" tanımladıgımız matrix, "main" ana basıgımız, "names.arg", "xlab",
"ylab", yukarda açıklanmıstı. "col", matix’imiz 3x5 lik oldugundan her bir çubuk 3
degeri temsil eder o yüzden 3 farklı renk tanımlanmıstır. Eger "beside=TRUE" pa-
rametresi yazılsaydı 3 renk aynı çubuk olmak yerine yan yana olusurdu Sekil 10 de
görüldügü gibi, yazılmadıgı için sekil 9 olusmaktadır
Sekil 9: Barplot ile çubuk grafik çizimi 3
Sekil 10: Barplot ile çubuk grafik çizimi 4
* legend(x = 0.2,y = 24,c(”so f t”,”hardware”,”service”),cex = .8,
col = c(”tan2”,”blue”,”darkslategray3”), pch = c(22,0,0))
Açıklama:legend() fonskiyonu bar çubuk grafinde, koordinatları belirlenen bir yere
16
bar çubuk grafigindeki veriler hakkında detaylı bir sekilde kare içine açıklamalar ya-
zar.legend fonksiyonundaki parametreler; "x",ve "y" parametreleri açıklamanın yazı-
lacagı koordinatı belirler, c() verilerin neyi temsil ettigi yazılır, "col" açıklamaların
sol tarafındaki sekillerin rengini belirler, "pch" verilerin sol tarafına nasıl bir sekil
yazılacagını belirler, "cex" verileri açıklayan karenin büyüklügünü belirler
Sekil 11: Barplot ile çubuk grafik çizimi 5
2.3.2 Circle
draw.circle() fonksiyonu ile bir alan üzerinde çember çizer. Bu fonksiyonu çalıstırmak için
öncelikle "plotrix" paketi(install.packages("plotrix")) yüklenmis olması lazım Asagıdaki örnek-
ler daha önce kullandıgımız "BOD" verilerini kullanacagız
• plot(BOD)
Sekil 12: Circle çizimi 1
• require(plotrix) : Gerekli paket çagrılır
17
draw.circle(4,14,2,border = ”blue”,col = ”tan2”) : "(4,14,2)" ile çember boyutu belirle-
nir, "border="blue"" ile çemberin kenar rengin, belirler, "col="tan2"" ile çemberin iç rengi
belirlenir
Sekil 13: Circle çizimi 2
2.3.3 Plot
plot(), genel x,y çizim fonksiyonudur
Öncelikle basit bir çizim yapalım
• x <−c(1.2,3.4,1.3,−2.1,5.6,2.3,3.2,2.4,2.1,1.8,1.7,2.2)
y <−c(2.4,5.7,2.0,−3,13,5,6.2,4.8,4.2,3.5,3.7,5.2)
plot(x,y)
Sekil 14: Plot çizimi 1
Açıklama: Yukarda tanımlanmıs x ve y koordinat degerleri , plot fonksiyonu ile çizimi
yapılır
18
• x <−c(−2,−0.3,1.4,2.4,4.5)
y <−c(5,−0.5,8,2,11)
plot(x,y, type = ”l”,col = ”blue”,xlab = ”AdvertiseChange”,ylab = ”RevenueChange”,
main = ”FinancialAnalysis”)
Açıklama:Burda diger parametrelerden farklı olarak "type" parametresi bulunmakta bu
parametre tipi "l(line)" olursa çizgi seklinde asagıda gösterildigi gibi olur, "p" olursa x’in
y’e karsılık gelen noktası çember seklinde gösterilir, "b" olursa "l" ve "p" parametresinin
bilesimi olur, "s" olursa kare dalga seklinde olur ve son olarak "h" olursa çizgi halinde
histogram olusur
Sekil 15: Plot çizimi 2
• abline(v = 0,col = ”red”) : abline() fonskiyonu daha önce çizilmis bir plot yoksa çalısmaz,
(0,0) noktasına çizgiyi y eksenine paralel çizer
points(c(1,4),c(9,2), pch= 3,col = ”tan2”) :1,4 ve 9,2 noktalarına +(pch=3) isareti koyar,
"col(tan2)" noktaların tranparantlıgını ayarlar
x2 <−c(−1.5,1,4)
y2 <−c(3,2,8)
x2, ve y2 yukarda tanımlı olan x ve y noktaları gibi tanımlanır
lines(x2,y2,col = ”darkolivegreen3”) : nokların kesisim yerlerini yesil çizgi ile birlestirir
legend(x =−2.2,y = 11,c(”advertise”,”sale”),cex = .8
,col = c(”blue”,”darkolivegreen3”), lty = c(1,1)) legen() fonksiyonu ile açıklamaları ya-
zar legend() fonksiyonu parametreleri daha önce anlatılmıstı
19
Sekil 16: Plot çizimi 3
20
2.3.4 Plot PCH Sembol Tablosu
Asagıdaki tablo, R’da çizimde kullanılan PCH semboller tablosu gösterilmektedir. PCH
aynı zamanda karakter de olabilir
Sekil 17: PCH Sembol Tablosu
2.3.5 Plot Renk Tablosu
R’da 657 tane yerlesik renk adı var. "colors()" fonksiyonu tüm rengleri gösterir
Sekil 18: Renk Tablosu
21
2.3.6 pie(Pasta) Grafigi
Pie() islevi bir pasta grafigi çizer
• x <−c(3,2,6,8,4)
Pie(x)
Açıklama: x vektörünün uzunlugu, 5 oldugundan pasta 5 parçaya bölünür ve sırasıyla 1.
parça=3, 2. parça=2, 3. parça=6, 4. parça=8, 5. parça=4 oldugunu ifade eder
Sekil 19: pie grafigi 1
• pieplot(x, labels= c(”Jan”,”Feb”,”Mar”,”Apr”,”May”),xlab= ”Month”,ylab= ”Revenue”,col =
c(”tan2”,”darkslategray3”,”blue”,”red”,”green”),
density = c(0,5,20,50,100),main = ”So f tRevenue”)
Sekil 20: pie grafigi 2
• library(plotrix)
parca <- c(10, 12, 4, 16, 8)
baslik <- c("US", "UK", "Australia", "Germany", "France")
pie3D(parca,labels=baslik,explode=0.1, main="Pie Chart of Countries ")
22
Sekil 21: pie 3D grafigi
2.3.7 Histogram
• x <−c(10,12,4,16,8)
hist(x)
Sekil 22: Histogram grafigi 1
2.3.8 Lines
abline() fonksiyonu bir plot’ çizgi ekler.
• x <−c(1.2,3.4,1.3,−2.1,5.6,2.3,3.2,2.4,2.1,1.8,1.7,2.2)
y <−c(2.4,5.7,2.0,−3,13,5,6.2,4.8,4.2,3.5,3.7,5.2)
plot(x,y,cex = .8, pch = 1,xlab = ”x”,ylab = ”y”,col = ”black”)
x2 <−c(4.1,1.1,−2.3,−0.2,−1.2,2.3)
y2 <−c(2.3,4.2,1.2,2.1,−2,4.3)
points(x2,y2,cex = .8, pch = 3,col = ”blue”)
23
Sekil 23: line grafigi 1
• abline(h = 4,col = ”red”)
abline(v = 0,col = ”green”)
abline(a = 2,b = 2,col = ”blue”)
Sekil 24: line grafigi 2
2.4 Veri Okuma ve Yazma
2.4.1 R Ortamına Excelden Veri Aktarma
• getwd() : Veri okumadan önce R’da bulundugumz konumu gösterir
• setwd() : Veriyi okumamız için bulundugumuz konumu verinin bulundugu konuma ayarlar
• list. f iles() : Ayarladıpımız konumdaki tüm dosyaları gösterir
• veri <−read.csv(”data.csv”,header = ”T RUE”) : "data.csv" dosyası R ortamına aktarır
• veri : "data.csv" dosyası içindeki verileri ekrana bastırır
• names(veri) : "data.csv" dosyası içindeki degisken isimlerini gösterir
24
• veri$degiskenisimi : "data.csv" dosyası içindeki belirlenem degiskenin degerlerini gösterir
• mean(veri$degiskenisimi) : "data.csv" dosyası içindeki belirlenen degiskenin degerlerinin
ortalamasını alır
2.4.2 R Ortamına txt’den Veri Aktarma
• getwd() : Veri okumadan önce R’da bulundugumz konumu gösterir
• setwd() : Veriyi okumamız için bulundugumuz konumu verinin bulundugu konuma ayarlar
• list. f iles() : Ayarladıpımız konumdaki tüm dosyaları gösterir
• veri <−read.table(”t p.txt”,header = T ); : "tp.txt" dosyası R ortamına aktarır
• veri : "tp.txt" dosyası içindeki verileri ekrana bastırır
• names(veri) : "tp.txt" dosyası içindeki degisken isimlerini gösterir
• veri$degiskenisimi : "tp.txt" dosyası içindeki belirlenem degiskenin degerlerini gösterir
• mean(veri$degiskenisimi) : "tp.txt" dosyası içindeki belirlenen degiskenin degerlerinin or-
talamasını alır
• ncol(veri) : Verinin sütun sayısını gösterir item nrow(veri) : Verinin satır sayısını gösterir
2.4.3 R Ortamında Veri Olusturma
• gender <−c(”male”,” f emale”,”male”)
• weight <−c(160,110,220)
• mydata <−data. f rame(age,gender,weight)
• mydata
25
2.4.4 R Ortamına Aktarılan Verileri Görüntüleme
• ls() : R ortamından tanımlanan veri degskenlerini gösterir
• names(mydata) : Verideki baslıkları görüntüler
• str(mydata) : Veriyi yapısal olarak listeler
• levels(mydata$gender) : Veri faktörünün seviyelerini listeler yaniyukarda tanımladıgımız
verinin "gender" faktör seviyeleri "male" ve "female" dir
• head(mydata,n = 10) : Verinin ilk "o tanesini gösterir
• tail(mydata,n = 5) : Verinin son 5 tanesini gösterir
2.5 Veri Yönetimi
2.5.1 Hazır Fonksiyonlar
1. Numerik Fonksiyonlar
Fonksyion Tanımı
abs(x) x verisinin mutlak degerini alır
sqrt(x) x verisinin kare kökünü alır
ceiling(x) x verisini bi üste yuvarlar
floor(x) x verisinin bi alta yuvarlar
round(x, digits=n) x verisinin yuvarlar ve n tane basamagını görüntüler
cos(x), sin(x), tan(x) x verisinin trigonometrik hesaplarını görüntüler
log(x) x verisinin logaritmasını görüntüler
2. Karakter Fonksiyonlar
26
Fonksyion Tanımı
substr(x, start=n1, stop=n2) x stringinin n1. karakterinden baslayarak
n2. karakterine kadar olan kısmı görüntüler
sub("x",replacement,y) y stringinde bulunan x stringini replacement
stringi ile yer degistirir
strsplit(x, "") x stringindeki karakterleri
çift tırnak içine alarak ayırır
toupper(x) x stringindeki karakterleri hepsini büyük yapar
tolower(x) x stringindeki karakterleri hepsini küçük yapar
2.5.2 Fonksiyon Olusturma
my f unction <− f unction(arg1,arg2, ...)
{
statements
return(ob ject)
}
Örnek 1
topla = f unction(a,b)
{
c = a+b
return(c)
}
Kullanımı
topla(5,9)
Örnek 2
hesap = f unction(a,b)
{
c = a+b
d = a−b
cat(′c =′,c,′ d =′,d)
return(list(toplam = c, f ark = d))
27
}
Kullanımı
hesap(8,5)
Açıklama: cat() fonskiyonu veriyi ekranda göstermeye yarar
2.5.3 Özel Fonksiyonlar
• cbind() Fonksiyonu
cbind() fonksiyonu sütunlar ile vektör, matriks veya veri çerçevesini, birlestirir
x <−read.csv(”data1.csv”,header = T,sep = ”,”)
x2 <−read.csv(”data2.csv”,header = T,sep = ”,”)
x3 <−cbind(x,x2)
x3
• rbind() Fonksiyonu
rbind() fonksiyonu satırlar ile vektör, matriks veya veri çerçevesini, birlestirir
28
x <−read.csv(”data1.csv”,header = T,sep = ”,”)
x2 <−read.csv(”data2.csv”,header = T,sep = ”,”)
x3 <−rbind(x,x2)
x3
2.6 R Programlama Olasılık Dagılımları
2.6.1 Binomal Dagılım
Binomal dagılım, ayrık olasılık dagılımıdır. Bir deneyde n tane bagımsız çalısmaların sonu-
cunu açıklar. Her denemenin sadece iki sonuca sahip oldugu varsayılır, ya basarılı yada basarısız.
Eger basarılı deneme olasılıgı p ise o zaman n tane bagımsız denemeli bir deneyde x basarılı
sonuçlara sahip olasılık asagıdaki gibidir
f (x) =(
nx
)px(1− p)(n−x) where x = 0,1,2, ....n
Problem
29
Bir ingilizce sınavında 12 tane çoktan seçmeli sorular oldugunu varsayalım. Her bir soru
için olası bes cevap vardır ve onlardan sadece biri dogrudur. Eger bir ögrenci rastgele her sorunun
cevabını bulmaya çalısırsa, dört yada daha az dogru cevaplama olasılıgını bulalım
Çözüm
Bes olası cevap üzerinden sadece biri dogru oldugundan, bir sorunun cevabını rastgele ola-
rak dogru olma olasılıgı 1/5=0.2 dir. Asagıdaki gibi rastgele olarak tam 4 soruyu cevaplama olası-
lıgını bulabiliriz
dbinom(4,size = 12, prob = 0.2)
4 veya daha az soruları cevaplama olasılıgını bulmak için dbinom fonsiyonuna x=0,..4 uygula-
nır
dbinom(0,size = 12, prob = 0.2) +
+dbinom(1,size = 12, prob = 0.2)+
+dbinom(2,size = 12, prob = 0.2)+
+dbinom(3,size = 12, prob = 0.2)+
+dbinom(4,size = 12, prob = 0.2)
Alternatif olarak toplu olasılık fonksiyonu için "pbinom" binomal dagılım kullanılabilir
pbinom(4,size = 12, prob = 0.2)
2.6.2 Poission Dagılım
Poisson dagılımı bir aralıkta, bagımsız olay olusumlarının olasılık dagılımıdır. Eger λ ara-
lıklar itibariyle ortalama ise, o zaman verilen aralık içinde x olusumlara sahip olasılık:
f (x) =λ xe−x
x!where x = 0,1,2,3..
Problem
30
Eger ortalama köprüde dakikada 12 araba varsa, Belirli bir dakika içinde köprüde 17 veya
daha fazla araba olma olasılıgını bulun
Çözüm
Belirli bir dakika içinde köprüde 17 veya daha az araba olma olasılıgı, "ppois" ile verilir
ppois(16, lambda = 12) : lower tail
Dolayısıyla bir dakika içinde köprü, 17 veya daha fazla araba geçisine sahip olma olasılıgı,
olası yogunluk fonksiyonun üst kısmıdır
ppois(16, lambda = 12, lower = FALSE) : U p tail
2.6.3 Normal Dagılım
Normal dagılım, asagıdaki olasılık yogunluk fonksiyonu ile tanımlanır, burda µ , populas-
yon ortalaması,σ2 ise varyanstır
f (x) =1
σ√
2ne−(x−m)2/2σ2
Eger rastgele bir x degiskenini, normal dagılım takip ediyorsa, o zaman asagıdaki yazılır
X ∼ N(µ,σ2)
Özellikle, µ=0 ve σ=1 ise normal dagılım, standart normal dagılım olarak ve N(0,1) olarak ifade
edilir
Merkez limit teoremi nedeniyle, normal dagılım önemlidir. n sonsuza yaklastıgı zaman orta-
lama µ ve σ2/n ile normal dagılıma yaklasır. ortalama µ ve σ2 ile bir populasyondan n boyutunda
olası tüm örneklerin populasyonunu ifade eder
Problem
31
Bir üniversite giris sınavı test puanları normal dagılıma uygun oldugunu varsayalım. Ayrıca,
ortalama test puanı 72 ve standart sapması 15.2 dir. sınavda 84 yada daha fazla alan ögrencilerin
yüzdesi kaçtır
Çözüm
Ortalama 72 ve standart sapma 15.2 ie normal dagılımın "pnorm" fonksiyonu uygulanır.
Çünkü 84 ten daha yüksek alan ögrencilerin yüzdesi istenmekte. Normal dagılım üst kuyruguna
bakılır
pnorm(84,mean = 72,sd = 15.2, lower.tail = FALSE)
2.6.4 Sürekli Düzgün Dagılım
Sürekli düzgün dagılım, a ve b arasında sürekli aralıktan, rastgele sayı seçiminin olasılık
dagılımdır. Yogunluk fonksiyonu asagıdaki fonksiyonla tanımlanır
f (x) =
1b−a when a≤ x≤ b
0 whenx < a or x > b
Problem
1 ve 3 arasında rastgele 10 tane sayı seçin
Çözüm
1 ve 3 arasında 10 tane rastgele sayı üretmek için sürekli dagılımın üretim fonksiyonu ru-
nif’i uygulanır
32
runi f (10,min = 1,max = 3)
2.6.5 Üssel Dagılım
Üssel dagılım, rastgele olarak yenilenen bagımsız olay dizisinin varıs zamanını tanımlar
Eger µ bir sonraki olay tekrarında ortalama bekleme süresi ise, olası yogunluk fonksiyonu:
f (x) =
1µ
e−x/µ when x≥ 0
0 when x < 0
Problem
Bir süpermarket kasiyerin ortalama ödeme süresi 3 dakika oldugunu varsayalım. Bir müs-
terinin ödeme olasılıgını 2 dakikadan daha az sürede kasiyer tarafından tamamlanmasını bulun
Çözüm
Ödeme islemi oranı, ortalama ödeme tamamlanma süresinin bölü birine esittir. Dolayısıyla
islem hızı dakikada 1/3 tür. Daha sonra, 1/3 oran ile üssel dagılımın "pexp" fonksiyonu ile hesap-
lanır
pexp(2,rate = 1/3)
33
3 R PAKET UYGULAMALARI
3.1 Karekök Almayı Gerçeklestiren Yapay Sinir Agı Olustuma
3.1.1 Uygulamanın Amacı
Bu uygulamada, bir sayı alabilen ve karakökünü(mümkün oldugunca yakın) hesaplayabilen
bir yapay ag olusturacagız.
3.1.2 Uygulamanın Içerigi
Yapay sinir agımız tek bir giris alacak,(karakökünü almasını istedigimiz bir sayı) ve tek
bir çıkıs üretecek(girisin karakökü). Yapay sinir agı, kendigini egitmek için 10 tane gizli nöron
içermektedir
3.1.3 Ugulamanın Asamaları
1. Yapay sinir agı olusturmak için R’a "neuralnet" paketinin yüklenmesi ve kullanmak için
"neuralnet" paketinin eklenmesi
2. 0 ve 100 arasında esit olarak dagıtılan 50 tane rastgele sayı üretmek
3. Üretilen sayıları dataframe olarak tutulması
4. Üretilen sayıların karakökünü tutan bir vektör tanımlamak
5. Sütunlar ile veriyi birlestirip bir degiskene atama
6. Verilerin bulundugu sütunlara isim verme
7. Net hesabı
8. Sonuçları yazdırma
9. Yapay agımızı çizme
10. Test verisi olusturma
34
11. Test verisinin sonuçlarını hesaplama
3.1.4 Ugulamanın R kodları
• install.packages(′neuralnet ′)
• library(”neuralnet”)
• egitim_girileri <−as.data. f rame(runi f (50,min = 0,max = 100))
• egitim_cikisleri <−sqrt(egitim_girileri)
• egitim_verisi <−cbind(egitim_girileri,egitim_cikisleri)
• colnames(egitim_verisi)<−c(”Giris”,”Cikis”)
• net.sqrt <−neuralnet(Cikis Giris,egitim_verisi,hidden = 10, threshold = 0.01)
• print(net.sqrt)
• plot(net.sqrt)
Sekil 25: Karekök Almayı Gerçeklestiren Yapay Sinir Agı
• test_verisi <−as.data. f rame((1 : 10)2)
• net.results <−compute(net.sqrt, test_verisi)
• ls(net.results)
• yeni_cikislar <−cbind(egitim_verisi,sqrt(egitim_verisi),as.data. f rame(net.results$net.result))
• colnames(yeni_cikislar)<−c(”Girisler”,”BeklenenCikisler”,”AginCikislarß”)
• print(yeni_cikislar)
35
3.1.5 Uygulamanın Sonucu
Bu uygulamada olusturulan ag, egitim verileri(egitim girisi ve egitim çıkısı) ile egitilerek
bir sayının kareköküne en yakın degerlerine ulasılması saglandı
3.2 Iris Verisini sınıflandıran Yapay Sinir Agı Olustuma
3.2.1 Uygulamanın Amacı
Bu uygulamada, Iris verisini nnet(perceptron) paketi ile sınıflandırma
3.2.2 Uygulamanın Içerigi
Yapay sinir agımız 4 girisli, tek çıkıslı ve 1 gizli katmanda olusmaktadır ve sınıflandırma
olarak "çiçek türü" referans almaktadır.
3.2.3 Ugulamanın Asamaları
1. Yapay sinir agı olusturmak için R’a "nnet" paketinin yüklenmesi ve kullanmak için "nnet"
paketinin eklenmesi
2. Verinin eklenmesi ve Düzenlenmesi
3. Verinin sınıflandırılması
4. Olusturulan Agın çizmi
5. agın test asaması
3.2.4 Ugulamanın R kodları
• install.packages(′datasets′)
• install.packages(′nnet ′)
36
• library(datasets)
• library(nnet)
• ir <−rbind(iris3[, ,1], iris3[, ,2], iris3[, ,3])
• targets <−class.ind(c(rep(”s”,50),rep(”c”,50),rep(”v”,50)))
• samp <−c(sample(1 : 50,25),sample(51 : 100,25),sample(101 : 150,25))
• ir1 <−nnet(ir[samp, ], targets[samp, ],size = 2,rang = 0.1,decay = 5e−4,maxit = 200)
• par(mar = numeric(4), f amily =′ seri f ′)
• plot.nnet(ir1, pos.col =′ darkgreen′,neg.col =′ darkblue′,al pha.val = 0.7,rel.rsc= 15,circle.cex=
10,cex = 1.4,circle.col =′ brown′)
Sekil 26: Iris Veri Sınıflandırmasını Gerçeklestiren Yapay Sinir Agı
• test.cl <− f unction(true, pred)true <−max.col(true)cres <−max.col(pred)table(true,cres)
• test.cl(targets[−samp, ], predict(ir1, ir[−samp, ]))
Sekil 27: Iris Veri Sınıflandırmasını Gerçeklestiren Yapay Sinir Agının Testi
37
3.2.5 Uygulamanın Sonucu
Bu uygulamada olusturulan ag, egitim verileri(egitim girisi ve egitim çıkısı) ile egitilerek
en iyi model olusturulmustur
3.3 Yapay Sinir Agı ile "Dataset" paketindeki "infert" verisini sınıf-
landırma
3.3.1 Uygulamanın Amacı
"Dataset" paketinde bulunan "infert" verisinin sahip oldugu "case" degiskenine göre sınıf-
landırma
3.3.2 Uygulamanın Içerigi
"Dataset" paketinde bulunan 248 gözlem ve 8 degiskene sahip "infert" verisinin 2 gizli
"age","parity","induced","spontaneous" degiskenlerinin giris olarak kullanarak "case durumlarını
sınıfladırma
3.3.3 Ugulamanın Asamaları
1. Veriyi elde etmek için "Dataset" kütüphanesinin çagrılması
2. Agı egitmek için "neuralnet" kütüphanesinin çagrılması
3. Elde edilen veri ile "neuralnet" kütüphanesinin fonksiyonları ile agı egitme
4. Elde edilen agı çizme
3.3.4 Ugulamanın R kodları
• library(datasets)
38
• names(in f ert)
• library(neuralnet)
• nn<−neuralnet(case age+ parity+induced+spontaneous,data= in f ert,hidden= 2,err. f ct =
”ce”, linear.out put = FALSE)
• names(nn)
• nn$result.matrix
• out <−cbind(nn$covariate,nn$net.result[[1]])
• dimnames(out)<−list(NULL,c(”age”,”parity”,”induced”,”spontaneous”,”nn−out put”))
• head(out)
• head(nn$generalized.weights[[1]])
• plot(nn)
Sekil 28: Infert Verisi Sınıladıran Yapay Sinir Agı Modeli
3.4 Yapay Sinir Agı ile Kredi Derecelendirmesi Uygulaması
3.4.1 Uygulamanın Amacı
Önceden elde edilen müsteri verilerin yapay sinir agı ile egiterek kredi verilmesi uygun
bulunup bulunmamasına göre ögrenme gerçeklestirilmstir ve yeni gelen müsterilere kredi verilip
verilmemisi aga göre hesaplanmıstır.
39
3.4.2 Uygulamanın Içerigi
Ögrenme için elde edilen egitim verisi 2000 gözlem ve 6 degiskene sahip bu degiskenler
"client id", "income", "age", "loan", "LTI", "default10yr" dir. Ag girisi olarak "age" ve "LTI(the
loan to yearly income ratio)" ele alınmıstır ve çıkıs olarak "default10yr" tir.
3.4.3 Uygulamanın Asamaları
1. Veriyi R ortamına ekleme
2. Egitim ve Test verisi olusturma
3. Agı egitmek için "neuralnet" kütüphanesinin çagrılması
4. Elde edilen egitim verisi ile agı egitme
5. Elde edilen agı çizme
6. Test verisi ile agı test etme
3.4.4 Ugulamanın R kodları
• library(”neuralnet”)
• getwd()
• setwd(”C : /Users/acer/Desktop”)
• dataset <−read.csv(”creditset.csv”)
• head(dataset)
• str(dataset)
• trainset <−dataset[1 : 800, ]
• testset <−dataset[801 : 2000, ]
• creditnet <−neuralnet(de f ault10yr LT I+age, trainset,hidden= 4, li f esign= ”minimal”, linear.out put =
FALSE, threshold = 0.1)
40
• plot(creditnet,rep = ”best”)
Sekil 29: Kredi Derecelendirme Gerçeklestiren Yapay Sinir Agı
• temp_test <−subset(testset,select = c(”LT I”,”age”))
• creditnet.results <−compute(creditnet, temp_test)
• head(temptest)
• results<−data. f rame(actual = testset$de f ault10yr, prediction= creditnet.results$net.result)
• results[180 : 215, ]
• results$prediction <−round(results$prediction)
• results[180 : 215, ]
3.5 Web Ortamında Dinamik Veri Analizi
3.5.1 Uygulamanın Amacı
"Dataset" paketinde bulunan hazır verileri veya sonradan eklenilen verileri Web Ortamında
dinamik bir sekilde analiz edilmesi gerçeklenmistir
41
3.5.2 Uygulamanın Içerigi
Uygulamada Shiny paketi ile gerçeklestirilen web arayüzünde eklenilen verilerin özeti, veri
yapısı, veri degiskenleriin iiski çizimleri ve veri modellenmesi gerçeklestirilmistir.
3.5.3 Uygulama
Sekil 30: Shiny Paket Uygulması
3.6 Yapay sinir Agı ile Animasyon Örnegi
3.6.1 Uygulama
Sekil 31: nnet ve animation Paket Uygulması
42
ARASTIRMA BULGULARI VE TARTISMA
Yapılan uygulamalar sonucunda R programlama dilinin istatistiksel, veri madenciligi, veri
analizi ve görsellestirme(grafik) gibi konularda çok iyi oldugu tespit edilmistir. Diger program-
lama dillerini geride bırakarak kullanıcı sayısı sürekli olarak artmaktadır, Verinin sürekli artıgı bir
dünyada bu verilerin analizi için R bir adım öne çıkmaktadır.
43
SONUÇLAR VE ÖNERILER
Bu çalısmada, son yıllarda akademik çalısmalarda yaygın olarak kullanılan R programlama
dilinin tanıtılması hedeflenmistir. R, ücretsiz olarak temin edilmesi ve dünyanın çesitli bölgele-
rindeki arastırmacıların bu dilin gelisimine destek vermesi sonucunda, özellikle veri isleme ve
çözümleme alanlarında çalısan kullanıcıların dikkatini çekmistir
44
KAYNAKLAR
[1]http://cran.us.r-project.org/doc/manuals/r-patched/R-lang.html
[2]ab.org.tr/ab10/sunum/37.pdf
[3]inet-tr.org.tr/inetconf19/sunum/16.pdf
[4]http://datawarehouse.gen.tr/r-programi-ve-ozellikleri/
[5]mmfdergi.ogu.edu.tr/mmfdrg/2005-2/6.pdf
[6]http://tr.wikipedia.org/
[7]http://www.endmemo.com/program/R
[8]http://www.statmethods.net/
[9]http://www.rdatamining.com/
[9]http://www.rdatamining.com/
[9]http://www.rdatamining.com/
[10]http://www.r-bloggers.com/
[11]https://github.com/
45
ÖZGEÇMIS
KISISEL BILGILER
Adı Soyadı :SÜKRÜ ERGÜNTOP
Uyrugu : T.C
Dogum Yeri ve Tarihi: VAN/20-06-1992
Adres : ——-
——-
Telefon : 0551-553-99-86
e-mail : —-@—-
EGITIM DURUMU
Lisans Ögrenimi : Bilecik Seyh Edebali Üniverstesi, Bilecik
Bitirme Yılı : 2015
Lise : ——-
IS DENEYIMLERI
Yıl : ——-
Kurum : ——-
Stajlar : TRT Bilgi Islem Dairesi(Yazılımı ve Donanım)
ILGI ALANLARI
YABANCI DILLER : Orta
46