Algoritma & Struktur Data
Ujian Akhir Semester (UAS)
| Kontak | : \(\downarrow\) |
| : dhelaagatha@gmail.com | |
| : https://www.instagram.com/dhelaasf/ | |
| RPubs | : https://rpubs.com/dhelaasafiani/ |
| NIM | : 20214920009 |
| Prodi | : Statistika Bisnis 2021 |
Soal UAS
Berikut ini saya lampirkan data perumahan di kota Melbourne Australia, dengan struktur data sebagai berikut:
Type: yang dibagi menjadi 3 bagian
TipeA.csv
TipeB.xlsx
TipeC.rds
Dimana setiap tipe rumah (A,B,C) tersebut terdiri dari beberapa variabel sebagai berikut:
- Suburb: Suburb
- Rooms: Number of rooms
- Price: Price in dollars
- Method: Status of property sale -
* S - property sold;
* SP - property sold prior;
* PI - property passed in;
* PN - sold prior not disclosed;
* SN - sold not disclosed;
* VB - vendor bid;
* W - withdrawn prior to auction;
* SA - sold after auction;
* SS - sold after auction price not disclosed.
- SellerG: Real Estate Agent
- Date: Date sold
- Distance: Distance from CBD
- Bedroom2: Number of Bedrooms
- Bathroom: Number of Bathrooms
- Car: Number of car spots
- Landsize: Land Size
- YearBuilt: Year the house was built
- Regionname: General Region (West, North West, North, North east …etc)
Soal 1
Gabungkan data tipe A,B, C kedalam satu dataframe sehingga membentuk struktur data (Type,Subur, Price, Method, SellerG, Date, Distance,Bedroom2, Bathroom, Car, Landsize, YearBuilt, Regionname)
pacman::p_load(readxl, writexl) # untuk load readxl, writexl, untuk read excel
imp1 <- read.csv("UAS/TipeA.csv",sep = ",") # impor data tipe A yang berbentuk file csv, kita gunakan fungsi read.csv
imp2 <- read_excel("UAS/TipeB.xlsx") # impor data tipe B yang berbentuk file xlsx, kita gunakan fungsi read_excel
imp3 <- readRDS("UAS/TipeC.rds") # impor data tipe C yang berbentuk file rds, kita gunakan fungsi readRDS
# Untuk menambahkan variabel baru pada setiap data
imp1$Type = "Cluster"
imp2$Type = "Komplek"
imp3$Type = "Residence"
# Menggabungkan ke-3 data yang sudah di impor
df <- rbind(imp1,imp2,imp3) # menggabungkan imp1,imp2,imp3
df # mencetak hasil berupa dataframe dari df
Baik, pada kali ini saya mau menggabungkan data tipe A, B, dan C menjadi 1 data frame. Tapi sebelumnya, kita perlu untuk import data nya terlebih dahulu. Di dalam data belum ada tipe rumah, jadi saya menambahkan variable baru di dataset yang saya pakai. Variable nya bernama Type. Dimana isi TYpe atau tipe rumah ini ada tipe rumah cluster, komplek, dan residence. Setelah itu, saya ingin menyatukan 3 data menjadi 1 dataframe dengan menggunakan fungsi rbind. Saya menamai dataframe ini df
# Menggabungkan variabel-variabel yang ditentukan ke dalam 1 dataframe baru yang bernama 'yy'
yy = data.frame("Type" =df$Type,
"Subur" =df$Suburb,
"Price"= df$Price,
"Method" = df$Method,
"SellerG" = df$SellerG,
"Date" = df$Date,
"Distance" = df$Distance,
"Bedroom2" = df$Bedroom2,
"Bathroom" = df$Bathroom,
"Car" = df$Car,
"Landsize" = df$Landsize,
"YearBuilt" = df$YearBuilt,
"Regionname" = df$Regionname)
# Memanggil data frame 'yy'
yy
Setelah itu, saya ingin mengambil variable data yang dibutuhkan saja seperti yang ada di perintah soal. Saya mengambil variabel data (Type,Subur, Price, Method, SellerG, Date, Distance,Bedroom2, Bathroom, Car, Landsize, YearBuilt, Regionname). Setelah itu, saya jadikan dataframe baru lagi yang isinya variabel yang sudah ditentukan. Saya menggunakan fungsi dataframe untuk mengambil kolom variabel data dari dataframe df.
Soal 2
Rename setiap variabel diatas kedalam bahasa indonesia.
ganti <- yy # Menggati nama dataframe 'yy' menjadi 'ganti'
# Mengganti nama variabel dengan menggunakan fungsi names
names(ganti) = c("Tipe",
"Pinggiran_Kota",
"Harga",
"Metode",
"PenjualG",
"Tanggal" ,
"Jarak",
"Kamartidur2",
"Kamarmandi",
"Mobil",
"Luas",
"Tahunbangun",
"Daerah")
ganti
Dalam kasus ini, saya ingin mengganti nama-nama variabel nya menjadi versi bahasa indonesia. Dimana saya menggunakan fungsi names untuk mengganti nama setiap variabel nya atau melakukan rename setiap variabel nya. Setelah itu, masukan list nama variabel baru yang akan diganti nama variabel nya dari yang sebelumnya. Setelah itu, print dataframe ganti
Soal 3
Rename kategori variabel “Regionname” kedalam bahasa Indonesia.
ganti$Daerah[ganti$Daerah=="Southern Metropolitan"] <- "Selatan"
ganti$Daerah[ganti$Daerah=="Northern Metropolitan"] <- "Utara"
ganti$Daerah[ganti$Daerah=="Western Metropolitan"] <- "Barat"
ganti$Daerah[ganti$Daerah=="Eastern Metropolitan"] <- "Timur"
ganti$Daerah[ganti$Daerah=="South-Eastern Metropolitan"] <- "Tenggara.Metropolitan"
ganti$Daerah[ganti$Daerah=="Northern Victoria"] <- "Utara.Victoria"
ganti$Daerah[ganti$Daerah=="Western Victoria"] <- "Barat.Victoria"
ganti$Daerah[ganti$Daerah=="Eastern Victoria"] <- "Timur.Victoria"
ganti
Disini, saya mendapat kasus bahwa kita harus melakukan rename setiap kategori variabel ‘Daerah’ ke bahasa Indonesia.
#wilayah = factor(c(ganti$Daerah))
#library("dplyr")
# %>%
# group_by(ganti$Daerah)%>%
# summarise(n_distinct(ganti$Daerah))
#levels(wilayah) <- list(Utara.Met = "Northern Metropolitan",
# Selatan.Met = "Southern Metropolitan",
# Timur.Met = "Eastern Metropolitan",
# Barat.Met = "Western Metropolitan",
# Tenggara.Met = "South-Eastern Metropolitan",
# Utara.Vic = "Northern Victoria",
# Timur.Vic = "Eastern Victoria",
# Barat.Vic = "Western Victoria")
#ganti$Daerah = wilayah
#gantiSoal 4
Lakukan pengecekan Missing Value dan pengendalian
# Cara melakukan pengecekan missing values
t_NA = na.omit(ganti) # Menggunakan fungsi 'na.omit' untuk memunculkan data yang sudah bersih dari missing values
t_NA # print t_NAada.NA = setdiff(ganti, t_NA) # Memunculkan data 'ganti' yang tidak ada data 't_NA' nya
ada.NA# Cara manual
NA_Harga = ganti[is.na(ganti$Harga),]
NA_Ktidur = ganti[is.na(ganti$Kamartidur2),]
NA_Kmandi = ganti[is.na(ganti$Kamarmandi),]
NA_Mobil = ganti[is.na(ganti$Mobil),]
NA_Jarak = ganti[is.na(ganti$Jarak),]
NA_Luas = ganti[is.na(ganti$Luas),]
NA_Tahun = ganti[is.na(ganti$Tahunbangun),]
NA_Wilayah = ganti[is.na(ganti$Daerah),]
library(prob)
a = union(NA_Harga,
union(NA_Ktidur,
union(NA_Kmandi,
union(NA_Mobil,
union(NA_Jarak,
union(NA_Luas,
union(NA_Tahun,
(NA_Wilayah))))))))
a
Disini saya ingin melakukan pengecekan missing value yang ada dalam data ganti. Pertama, saya menggunakan fungsi na.omit untuk menyingkirkan data yang memiliki Missing Values pada data ganti. Setelah smua NA sudah di hilangkan, saya memanggil data baru yang sudah bersih dari NA. Data bersih ini bernama t_NA. Lalu, akan muncul data bersih atau yang tidak ada Missing Values nya lagi.
Nah, bagaimana cara kita tau Missing Values letaknya dimana saja? Saya memiliki cara untuk mengetahui Missing Valuesnya letaknya dimana saja. Yaitu dengan menggunakan fungsi setdiff. Kenapa? karena saya ingin memunculkan data yang memiliki Missing Value nya saja. Dalam arti, saya ingin memunculkan data ganti yang sudah tidak ada lagi data t_NA nya. Seperti yang kita ketahui tadi, t_NA itu adalah data dari ganti yang sudah tidak ada lagi nilai NA nya. Nah, disini kita ingin menggunakan setdiff dimana ingin memunculkan data yang berisi NA nya saja. Disini saya menamai data yang berisi NA saja itu adalah ada.NA.
Saya memiliki opsi lain untuk mengetahui data yang sudah bersih dari NA, dan data yang ada NA nya saja. Pertama, saya melakukan subset tiap variable yang memiliki NA terlebih dahulu. Tentunya dengan menggunakan fungsi is.na. Ketika di run, muncul data yang kita inginkan. Setelah itu, saya menggunakan library prob untuk mencari data ‘ganti’ yang sudah tidak ada nilai NA nya lagi. Yaitu dengan menggunakan fungsi union. Fungsi union ini digunakan untuk mengkombinasikan kedua data atau lebih.
# Menggati NA dengan 0
# ganti[is.na(ganti)] <- 0 # menggunakan fungsi 'is.na' untuk mengganti nilai NA menjadi 0
# ganti
Nah, disini saya memiliki opsi lain untuk melakukan pengendalian terhadap missing values. Yaitu dengan mengganti NA dengan 0. Disini saya menggunakan fungsi is.na dan mengganti NA nya dengan nilai 0. KEtika di print, smua missing values yang ada di data ‘ganti’ akan berubah menjadi 0.
Keterangan:
- select() : mengambil data atau variabel yang dibutuhkan
- filter() : menyaring data
- %>% : menggabungkan berbagai fungsi atau meneruskan suatu fungsi
summary(ganti)## Tipe Pinggiran_Kota Harga Metode
## Length:34857 Length:34857 Min. : 85000 Length:34857
## Class :character Class :character 1st Qu.: 635000 Class :character
## Mode :character Mode :character Median : 870000 Mode :character
## Mean : 1050173
## 3rd Qu.: 1295000
## Max. :11200000
## NA's :7610
## PenjualG Tanggal Jarak Kamartidur2
## Length:34857 Length:34857 Min. : 0.00 Min. : 0.000
## Class :character Class :character 1st Qu.: 6.40 1st Qu.: 2.000
## Mode :character Mode :character Median :10.30 Median : 3.000
## Mean :11.18 Mean : 3.085
## 3rd Qu.:14.00 3rd Qu.: 4.000
## Max. :48.10 Max. :30.000
## NA's :1 NA's :8217
## Kamarmandi Mobil Luas Tahunbangun
## Min. : 0.000 Min. : 0.000 Min. : 0.0 Min. :1196
## 1st Qu.: 1.000 1st Qu.: 1.000 1st Qu.: 224.0 1st Qu.:1940
## Median : 2.000 Median : 2.000 Median : 521.0 Median :1970
## Mean : 1.625 Mean : 1.729 Mean : 593.6 Mean :1965
## 3rd Qu.: 2.000 3rd Qu.: 2.000 3rd Qu.: 670.0 3rd Qu.:2000
## Max. :12.000 Max. :26.000 Max. :433014.0 Max. :2106
## NA's :8226 NA's :8728 NA's :11810 NA's :19306
## Daerah
## Length:34857
## Class :character
## Mode :character
##
##
##
##
Soal 5
Buatlah Visualisasi Data secara lengkap untuk mendapatkan informasi penting yang terkandung dalam Data_Perumahan_Melbourne.xlsx. Keterangan
1. geom_histogram : fungsi untuk memodifikasi histogram
2. scale_y_continuous: Mengubah label tanda centang pada sumbu y
3. labs : Ubah label sumbu, legenda, dan plot
4. geom_boxplot : fungsi untuk modifikasi boxplot
5. coord_polar : utk diagram lingkaran
6. factor : Mengubah urutan kategori untuk kelas variabel serta urutan labels untuk variabel drive
7. scale_fill_brewer : Mengubah skema warna isian
8. theme_minimal : Menghapus latar belakang abu-abu dan mengubah warna kisi
9. summarize() : mengembalikan NA jika ada nilai yang terlibat dalam perhitungan adalah NA.
library(ggplot2) # panggil library ggplot2
ggplot(t_NA, aes(Harga))+
geom_histogram(binwidth = 300000, # lebaar binwidth
fill = "black", # beri fill atau warna pada bar
color ="white", # warna pada garis bar
bins = 10,
size = 1)+
scale_x_continuous(breaks = c(1000000,2000000,3000000,4000000),
labels = c("$1m","$2m","$3m","$4m"))+ # memasukkan harga berdasarkan dollar
labs(title = "Harga Perumahan Melbourne")
Berdasarkan grafik di atas, dapat disimpulkan bahwa harga perumahan yang paling banyak diminati adalah harga yang kurang dari $1m.
Dalam pembuatan grafik ini, kita perlu untuk memanggil library ggplot2. Setelah itu, memplot variabel Harga. Setelah itu, modifikasi grafik menggunakan fungsi histogram yaitu geom_histogram.
library(ggplot2) # panggil library ggplot2
ggplot(t_NA, aes(Tipe, Harga)) + # memplot variable tipe dan harga pada data t_NA
geom_boxplot(outlier.colour = "red") + # memberi warna pencilan merah
scale_x_discrete(labels = c('Cluster','Komplek','Residence')) + # memberi label di sb. x
scale_y_continuous(breaks=seq(0,10000000,1500000)) + # memberi label pada sb. y dari 0 - 10000000
xlab("Tipe") + # memberi label pada grafik di x berupa 'tipe'
ylab("Harga") + # memberi label di sb.y berupa 'harga'
ggtitle("Distribusi Harga Tipe Rumah") # memberi judul grafik
Berdasarkan grafik di atas, dapat disimpulkan bahwa cluster rumah dengan tipe Cluster memiliki harga yang paling mahal dibandingkan dengan tipe komplek dan residence.
Untuk membuat grafik di atas, kita perlu memanggil library ggplot2 dan memplot variabel Tipe dan Harga dari data ‘t_NA’. Setelah itu, kita beri warna pada pencila boxplot dengan fungsi geom_boxplot. Lalu, beri label untuk setiap sumbu x dan y. Dan tentunya langkah terakhir adalah jangan lupa untuk menambahkan judul grafik nya.
library(scales) # panggil library scales
library(dplyr) # panggil library dplyr
plotdata <- t_NA %>% # memanggil data 't_NA' untuk dilakukan sebuah operasi perhitungan
count(Daerah) %>% # yang akan dihitung adalah variabel 'Daerah'
arrange(desc(Daerah)) %>%
mutate(prop = round(n*100/sum(n),1),
lab.ypos = cumsum(prop) - 0.5*prop)
ggplot(plotdata,
aes(x = "", # memplot variabel Daerah pada data plotdata
y = prop,
fill = Daerah)) +
geom_bar(width = 1, # mengatur lebar bar nya
stat = "identity",
color = "black") + # memberi warna garis
coord_polar("y", start = 0) + # mulai dari 0
geom_text(aes(y = lab.ypos, label = prop),
color = "black") +
scale_fill_brewer(palette="Reds",
direction=-1) + # mengatur berlawanan dengan arah jarum jam
theme_void() + # masukkan tema void
labs(title = "Banyak Penduduk Berdasarkan Wilayah") # menambah judul
Grafik di atas adalah tentang banyak penduduk yang ada di suatu Daerah. Dapat disimpulkan bahwa daerah Selatan memiliki penduduk yang paling banyak dengan presentase 31.9. Dan yang terendahnya adalah Daerah Utara.Victoria dengan presentase 0.6. start
Offset of starting point from 12 o’clock in radians. Offset is applied clockwise or anticlockwise depending on value of direction. direction 1, searah jarum jam; -1, berlawanan arah jarum jam
library(ggplot2) # untuk visualisasi
ggplot(t_NA,
aes(x = Luas,
y = Harga)) +
geom_point(color= "cornflowerblue") +
geom_smooth(method = "lm", color = "red")+
scale_y_continuous(label = scales::dollar,
limits = c(50000, 5000000)) +
scale_x_continuous(breaks = seq(0, 2500, 200),
limits=c(0, 2500)) +
theme_minimal() + # menggunakan tema minimal
labs(x = "Luas Bangunan",
y = "Harga",
title = "Luas Bangunan Vs. Harga",
subtitle = "Harga dan Luas")+
theme(axis.text.x = element_text(angle = 60, hjust = 1))
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # menentukan jeda atau label secara otomatis
# Menghitung rata-rata harga rumah pada setiap Daerah
plotdata <- t_NA %>%
group_by(Daerah) %>%
dplyr::summarize(mean_Harga = mean(Harga)) # menghitung rata-rata
mycols <- c("#CD534CFF", "#EFC000FF", "#2FDD92", # memberi warna pada bar
"#FFAB4C", "#116530", "#7267CB",
"#CD534CFF", "#EBE645")
ggplot(plotdata,
aes(x = factor(Daerah, # memplot Daerah beserta menambahkan label nya pada sb.x
labels = c("Selatan",
"Utara",
"Barat",
"Timur",
"Tenggara.Metropolitan",
"Utara.Victoria",
"Barat.Victoria",
"Timur.Victoria")),
y = mean_Harga)) + # y nya berupa hasil perhitungan rata-rata
geom_bar(stat = "identity",
fill = mycols) +
geom_text(aes(label = dollar(mean_Harga)),
vjust = -0.5) +
scale_y_continuous(breaks = seq(0, 40000000, 500000), # perhitungan di sb. y mulai dr 0 - 40000000
label = dollar) + # jenis label nya dollar
theme_minimal() + # menggunakan tema minimal
labs(title = "Rata-rata harga rumah di setiap daerah", # menambah judul
x = "",
y = "") +
theme(axis.text.x = element_text(angle = 45, vjust = 0.5)) # mengatur angle dan vjust agar tidak terjadi tumpang tindiih
Grafik menyimpulkan bahwa berdasarkan nilai rata-rata harga, Daerah Barat memiliki rata-rata harga yang paling mahal dibandingkan dengan Utara yang adalah Daerah yang harga rata-rata nya rendah. Jadi, Daerah Barat lebih mahal harga perumahannya.
ggplot(t_NA, aes(Kamarmandi, Kamartidur2)) +
geom_jitter(color = "navy blue", size = 0.5, size = 8) +
labs(title = "Kamar mandi Vs. Kamar tidur", xlab = "Bathrooms", ylab = "Price") +
xlim(0,8) + ylim(0,10)t_NA %>%
ggplot(aes(Harga, fill = Tipe))+ # memplot variabel Harga dan Tipe
geom_density(alpha = 0.3)+ # memberi tranparan pada grafik
scale_x_log10()+
facet_wrap(~Daerah, ncol =2)+ # Membuat dan membagi plot menjadi banyak
theme(axis.text.x = element_text(angle = 90,
vjust = .5))+
labs(x = "log10", y = "Density")
Grafik di atas menyimpulkan bahwa penjualan rumah Tipe Residence mengalami peningkatan di daerah Timur.Victoria. Lalu, rumah Tipe Cluster mengalami sedikit peningkatan di Daerah Barat.Victoria. Sedangkan rumah Tipe Komplek, hanya mengalami kestabilan saja dalam penjualannya.
Fungsi ncol() dalam Bahasa R digunakan untuk mengembalikan jumlah kolom dari matriks yang ditentukan. Dengan satu fungsi, Anda dapat membagi satu plot menjadi banyak plot terkait menggunakan facet_wrap() atau facet_grid().
yoi <- t_NA %>%
count(PenjualG)
yoi$rank = rank(desc(yoi$n)) # Membuat variabel baru berupa 'rank' berdasarkan n terbanyak
top30 = subset(yoi, subset = rank <= 30) # Subset data 30 teratas
bukan_top30 = setdiff(yoi, top30) # Memunculkan data
others = data.frame("PenjualG" = "Others",
"n" = sum(bukan_top30$n),
"rank" = 31)
otherst.PenjualG = data.frame(top30)
t.PenjualGggplot(t.PenjualG,
aes(x= n,
y=reorder(PenjualG, n))) + # mengurutkan data dari yg terbesar, kalau pakai (-) dia dr yg terkecil
geom_point(color="red",
size = 2) +
geom_segment(aes(x = 40,
xend = n,
y = reorder(PenjualG, n),
yend = reorder(PenjualG, n)),
color = "black") +
labs (x = "n",
y = "",
title = "30 Penjual Teratas") +
theme_minimal() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
Dari grafik di atas, dapat disimpulkan bahwa penjual bernama Nelson adalah penjual yang menjual rumah terbanyak di Melbourne. Data di atas adalah data 30 tertinggi.
library(tidyverse)
library(DT)
library(scales)
library(dplyr)
dataaa <-t_NA %>%
group_by(Pinggiran_Kota) %>%
summarise(Avg = mean(Harga, na.rm = T)) %>%
arrange(Avg) %>%
top_n(n = 10)
dataaa %>%
mutate_at(vars(Pinggiran_Kota), funs(as.factor(.))) %>%
ggplot(aes(fct_reorder(Pinggiran_Kota, Avg), Avg))+
geom_bar(stat = "identity", fill = rainbow(10), color = "black")+
geom_text(aes(Pinggiran_Kota, 1, label = paste("(",scales::dollar(Avg),")")), hjust = 0, vjust = .5, fontface = "bold", color = "black")+
coord_flip()+
theme_minimal()+
labs(y = "Harga", x = "Pinggiran Kota", title = "10 Pinggiran Kota paling teratas berdasarkan rata-rata")
Grafik di atas menunjukkan 10 pinggiran kota yang teratas berdasarkan rata-rata harga jualnya. Yang paling tinggi adalah pinggiran Kooyong.
library(ggplot2) # Untuk visualisasi
bw.nrd0(t_NA$Jarak) # default bandwidth untuk variabel usia## [1] 0.7911057
ggplot(t_NA, aes(x = Jarak)) +
geom_density(fill = "gold1",
color = "white",
bw = 1) +
theme_minimal() +
labs(title = "Jarak Jangkauan",
subtitle = "bandwidth = 1")
Grafik di atas menyimpulkan bahwa jarak dari CBD dalam penjualan rumah yang paling banyak terletak sekitaran jarak 10.
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # menentukan jeda atau label secara otomatis
# membuat ringkasan dataset (manipulasi data)
plotdata <- t_NA %>%
group_by(Daerah, Tipe) %>%
dplyr::summarize(n = n()) %>%
mutate(pct = n/sum(n),
persen = scales::percent(pct))
# membuat diagram batang tersegmentasi
# menambahkan label untuk setiap segmen
ggplot(plotdata,
aes(x = factor(Daerah),
y = pct,
fill = factor(Tipe))) +
geom_bar(stat = "identity",
position = "fill") +
scale_y_continuous(breaks = seq(0, 1, .1),
label = percent)+
geom_text(aes(label = persen),
size = 2.5,
position = position_stack(vjust = 0.5)) +
scale_fill_brewer(palette = "Set3") +
theme_minimal() + # menggunakan tema minimal
labs(y = "Percent",
fill = "Tipe",
x = "Wilayah",
title = "Banyak Rumah berdasarkan Tipe dan Letak Wilayah ") +
theme_minimal()+
theme(axis.text.x = element_text(angle = 45, vjust = 0.6))
Berdasarkan grafik diatas dapat disimpulkan bahwa rumah tipe cluster memiliki jumlah yang banyak di berbagai Daerah.
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(ggridges) # untuk menangani visualisasi yang tumpang tindih
# menghitung rata-rata, deviasi standar,
# kesalahan standar, dan 95% interval kepercayaan
# berdasarkan jabatan
plotdata <- t_NA %>%
group_by(Tipe, Metode) %>%
dplyr::summarize(n = n(),
mean = mean(Harga),
sd = sd(Harga),
se = sd/sqrt(n),
ci = qt(0.975, df = n - 1) * sd / sqrt(n))
# meningkatkan plot rata-rata kesalahan atau standar kesalahan
pd <- position_dodge(0.2)
ggplot(plotdata,
aes(x = factor(Tipe,
labels = c("Cluster",
"Komplek",
"Residence")),
y = mean,
group=Metode,
color=Metode)) +
geom_point(position=pd,
size = 3) +
geom_line(position = pd,
size = 1) +
geom_errorbar(aes(ymin = mean - se,
ymax = mean + se),
width = .1,
position = pd,
size = 1) +
scale_y_continuous(label = scales::dollar) +
scale_color_brewer(palette="Set2") +
theme_minimal() +
labs(title = "Harga Rumah berdasarkan Tipe dan Metode Penjualan",
subtitle = "(mean +/- standard error)",
x = "Tipe",
y = "",
color = "Metode")
Grafik di atas menunjukkan bahwa metode penjualan VB memiliki harga yang paling mahal, khususnya pada tipe rumah Cluster.