Statistika dengan R : Describing Data, Barplot, Histogram, Scatter Plot

Statistika dengan R : Describing Data, Barplot, Histogram, Scatter Plot


Desribing Data





Data yang dimiliki butuh diolah untuk mendapatkan informasi-informasi yang berguna dari data tersebut. Saat mempresentasikan data yang dimiliki, menyajikan dalam sebuah grafik seringkali sangat “berguna”. Menyajikan data dalam sebuah grafik dapat memungkinkan Anda untuk dapat melihat pola atau karakteristik dari data yang Anda miliki. Selain dengan grafik, data juga dapat disajikan dalam ukuran-ukuran numeriknya (rata-rata, standard deviasi, dll).


R memiliki kemampuan untuk melakukan visualisasi data ke dalam grafik yang menurut Anda tepat untuk membantu Anda menemukan pola atau karakteristik dari data yang Anda miliki. R juga memiliki kemampuan untuk melakukan perhitungan statistik dengan mudah.


Untuk membuat grafik, kita akan menggunakan library `ggplot2`. Jika Anda belum pernah menginstall library tersebut, install library tersebut terlebih dahulu.


```{r, include=FALSE}

library(ggplot2)

food_coded <- read.csv("food_coded.csv")

```



Bar Charts ( Diagram Batang )



Diagram batang dapat digunakan untuk menyajikan frekuensi dari kategori pada data kategorial (qualitative), misalnya: jika ingin membuat grafik yang menyatakan banyaknya peserta mata kuliah yang mendapat Angka Akhir ‘A’, ‘B’, ‘C’, ‘D’, atau ‘E’ atau jika ingin membuat grafik yang menyatakan banyaknya masing-masing genre (drama, animasi, horror, dll) film yang mendapat review.


Selain menyatakan frekuensi dari sebuah kategori, informasi apalagi yang dapat disajikan dengan menggunakan diagram batang?


Untuk melihat fluktuasi data dan mewakili data tunggal maupun kelompok


Untuk membuat diagram batang, dapat menggunakan perintah


```

qplot(

  <nama vektor>,

  geom = "bar"

)

```


Kita akan menggunakan dataset "mtcars" yang sudah tersedia di dataset R untuk modul ini. Misalkan kita ingin membuat diagram batang dari field `cyl`


```{r contoh barplot}

qplot(

  mtcars$cyl,

  geom="bar"

)

```


Meskipun field `cyl` bertipe numerik tetapi nilai `cyl` dapat dipandang sebagai data qualitative (dalam kasus ini adalah 4, 6, dan 8).


Untuk mengubah tampilan dari diagram batang:


  • Parameter ‘fill’ digunakan untuk mengubah warna dari batang
  • Parameter ‘colour’ digunakan untuk mengubah warna garis tepi dari masing-masing batang
  • Parameter ‘xlab’ untuk mengubah label dari axis x
  • Parameter ‘ylab’ untuk mengubah label dari axis y
  • Parameter ‘main’ digunakan untuk memberi judul dari  grafik


```{r contoh barplot yang ditambah parameter}

qplot(

  mtcars$cyl,

  geom = "bar",

  fill = I("blue"),

  colour = I("white"),

  xlab = "Cylinders",

  ylab = "Number of Vehicles",

  main = "Cylinders in mtcars"

  )

```


Cobalah untuk mengganti-ganti isi paramter di atas.


Selain menggunakan `qplot`, kita dapat membuat barplot dengan menggunakan perintah di bawah ini untuk membuat barplot


```

ggplot(<nama data frame>, aes(x = <nama vektor>))+

geom_bar()

```


Jika ingin menambahkan parameter untuk `fill` dan `color` dapat ditambahkan di dalam `geom_bar()`. Sedangkan untuk memberi label di sb-x, sb-y, dan judul plot, maka gunakan perintah


```

xlab("<x label>")

ylab("<y label>")

ggtilge("<judul>")

```


Perhatikan contoh berikut ini:


```{r}

ggplot(mtcars, aes(x = cyl))+

  geom_bar(fill = I("blue"), colour = I("white"),)+

  xlab("Cylinders")+

  ylab("Number of Vehicles")+

  ggtitle("Cylinders in mtcars")

```


xlab, ylab, dan ggtitle tidak harus ada. Gunakan jika ingin memberi keterangan untuk label sb-x, sb-y, dan judul plot.


