Ipynb - Colaboratory
Ipynb - Colaboratory
Pertemuan III
Deskripsi Dataset
Dataset ini berisi data hasil survei terhadap lebih dari 100 responden untuk perilaku pembelian
mereka di Starbucks.
Pendapatan ditampilkan dalam Ringgit Malaysia (RM).
Konteks
Data ini dapat digunakan untuk memperoleh informasi yang dapat digunakan oleh pemangku
kepentingan guna menganalisis dan mengetahui perilaku data pelanggan, mempertahankan
pelanggan yang ada serta mengembangkan program marketing untuk menarik pelanggan tepat
sasaran
Isi
Info demografis tentang pelanggan – jenis kelamin, rentang usia, status pekerjaan, rentang
pendapatan
Perilaku mereka saat ini dalam membeli Starbucks
Fasilitas dan fitur Starbucks yang berkontribusi pada perilaku
Pada praktikum ini, Anda akan melakukan beberapa operasi dasar yaitu :
Histogram
Outliers
Box Plot
Summary Statistics
Effect size
Relationship Between Variables
Correlation
Covariance
Pearson Correlation
Spearman's Rank Correlation
Mean VS Median
Hypothesis Testing
Normal(Gaussian) Distribution and z-score
Panduan Praktikum
Bacalah instruksi praktikum dengan seksama.
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 1/13
10/15/21, 7:56 PM ipynb - Colaboratory
Lakukan instruksi pengerjaan ada pada setiap checkpoint (tips : cari tanda <> atau '...' dan
isilah dengan perintah yang tepat)
notes : kode program akan memberikan informasi error jika Anda belum mengisi tanda <>
atau '..' dengan perintah yang tepat
3. Lakukan perhitungan summary nilai statistik (mean, standar deviasi, dan variance) dari
fitur ...
4. Berdasarkan hasil ploting diagram heatmap, jelaskan korelasi yang ada antara fitur ... dan
...
5. Hitung nilai pearson correlation dari fitur ... dan ... Jelaskan arti dari nilai tersebut.
6. Lakukan uji hipotesis untuk kolom fitur ... dan ... serta berikan penjelasan terhadap hasil
dari uji hipotesis yang dilakukan.
7. Tulis laporan hasil praktikum kalian dalam bentuk file .pdf dan silahkan Anda submit
melalui akun v-class praktikum.
# import libraries
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from pandas.plotting import autocorrelation_plot
from scipy import stats
plt.style.use("ggplot")
import warnings
warnings.filterwarnings("ignore")
from scipy import stats
Instuksi 1
Masukkan (bacalah) file dataset .csv yang tersedia pada link
https://raw.githubusercontent.com/supasonicx/ATA-praktikum-
01/main/Starbucks%20satisfactory%20survey%20encode%20cleaned.csv dengan perintah
pandas read.
# read data as pandas data frame
url_data = "https://raw.githubusercontent.com/supasonicx/ATA-praktikum-01/main/Sta
data = pd.read_csv(url_data)
Instruksi 2
Tampilkan 5 baris awal dari dataset yang digunakan dengan perintah head()
##·Melihat·5·baris·awal·dari·dataset·yang·digunakan
data.head(5)
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 2/13
10/15/21, 7:56 PM ipynb - Colaboratory
data.head(5)
4 4 3 1 1 1
4 5 2 1 1 1
4 4 3 1 1 1
3 3 3 1 1 1
2 3 3 1 1 1
Instruksi 2
Tampilkan dimensi dari dataset yang digunakan dengan perintah shape()
data.shape
(113, 33)
Instruksi 3
Tampilkan kolom apa saja yang dimiliki oleh dataset yang digunakan dengan perintah columns()
data.columns
'loyal'],
dtype='object')
### menampilkan nilai apa saja yang ada pada sebuah kolom
data['gender'].unique()
array([1, 0])
Instruksi 4
Tampilkan nilai berapa saja yang dimiliki oleh kolom dimiliki oleh timeSpend.
data['timeSpend'].unique()
array([1, 0, 4, 2, 3])
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 3/13
10/15/21, 7:56 PM ipynb - Colaboratory
Histogram
Menampilkan Berapa kali (frekuensi) setiap nilai muncul dalam kumpulan data.
Jenis deskripsi ini disebut distribusi variabel
Cara paling umum untuk merepresentasikan distribusi variabel adalah histogram yaitu
grafik yang menunjukkan frekuensi dari setiap nilai.
Frequency = berapa kali setiap nilai muncul
Contoh: [1,1,1,1,2,2,2]. Frequency dari 1 adalah empat dan frequency dari 2 adalah tiga.
Instruksi 5
Tampilkan histogram dari kolom timeSpend
## Buatlah diagram histogram dari kolom Strength
plt.figure(figsize=(20,10))
plt.title('Histogram of timeSpend')
sns.histplot(data,x='timeSpend', kde=True);
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 4/13
10/15/21, 7:56 PM ipynb - Colaboratory
## ploting untuk data produk pastry
m = plt.hist(data[data["gender"] == 1].itemPurchasePastries,bins=30,fc = (1,0,0,0.5
## ploting untuk data tumor dengan label jinak
f = plt.hist(data[data["gender"] == 0].itemPurchasePastries,bins=30,fc = (0,1,0,0.5
plt.legend()
plt.xlabel("Nilai itemPurchasePastries")
plt.ylabel("Frequency")
plt.title("Histogram Pembelian produk pastry bedasarkan demografi gender")
plt.show()
Instruksi 6
Tampilkan histogram dari kolom timeSpend yang dikelompokkan berdasarkan gender
## ploting untuk data produk pastry
m = plt.hist(data[data["..."] == 1].<<??>>,label = "Male")
## ploting untuk data tumor dengan label jinak
f = plt.hist(data[data["..."] == 0].<<??>>,label = "Female")
plt.legend()
plt.xlabel("Nilai timeSpend")
plt.ylabel("Frequency")
plt.title("Histogram waktu yang dihabiskan di toko bedasarkan demografi gender")
plt.show()
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 5/13
10/15/21, 7:56 PM ipynb - Colaboratory
Instruksi 7
Buatlah kesimpulan dari informasi yang Anda dapatkan di atas.
Outliers
Nilai outliers bisa diartikan sebagai kesalahan atau kejadian langka.
Menghitung outlier:
Instruksi 8
Buatlah kesimpulan dari informasi yang Anda dapatkan dari perhitungan nilai outliers dari
variabel timeSpend pada data customer dengan gender laki-laki
## Menghitung nilai outliers dari variabel timeSpend pada data customer dengan gend
male = data[data["gender"] == 1]
female = data[data["gender"] == 0]
desc = male.timeSpend.describe()
Q1 = desc[4]
Q3 = desc[6]
IQR = Q3-Q1
lower_bound = Q1 - 1.5*IQR
upper_bound = Q3 + 1.5*IQR
print("Apa pun di luar kisaran ini adalah outlier timeSpend: (", lower_bound ,",",
male[male.timeSpend < lower_bound].timeSpend
print("Outliers: ",male[(male.timeSpend < lower_bound) | (male.timeSpend > upper_bo
Outliers: [4]
Instruksi 9
Hitungnilai outliers dari variabel timeSpend pada data customer dengan gender laki-laki
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 6/13
10/15/21, 7:56 PM ipynb - Colaboratory
## Menghitung nilai outliers dari variabel visitNo (jumlah kedatangan) pada data cu
male = data[data["gender"] == 1]
female = data[data["gender"] == 0]
desc = data.<<??>>.describe()
Q1 = desc[4]
Q3 = desc[6]
IQR = Q3-Q1
lower_bound = Q1 - 1.5*IQR
upper_bound = Q3 + 1.5*IQR
print("Apa pun di luar kisaran ini adalah outlier visitNo: (", lower_bound ,",", up
<<??>>[<<??>>.<??>> < lower_bound].<<??>>
print("Outliers: ",<<??>>[(<<??>>.<<??>> < lower_bound) | (<<??>>.<<??>> > upper_bo
desc = data.<<??>>.describe()
Summary Statistics
Mean/rata-rata
Variance: penyebaran distribusi
Standart deviation square root dari variance
Mari kita lihat ringkasan statistik rata-rata pancaran tumor jinak:
Instruksi 11
Hitung nilai karakteristik statistik untuk variabel visitNo untuk gender laki-laki
## variabel male menyimpan data yang ada pada seluruh kolom dengan nilai gender = 1
male = data[data["gender"] == 1]
## variabel female menyimpan data yang ada pada seluruh kolom dengan nilai gender =
female = data[data["gender"] == 0]
print("mean: ",<<??>>.<<??>>.mean())
print("variance: ",<<??>>.<<??>>.var())
print("standart deviation (std): ",<<??>>.<<??>>.std())
print("describe method: ",<<??>>.<<??>>.describe())
mean: 2.4074074074074074
variance: 0.6610761705101328
mean 2.407407
std 0.813066
min 0.000000
25% 2.000000
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 7/13
10/15/21, 7:56 PM ipynb - Colaboratory
50% 3.000000
75% 3.000000
max 3.000000
Effect size
Salah satu ringkasan statistik.
Ini menggambarkan ukuran efek/effect size. Ini adalah cara sederhana untuk mengukur
perbedaan antara dua kelompok.
Dengan kata lain, ukuran efek menekankan ukuran perbedaan
Gunakan ukuran efek kohen/cohen
Cohen menyarankan bahwa jika d(ukuran efek)= 0,2, itu adalah ukuran efek kecil, d = 0,5
ukuran efek sedang, d = 0,8 ukuran efek besar.
mari kita bandingkan ukuran efek antara mean radius jinak dan mean radius ganas
Ukuran efek adalah 2.2 dan itu terlalu besar dan dikatakan bahwa dua kelompok itu
berbeda satu sama lain seperti yang kita harapkan. Karena kelompok kita adalah mean
radius jinak dan mean radius ganas yang berbeda satu sama lain
Instruksi 10
Jalankan perhitungan dibawah ini. Buatlah kesimpulan dari informasi yang Anda dapatkan dari
perhitungan nilai effect size dari variabel visitNo pada data customer dengan gender laki-laki.
Apa terdapat perbedaan antara jumlah kedatangan dari pelanggan wanita dan pria?
mean_diff = male.visitNo.mean() - female.visitNo.mean()
var_male = male.visitNo.var()
var_female = female.visitNo.var()
var_pooled = (len(male)*var_male +len(female)*var_female ) / float(len(male)+ len(f
effect_size = mean_diff/np.sqrt(var_pooled)
print("Effect size: ",effect_size)
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 8/13
10/15/21, 7:56 PM ipynb - Colaboratory
Scatter Plot, Cara termudah untuk memeriksa hubungan antara dua variabel
Matriks korelasi besar yang mencakup banyak angka
Kisaran angka ini adalah -1 hingga 1.
Arti dari 1 adalah dua variabel yang saling berkorelasi positif seperti mean radius dan
mean area
Arti dari nol adalah tidak ada korelasi antara variabel seperti productRate dengan income
Arti dari -1 adalah dua variabel berkorelasi negatif satu sama lain seperti income dan
membershipCard. Sebenarnya korelasi antara keduanya bukan -1, melainkan -0,3 tetapi
idenya adalah jika tanda korelasi negatif berarti ada adalah korelasi negatif.
Instruksi 11
Tuliskan kesimpulan dari hasil diagram heatmap korelasi yang ada. Variabel mana saja yang
saling berkorelasi? Jelaskan pendapat Anda.
f,ax=plt.subplots(figsize = (11, 9))
dfs = data.loc[:,['productRate','priceRate','serviceRate','visitNo','timeSpend','wi
sns.heatmap(dfs.corr(),annot= True,linewidths=0.5,fmt = ".1f",ax=ax)
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)
plt.xticks(rotation=90)
plt.yticks(rotation=0)
plt.title('Correlation Map')
plt.savefig('graph.png')
plt.show()
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 9/13
10/15/21, 7:56 PM ipynb - Colaboratory
Covariance
Covariance adalah ukuran kecenderungan dua variabel untuk bervariasi bersama-sama
Jadi covarians dimaksimalkan jika dua vektor identik
Covarians adalah nol jika mereka ortogonal.
Covariance negatif jika mereka menunjuk ke arah yang berlawanan
Mari kita lihat kovarians antara mean radius dan mean area. Kemudian lihat radius mean
dan fractal dimension se
Instruksi 11
Hitung nilai covariance antara variabel timeSpend dengan income dan timeSpend dengan
visitNo
print("Covariance diantara timeSpend dan income: ",data.timeSpend.cov(data.<<??>>)
print("Covariance diantara timeSpend dan visitNo: ",data.timeSpend.cov(data.<<??>>
Pearson Correlation
Pembagian covarians dengan standar deviasi variabel
Mari kita lihat korelasi pearson antara mean/rata-rata radius dan mean/rata-rata area
Pertama mari kita gunakan metode .corr() yang sebenarnya kita gunakan pada bagian
korelasi. Di bagian korelasi kami sebenarnya menggunakan korelasi pearson :)
p1 dan p2 adalah sama. Di p1 kita menggunakan metode corr(), di p2 kita menerapkan
definisi korelasi pearson (cov(A,B)/(std(A)*std(B)))
Seperti yang kita harapkan korelasi pearson antara area_mean dan area_mean adalah 1
yang berarti bahwa mereka adalah distribusi yang sama
Untuk lebih jelas apa yang kami lakukan di bagian korelasi dan bagian korelasi pearson
adalah sama.
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 10/13
10/15/21, 7:56 PM ipynb - Colaboratory
Instruksi 12
Pada contoh dibawah ini kita melakukan perhitungan pearson correlation pada variabel
timeSpend dan serviceRate
p1 = data.loc[:,["gender","serviceRate"]].corr(method= "pearson")
p2 = data.serviceRate.cov(data.timeSpend)/(data.serviceRate.std()*data.timeSpend.st
print('Pearson correlation: ')
print(p1)
print('Pearson correlation: ',p2)
Pearson correlation:
gender serviceRate
Instruksi 13
Pada contoh dibawah ini kita melakukan perhitungan spearman correlation pada variabel
timeSpend dan serviceRate
ranked_data = data.rank()
spearman_corr = ranked_data.loc[:,["timeSpend","serviceRate"]].corr(method= "pearso
print("Spearman's correlation: ")
print(spearman_corr)
Spearman's correlation:
gender productRate
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 11/13
10/15/21, 7:56 PM ipynb - Colaboratory
Jika hubungan antar distribusi tidak linier, korelasi spearman cenderung lebih baik
dalam memperkirakan kekuatan hubungan
Korelasi Pearson dapat dipengaruhi oleh outlier. Sehingga Korelasi Spearman lebih
kuat.
Hypothesis Testing
Classical Hypothesis Testing / Pengujian Hipotesis Klasik
Apa yang Anda perlu lakukan untuk menjawab pertanyaan berikut : "diberikan sampel dan
efek nyata, berapa peluang melihat efek seperti itu secara kebetulan"
Langkah pertama adalah mengukur ukuran efek nyata dengan memilih statistik uji. Pilihan
alami untuk statistik uji adalah perbedaan mean/rata-rata antara dua kelompok.
Langkah kedua adalah mendefinisikan hipotesis nol yaitu model sistem berdasarkan
asumsi bahwa efek yang tampak tidak nyata. Hipotesis nol adalah jenis hipotesis yang
digunakan dalam statistik yang menyatakan bahwa tidak ada signifikansi statistik dalam
serangkaian pengamatan yang diberikan. Hipotesis nol adalah hipotesis yang orang
mencoba untuk menyangkalnya. Hipotesis alternatif adalah hipotesis yang orang ingin
mencoba untuk membuktikannya.
Langkah ketiga adalah menghitung p-value yaitu probabilitas melihat efek nyata jika
hipotesis nol benar. Misalkan kita memiliki uji hipotesis nol. Kemudian kita hitung nilai p.
Jika nilai p kurang dari atau sama dengan ambang batas, kami menolak hipotesis nol.
Jika p-value rendah, pengaruh tersebut dikatakan signifikan secara statistik artinya tidak
mungkin terjadi secara kebetulan. Oleh karena itu kita dapat mengatakan bahwa efeknya
lebih mungkin muncul pada populasi yang lebih besar.
Mari kita coba contohkan. Hipotesis nol: dunia rata. Hipotesis alternatif: dunia itu bulat.
Beberapa ilmuwan mulai menyangkal hipotesis nol. Ini akhirnya mengarah pada refleksi
hipotesis nol dan penerimaan hipotesis alternatif.
Contoh lainnya. "efek ini nyata" ini adalah hipotesis nol. Berdasarkan asumsi itu kami
menghitung probabilitas efek yang tampak. Itu adalah nilai-p. Jika nilai p rendah, kami
menyimpulkan bahwa hipotesis nol tidak mungkin benar.
Sekarang mari kita buat contoh kita:
Saya ingin mengetahui apakah rata-rata radius dan rata-rata area terkait satu sama
lain? Hipotesis nol saya adalah bahwa "hubungan antara rata-rata radius dan rata-
rata area adalah nol pada populasi tumor'.
Sekarang kita perlu menyangkal hipotesis nol ini untuk menunjukkan bahwa
mean/rata-rata radius dan mean/rata-rata area berhubungan. (walaupun sebenarnya
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 12/13
10/15/21, 7:56 PM ipynb - Colaboratory
kita telah mengetahui hasilnya berdasarkan analisa korelasi yang telah dilakukan
sebelumnya)
mari kita cari nilai p (nilai probabilitas)
Instruksi 14
Pada contoh dibawah ini kita melakukan pengujian hipotesis keterhubungan variabel timeSpend
dan serviceRate.
statistic, p_value = stats.ttest_rel(data.gender,data.productRate)
print('p-value adalah: ',p_value)
https://colab.research.google.com/drive/1HysRxkcrSFvWCQigAFsmLafr0U1eVmyy#scrollTo=5GOSmctA2-m_&printMode=true 13/13