56
T.C. B ˙ ILEC ˙ IK ¸ SEYH EDEBAL ˙ I ÜN ˙ IVERS ˙ ITES ˙ I MÜHEND ˙ ISL ˙ IK FAKÜLTES ˙ I B ˙ ILG ˙ ISAYAR MÜHEND ˙ ISL ˙ I ˘ G ˙ I R PROGRAMLAMA VE BAZI R PAKET UYGULAMALARI ¸ SÜKRÜ ERGÜNTOP B ˙ IT ˙ IRME ÇALI ¸ SMASI MAYIS-2015 B ˙ ILEC ˙ IK

R Programlama Notları

Embed Size (px)

Citation preview

Page 1: R Programlama  Notları

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

Page 2: R Programlama  Notları

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

Page 3: R Programlama  Notları

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

Page 4: R Programlama  Notları

Ö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

Page 5: R Programlama  Notları

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

Page 6: R Programlama  Notları

Ö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

Page 7: R Programlama  Notları

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

Page 8: R Programlama  Notları

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

Page 9: R Programlama  Notları

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

Page 10: R Programlama  Notları

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

Page 11: R Programlama  Notları

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

Page 12: R Programlama  Notları

• 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

Page 13: R Programlama  Notları

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

Page 14: R Programlama  Notları

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

Page 15: R Programlama  Notları

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

Page 16: R Programlama  Notları

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

Page 17: R Programlama  Notları

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

Page 18: R Programlama  Notları

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

Page 19: R Programlama  Notları

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

Page 20: R Programlama  Notları

• 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

Page 21: R Programlama  Notları

• 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

Page 22: R Programlama  Notları

• 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

Page 23: R Programlama  Notları

{

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

Page 24: R Programlama  Notları

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

Page 25: R Programlama  Notları

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

Page 26: R Programlama  Notları

* 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

Page 27: R Programlama  Notları

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

Page 28: R Programlama  Notları

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

Page 29: R Programlama  Notları

• 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

Page 30: R Programlama  Notları

Sekil 16: Plot çizimi 3

20

Page 31: R Programlama  Notları

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

Page 32: R Programlama  Notları

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

Page 33: R Programlama  Notları

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

Page 34: R Programlama  Notları

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

Page 35: R Programlama  Notları

• 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

Page 36: R Programlama  Notları

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

Page 37: R Programlama  Notları

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

Page 38: R Programlama  Notları

}

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

Page 39: R Programlama  Notları

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

Page 40: R Programlama  Notları

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

Page 41: R Programlama  Notları

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

Page 42: R Programlama  Notları

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

Page 43: R Programlama  Notları

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) =

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

Page 44: R Programlama  Notları

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

Page 45: R Programlama  Notları

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

Page 46: R Programlama  Notları

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

Page 47: R Programlama  Notları

• 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

Page 48: R Programlama  Notları

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

Page 49: R Programlama  Notları

• 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

Page 50: R Programlama  Notları

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

Page 51: R Programlama  Notları

• 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

Page 52: R Programlama  Notları

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

Page 53: R Programlama  Notları

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

Page 54: R Programlama  Notları

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

Page 55: R Programlama  Notları

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

Page 56: R Programlama  Notları

Ö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