Perhatikan geom_bar membuat barplot dari sebuah vektor kategorical. geom_bar menghitung frekuensi kemunculan masing-masing kategori. Bagaimana jika ingin membuat barplot dari data frame yang sudah ada frekuensi(nilai yang ingin ditampilkan) dari masing-masing kategori. Misalkan data_coklat di bawah ini:


```{r data_coklat}

nama_coklat <- c("Kitkit", "Toblerong", "Gold King", "Chatburi")

rating_coklat <- c(8.5, 10, 6, 7)

data_coklat <- data.frame(nama_coklat, rating_coklat)

```


Dari data_coklat, ingin dibuat barplot di mana sb-y menyatakan rating dari masing-masing coklat. Untuk membuat barplot seperti ini, gunakan geom_col(). Perhatikan contoh di bawah ini:


```{r contoh geom_col}

ggplot(data_coklat, aes(x=nama_coklat, y=rating_coklat))+

  geom_col()+

  xlab("nama coklat")+

  ylab("rating")+

  ggtitle("Rating coklat")

```


Download dataset food_coded.csv dan import dataset tersebut. Pelajari makna dari masing-masing variabel melalui dokumen codebook_food.docx. Buatlah diagram batang untuk variabel calories_day.


```{r}

ggplot(food_coded,aes(x=calories_day))+

  geom_bar()+

  xlab("Calories Day")+

  ylab("Freq")+

  ggtitle("Calories Day")

```


Dari diagram batang tersebut, apa yang bisa Anda ketahui? (misal pendapat apa yang paling banyak dipilih)

  • 1) Tidak ada yang memilih Calories Day dengan value 1 dimana di databook 1 itu variabel yang memungkinkan untuk dipilih 
  • 2) Calories day 3 paling banyak dipilih dimana berisikan "it is moderately important" 3) Paling sedikit dipilih yang tercantum pada barplot adalah Day 2 yang berisikan "it is not at all important "


Jika ingin membuat plot yang menggambarkan hubungan 2 variabel kategorikan, kita dapat menggunakan:


  • side-by-side bar plot
  • stacked bar plot
  • standardize stacked bar plot


Misalkan kita ingin membuat grafik untuk melihat frekuensi mobil di dataset `mtcars` untuk masing-masing kategori `cyl` di masing-masing kategori `carb`.


```{r}

ggplot(data = mtcars, aes(x=factor(carb), fill=factor(cyl)))+

  geom_bar(position = "dodge")+

  xlab("carb")+

 guides(fill=guide_legend("cyl")) #perintah untuk mengubah judul legend

```


Perhatikan untuk membuat side-by-side barplot, variabel harus bertipe `factor`.


Dari dataset food_code. Buatlah side-by-side bar plot untuk calories day di masing-masing pilihan breakfast.


```{r}

ggplot(data=food_coded,aes(x=factor(calories_day), fill=factor(breakfast)))+

  geom_bar(position = "dodge")+

  xlab("Calories Day")+

  ylab("Freq")+

  ggtitle("Calories Day and Breakfast")+

  guides(fill=guide_legend("Breakfast Selection"))

```


Selain side-by-side, dapat juga menggunakan stacked bar plot. Yang perlu diubah hanyalah parameter `position = "stack"`. Perhatikan contoh berikut ini:


```{r}

ggplot(data = mtcars, aes(x=factor(carb), fill=factor(cyl)))+

  geom_bar(position = "stack")+ 

  xlab("carb")+

  guides(fill=guide_legend("cyl"))

```


Dari dataset food_code. Buatlah stacked bar plot untuk calories day di masing-masing pilihan breakfast.


```{r}

ggplot(data=food_coded,aes(x=factor(calories_day), fill=factor(breakfast)))+

  geom_bar(position = "Stack")+

  xlab("Calories Day")+

  ylab("Freq")+

  ggtitle("Calories Day and Breakfast")+

  guides(fill=guide_legend("Breakfast Selection"))

```


Untuk membuat standardize stacked bar plot, perhatikan contoh berikut ini:


```{r}

ggplot(data = mtcars, aes(x=factor(carb), fill=factor(cyl)))+

  geom_bar(position = "fill")+

  xlab("carb")+

  guides(fill=guide_legend("cyl"))

```


Membuat standardize stacked bar plot memudahkan untuk melihat apakah variabel cyl memiliki hubungan dengan carb. Karena proporsi cyl untuk masing-masing carb berbeda, maka terlihat carb dan cyl memiliki hubungan.


Dari dataset food_code. Buatlah standardized stacked bar plot untuk calories day di masing-masing pilihan breakfast.


```{r}

ggplot(data=food_coded,aes(x=factor(calories_day), fill=factor(breakfast)))+

  geom_bar(position = "fill")+

  xlab("Calories Day")+

  ylab("Proprotion")+

  ggtitle("Calories Day and Breakfast")+

  guides(fill=guide_legend("Breakfast Selection"))

```


Dari plot di atas, apakah terlihat ada hubungan antara calories day dengan pilihan breakfast? Ya


Histogram




Histogram memiliki tampilan dan kegunaan yang sangat mirip dengan diagram batang. Perbedaan antara histogram dan diagram batang ada pada jenis data yang digunakan. Jika data yang digunakan adalah data qualitative, maka gunakan diagram batang. Jika data yang digunakan adalah data quantitative (khususnya yang rentang nilainya sangat besar atau kontinu), maka histogram akan lebih bagus untuk digunakan. Histogram membagi titik-titik data ke dalam rentang nilai (kelas) tertentu kemudian menghitung banyaknya nilai yang ada di dalam masing-masing rentang kelas. Sumbu-x pada histogram menyatakan rentang kelas dan sumbu-y pada histogram menyatakan banyaknya data pada suatu rentang tertentu.Dengan menggunakan histogram, kita dapat melihat distribusi nilai dari variabel.


Untuk membuat histogram, juga akan digunakan library “ggplot2”. Dataset yang akan digunakan sebagai contoh juga dataset “mtcars” pada variabel “horsepower”.


Untuk membuat histogram dari "horsepower", Anda dapat menggunakan perintah sebagai berikut:


``` {r contoh histogram}

qplot(

mtcars$hp,

  geom="histogram"

)

```


Banyaknya kelas pada histogram dengan menggunakan perintah `qplot` standardnya adalah 30. Untuk membuat histogram yang lebih landa, Anda dapat mengubah banyaknya kelas dan juga lebar dari sebuah kelas.


  • Untuk mengubah banyaknya bin, gunakan parameter `bins`
  • Untuk mengubah lebar dari sebuah kelas, gunakan parameter `binwidth`
  • Untuk mengubah warna, garis tepi, menambahkan label, dll, gunakan parameter yang sama dengan saat membuat diagram batang


Silakan coba-coba untuk mengubah bins, binwidth, dll.


Seperti pada bar plot, selain menggunakan qplot dapat juga menggunakan geom_histogram untuk membuat histogram.

 

```

ggplot(<nama data frame>, aes(x = <nama vektor>))+

geom_histogram()

```


Contoh histogram dari `horsepower`


```{r contoh histogram 2}

ggplot(mtcars, aes(x=hp))+

  geom_histogram()

```


Jika ingin mengubah banyaknya bin yang digunakan:


```{r contoh histogram 3}

ggplot(mtcars, aes(x=hp))+

  geom_histogram(bins=10)

```



Dari dataset food_code. Buatlah histogram untuk variabel GPA. Tentukan bins atau binwidth yang tepat untuk histogram ini. Berikan label sb-x, sb-y, dan juga judul grafik yang tepat.


```{r}

ggplot(food_coded, aes(x=GPA))+

  geom_histogram(bins=15,colour='white')+

  ylab("Frekuensi")+

  xlab("GPA Level")+

  ggtitle("Total GPA Level")

```


Untuk melihat pusat dan sebaran data, salah satu ukuran yang dapat digunakan adalah rata-rata dan standar deviasi. Di R, menghitung rata-rata dapat menggunakan perintah `mean(<nama vektor>)`. Jika ada nilai NA di vektor tersebut, maka rata-rata akan menjadi NaN. Untuk mengabaikan baris-baris NA, maka tambahkan parameter `na.rm=TRUE` di dalam fungsi `mean`. Untuk menghitung standard deviasi, gunakan fungsi `sd(<nama vektor>)`. Sama dengan mean, untuj mengabaikan baris-baris NA, gunakan parameter `na.rm=TRUE`.


Dari dataset food_code. Carilah rata-rata dan standard deviasi dari GPA.


```{r}

gpa_mean <- mean(food_coded[["GPA"]], na.rm = TRUE)

gpa_mean

gpa_std <- sd(food_coded[["GPA"]], na.rm = TRUE)

gpa_std

```


Boxplot




Untuk melihat distribusi nilai, dapat juga digunakna boxplot. Boxplot dibuat berdasarkan kuartil-kuartilnya dan interquartilnya.

Kuartil membagi suatu variabel menjadi 4 bagian. Interkuartil adalah q3-q1.Untuk mendapatkan informasi kuartil, dapat menggunakan perintah `summary(<nama vektor>)`.


Tentukan kuartil 1, kuartil 2 (median), dan kuartil 3 dari variabel GPA di food_coded_edit.


```{r}

food_coded_edit <- food_coded[,c("GPA")]

smr <- quantile(food_coded_edit, na.rm = TRUE)

smr

```


Untuk membuat boxplot di R, dapat digunakan perintah:


```

ggplot(<nama data frame>, aes(y=<nama variabel>))+

  geom_boxplot()

```


Contoh berikut ini adalah boxplot dari variabel horsepower di mtcars:


```{r contoh boxplot}

ggplot(mtcars, aes(y=hp))+

  geom_boxplot()

```


Jika ingin membuat boxplot horsepower untuk masing-masing tipe cyl, dapat menambahkan paramter x pada fungsi `aes()`


```{r}

ggplot(mtcars, aes(x=factor(cyl),y=hp))+

  geom_boxplot()

```


Buatlah boxplot dari variabel GPA untuk masing-masing gender


```{r}

ggplot(food_coded, aes(x=factor(Gender),y=GPA))+

  geom_boxplot()

```


Scatter Plot





Scatter plot adalah grafik yang digunakan untuk melihat suatu “pola” hubungan antara 2 variabel. Library “ggplot2” juga dapat digunakan untuk membuat scatter plot. Dataset yang akan digunakan sebagai contoh adalah dataset “mtcars” juga. Sebagai contoh, kita akan membuat scatter plot untuk melihat hubungan antara variable “mpg” dengan “wt”.


Untuk membuat scatter plot, Anda dapat menggunakan perintah


```{r}

ggplot(mtcars, aes(x = mpg, y = wt))+

  geom_point()

```


Parameter-parameter penting pada scatter plot adalah:


  • `xlab`, `ylab`, dan `ggtitle` adalah untuk memberi label pada sb-x, sb-y, dan judul untuk plot
  • `colour` untuk mengubah warna titik


Perhatikan contoh berikut ini dan silakan eksperimen mandiri untuk lebih mengerti:


```{r}

ggplot(mtcars, aes(x = mpg, y = wt, shape=factor(mtcars$cyl))) +

geom_point(colour = 'blue') +

xlab('Miles per Gallon') +

ylab('Weight') +

ggtitle('Scatterplot')

```


Dari contoh di atas dapat dilihat bahwa menambahkan parameter shape pada `aes()` memungkinkan kita untuk membuat scatter plot dari 3 variabel.


Buatlah scatter plot untuk melihat hubungan GPA dengan Weight


```{r}

ggplot(food_coded, aes(x = weight, y = GPA)) +

geom_point(colour = 'blue') +

xlab('Weight') +

ylab('GPA') +

ggtitle('GPA and Weight Correlation')+

  geom_smooth(method = 'lm')

```


Apakah ada hubungan antara GPA dengan Weight?

Ada, tetapi hubungan antar atribut tersebut digolongkan sebagai lemah. Jika kita menilik pada fungsi geom_smooth(method = 'lm') dimana berisikan data scatterplot yang sudah terintegrasi dengan Linear Regression, garis Linear Regression itu menunjukkan tren negatif atau turun yang tidak begitu signifikan. Ada hubungan lemah yang menjustifikasi bahwa weight akan berpengaruh tidak begitu signifikan terhadap tingginya angka GPA


Dari sebelumnya, tambahkan variabel Gender sebagai variabel ketiga di scatterplot tersebut. Tambahkan sebagai penentu warna dari titik yang ada di scatter plot (bukan sebagai penentu bentuk titik)


```{r}

ggplot(food_coded, aes(x = weight, y = GPA, color = factor(Gender))) +

geom_point() +

xlab('Weight') +

ylab('GPA') +

ggtitle('GPA and Weight Correlation')

```

Post a Comment

Lebih baru Lebih lama