SlideShare a Scribd company logo
1 of 14
ANALISA PROBABILITAS PEMBELIAN PADA SEGMENT PASAR
TERHADAP ELASTISITAS HARGA
Oleh : Rahmat Taufiq Sigit
Pada artikel ini akan dibahas kelanjutan dari machine learning segmentasi pasar yang telah dibahas
di artikel sebelumnya. Pada artikel ini dibahas tentang analisa probabilitas pembelian (purchase
probability) dari setiap segment pasar.
Dataset yang digunakan pada artikel ini adalah artikel dari transaksi yang terjadi pada sebuah
minimarket. Dataset yang digunakan saat ini telah melalui proses data wragling, proses persiapan
data tidak dibahas lagi.
Pada artikel ini juga, hanya membahas transaksi dari satu produk yaitu produk coklat bar, dengan
beberapa merek yang dijual di minimarket tersebut.
Berikut pembahasan langkah-langkah dalam melakukan analisa elastisitas harga sebagai berikut:
1. ANALISA DATASET
Variable Data type Range Description
ID numerical Integer Shows a unique identificator of a customer.
Day numerical Integer Day when the customer has visited the store
Incidence categorical {0,1} Purchase Incidence
0 The customer has not purchased an item from the category of interest
1 The customer has purchased an item from the category of interest
Brand categorical {0,1,2,3,4,5} Shows which brand the customer has purchased
0 No brand was purchased
1,2,3,4,5 Brand ID
Quantity numerical integer Number of items bought by the customer from the product category of interest
Last_Inc_Brand categorical {0,1,2,3,4,5} Shows which brand the customer has purchased on their previous store visit
0 No brand was purchased
1,2,3,4,5 Brand ID
Last_Inc_Quantity numerical integer
Number of items bought by the customer from the product category of interest during
their previous store visit
Price_1 numerical real Price of an item from Brand 1 on a particular day
Price_2 numerical real Price of an item from Brand 2 on a particular day
Price_3 numerical real Price of an item from Brand 3 on a particular day
Price_4 numerical real Price of an item from Brand 4 on a particular day
Price_5 numerical real Price of an item from Brand 5 on a particular day
Promotion_1 categorical {0,1} Indicator whether Brand 1 was on promotion or not on a particular day
0 There is no promotion
1 There is promotion
Promotion_2 categorical {0,1} Indicator of whether Brand 2 was on promotion or not on a particular day
0 There is no promotion
1 There is promotion
Promotion_3 categorical {0,1} Indicator of whether Brand 3 was on promotion or not on a particular day
0 There is no promotion
1 There is promotion
Promotion_4 categorical {0,1} Indicator of whether Brand 4 was on promotion or not on a particular day
0 There is no promotion
1 There is promotion
Promotion_5 categorical {0,1} Indicator of whether Brand 5 was on promotion or not on a particular day
0 There is no promotion
1 There is promotion
Sex categorical {0,1}
Biological sex (gender) of a customer. In this dataset there are only 2 different
options.
0 male
1 female
Marital status categorical {0,1} Marital status of a customer.
0 single
1 non-single (divorced / separated / married / widowed)
Age numerical Integer
The age of the customer in years, calculated as current year minus the year of birth of
the customer at the time of creation of the dataset
18 Min value (the lowest age observed in the dataset)
75 Max value (the highest age observed in the dataset)
Education categorical {0,1,2,3} Level of education of the customer
0 other / unknown
1 high school
2 university
3 graduate school
Income numerical real Self-reported annual income in US dollars of the customer.
38247 Min value (the lowest income observed in the dataset)
309364 Max value (the highest income observed in the dataset)
Occupation categorical {0,1,2} Category of occupation of the customer.
0 unemployed / unskilled
1 skilled employee / official
2 management / self-employed / highly qualified employee / officer
Settlement size categorical {0,1,2} The size of the city that the customer lives in.
0 small city
1 mid-sized city
2 big city
2. IMPORT PAKET
Langkah pertama adalah melakukan import terhadap paket yang akan digunakan dalam proeses
permrograman model. Seperti pada code dibawah ini:
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
import pickle
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
import matplotlib.axes as axs
import seaborn as sns
sns.set()
3. LOAD DATASET DAN MODEL SEGMENTASI PASAR
Pada artikel sebelumnya kita telah membuat sebuah model segmentasi pasar. Model segmentasi
pasar tersebut dibuat menjadi 3 file yaitu : skalar.pickel, pca.pickel, dan kmeans_pca. Pickel.
Untuk membaca dataset gunakan code berikut:
df_purchase = pd.read_csv("data/purchase data.csv")
sedangkan untuk meakses model machine learning market segementation dengan cara berikut:
scalar = pickle.load(open('skalar.pickel','rb'))
pca = pickle.load(open('pca.pickel','rb'))
kmeans_pca=pickle.load(open('kmeans_pca.pickel','rb'))
4. MENETAPKAN SEGMENTASI PASAR PADA SETIAP DATA DI DATASET PRUCHASE.CSV
Berikutnya adalah menetapkan segementasi pasar dari setiap data yang ada pada dataset
puchase.csv.
Seperti dikatehui terdapat beberapa feature dalam dataset purchase.cvs yang sama dengan
feature dataset yang digunakan ketika membuat machine learning.
Feature tersebut adalah 'Sex','Marital status','Age','Education','Income','Occupation','Settlement
size'.
Feature inilah yang dibaca kemudian dimasukkan kedalam model Machine Learning, dengan
menggunakan kode berikut:
feature=df_purchase[['Sex','Marital
status','Age','Education','Income','Occupation','Settlement size']]
df_purchase_seg_std = scalar.transform(feature)
df_purchase_seg_pca = pca.transform(df_purchase_seg_std)
purchase_seg_kmeans_pca = kmeans_pca.predict(df_purchase_seg_pca)
Hasil klasifikasi segmentasi pasar disimpan kedalam variabel bernama
purchase_seg_kmeans_pca
5. MENAMBAHKAN FEATURE HASIL KLASIFIKASI SEGMENTASI PASAR KE DATASET
Setelah melakukan poses klasifikasi segmentasi pasar telah dilakukan, maka langkah selanjutnya
adalah menggabungkan data hasil klasifikasi dengan dataframe purchase. Codenya sebagai
berikut:
df_purchase_predictor = df_purchase.copy()
df_purchase_predictor['segment'] = purchase_seg_kmeans_pca
df_purchase_predictor
Code diatas, dataframe dicopy dan disimpan pada variabel baru bernama
df_purchase_predictor. Dataframe terbut yang ditambahkan feature baru bernama segment.
Sehingga apabila ditampilkan hasilnya sebagai berikut:
6. MENAMBAHKAN DUMMIES SEGMENT
Feature Segment adalah feature yang bersifat kategorikal, artinya tidak dapat dibandingkan satu
sama lain antar segment.
Untuk itu feature ini dapat diubah menjadi feature pada dataframe untuk mempermudah prose
pembentukan model machine learning.
Berikut codenya:
segment_dummies = pd.get_dummies(purchase_seg_kmeans_pca, prefix='segment',
prefix_sep='_')
segment_dummies
Hasil dari code diatas adalah sebagai berikut:
Dari gambar diatas terbentuk feature baru bernama segment_0, segment_1, segment_2 dan
segment_3. Feature bernilai 1 sesuai dengan feature segment. Sebagai contoh apabila feature
segment adalah 1, maka feature segment_1 akan bernilai 1 dan segment segment_0, segment_2
dan segment_3 akan bernilai nol (0).
7. MENGGABUNGKAN FEATURE SEGMENT_0, SEGMENT_1 , SEGMENT_2, SEGMENT_3 DENGAN
DATAFRAME.
Tahapan ini adalah menggabungkan feature baru yang telah dibentuk dengan datframe yang
telah ada bernama df_purchase_predictor. Hal ini dilakukan untuk memberikan
kemudaham dalam pembentukan model machine learning.
df_purchase_predictor = pd.concat([df_purchase_predictor,segment_dummies],
axis=1)
df_pa=df_purchase_predictor
8. MEMBUAT MODEL PROBABILITAS PEMBELIAN
Selanjutnya adalah membuat model machine learning untuk menghitung purchase probability.
Alogoritma yang digunakan adalah regresi linier.
Feature yang menjadi Y adalah feature Incidence yang bernilai 1 untuk pembelian dan 0 apabila
tidak terjadi pembelian sedangkan sumbu faktor X adalah Harga.
Namun sepeti pada dataset diawal terlihat bahwa terdapat 5 feature harga yang berasal dari
feature brand. Untuk itu nilai faktor yang akan diambil adalah rata-rata harga.
Y = df_pa['Incidence']
X = pd.DataFrame()
X['mean_price'] = (df_pa['Price_1']+
df_pa['Price_2']+
df_pa['Price_3']+
df_pa['Price_4']+
df_pa['Price_5']
)/5
model_purchase = LogisticRegression(solver='sag')
model_purchase.fit(X,Y)
9. MENAMPILKAN NILAI KOEFISIEN DARI MODEL
Melihat nilai koefisien dari model yang telah dibuat dengan menggunakan code berikut:
model_purchase.coef_
Hasilnya adalah :
array([[-2.34838627]])
Nilai mines pada koefisien menandakan bahwa hubungan antara Y dan X bersifat terbalik.
Dimana semakin tinggi nilai X makan probabilitas terjadinya Y akan semakin kecil.
10. ELASTISITAS HARGA TERHADAP PROBABILITAS PEMBELIAN
Pada tahap ini, kita akan mempelajari feature harga pada dataset. Hal ini dilakukan untuk
memberikan gambaran dalam penentuan simulasi harga yang akan digunakan.
Mengapa kita mgnggunakan simulasi harga ? hal ini dikerenakan apabila menggunakan harga
yang ada, maka gap antara data harga semakin besar dan hasilnya tidak maksimal dalam
menampilkan grafik simulasi elastisitas harga.
Sebelumnya mari kita lihat statistika deskriptif dari harga pada dataset dengan code berikut:
df_pa[['Price_1','Price_2','Price_3','Price_4','Price_5']].describe()
Hasilnya sesuai gambar berikut:
Pada gambari diatas terlihat bahwa harga terendah adalah $1,1 dan harga tertinggi adalah $2.8.
.
11. MEMBUAT DATA HARGA UNTUK SIMULASI
price_range = np.arange(0.5,3.5,0.01)
price_range
Code diatas adalah untuk membuat dummie data untuk harga jual dimana nilai minimalnya
adalah $ 0,5 dengan nilai maximal $ 3,5 dengan iterasi atau penambahannya $ 0.01.
Nilai iterasinya menjadi kecil dikarenakan untuk menampilkan pergerakan elastisitas harga dan
probabilitas pembelian untuk kenaikan $ 0,01.
Hasil dari kode diatas adalah :
Pada data array diatas, telah terbentuk 300 data yang akan digunakan untuk membuat prediksi
Y/ probabilitas pembelian. Namun sebelumnya data tersebut disimpan dalam bentuk dataframe
menggunakan perintah berikut:
df_price_range = pd.DataFrame(price_range)
12. MEMBUAT SIMULASI PROBABILITAS NILAI Y DARI PRICE_RANGE
Y_pr = model_purchase.predict_proba(df_price_range)
Y_pr
Perintah diatas adalah membuat probabilitas nilai Y dari model_purchase yang telah dibuat
sebelumnya dengan dataframe df_price_range sebagai inputan nilai X.
Hasilnya adalah sebagai berikut:
Gambar diatas menunjukkan probabilitas nilai Y atau probabilitas terjadinya pembelian dari
hasil nilai X yang dibuat.
Terdapat 2 kolom dimana kolom 1 adalah kolom yang menunjukkan probabilitas nilai 0 (tidak
terjadi purchase) dan kolom 2 adalah kolomg yang menunjukkan pobabilitas nilai 1 (terjadi
purchase)
Dalam hal ini, probablitas yang dibutuhkan adalah pada kolom 2, untuk itu nilai pada kolom
kedua kemudian disimpan pada variabel baru dengan nama purchase_pr dengan menggunakan
perintah berikut:
purchase_pr = Y_pr[:][:,1]
13. MENGHITUNG ELSATISITAS HARGA
pe = model_purchase.coef_[:,0]*price_range*(1-purchase_pr)
pe
Perintah diatas adalah untuk melakukan perhitungan terhadap elastisitas harga (price
elasticities) dengan hasil barikut:
Hasil dari perhitungan tersebut kemudian disimpan dalam bentuk dataframe menggunakan
perintah dibawah ini:
df_price_elasticities = pd.DataFrame(price_range)
df_price_elasticities = df_price_elasticities.rename({0:'Price point'},
axis=1)
df_price_elasticities['Mean_PE'] = pe
df_price_elasticities
Hasil dari code diatas adalah sebagai berikut:
14. ANALISA DATAFRAME ELSATISITAS HARGA
Seperti dilihat pada langkah sebelumnya dimana dataframe ditampilkan sebanyak 300 baris
dengan 2 kolom, namun data yang ditampilkan tidak secara keseluruhan. Maka dilakukan
perbaikan terhadap perintah tampilan data dengan kode berikut:
pd.options.display.max_rows = None
df_price_elasticities
Perintah diatas digunakan untuk menampilkan seluruh data pada dataframe tanpa ada
pemotongan tampilan.
15. TAMPILKAN GRAFIK ELSATISITAS HARGA
plt.figure(figsize=(9,6))
plt.plot(price_range,pe, color='grey')
plt.xlabel('Price')
plt.ylabel('Elasticities')
plt.title('Price Elasticities of Purchase Probability')
Code diatas digunakan untuk menampilkan data Mean_PE kedalam bentuk grafis dimana sumbu
X nya adalah harga dan sumbu Y adalah tingkat elastisitas harga.
Hasilnya adalah sebagai berikut:
16. ANALISA GRAFIK ELSATISITAS HARGA
Terlihat pada grafik elastisitsa harga bahwa tingkat elastisitas harga akan semakin kecil apabila
harga semakin tinggi. Artinya semakin tinggi harga dari produk maka semakin rendah minat dari
pasar untuk membeli.
Namun kita harus tau, pada rate apa perubahan harga tersebut sangat berpengaruh terhadap
elastisitas.
Dari gambar terlihat bahwa tinggkat penurunan atau elastisitas masih sangat rendah pada point
harga 0,5 sampai dengan 1,1, dan menjadi sangat elastis ketika melewati 1,1.
Terlihat juga pada gambar bahwa tingkat elastisitasnya bersifat negatif, hal ini dikarenakan nilai
koefisien yang dihasilkan dari model adalah negatif (-2.35).
Elastisitas harga adalah besarnya perubahan (persen) kemungkinan terjadinya pembelian
terhadap perubahan harga.
Apabila nilainya diatas 100% (1) maka berarti elastis, dan apabila nilainya dibawah 100% (1)
maka disebut inelastic) bisa dilihat ditabel dibawan ini:
Gambar tersebut menjelaskan bahwa setiap kenaikan harga $1,1 akan mengakibatkan turunnya
probabilitas pembelian sebesar -0,69%
Dari gambar juga bisa dilihat bahwa kenaikan 1,5 % harga jual akan menyebabkan pernurunan
probabilitas pembelian sebanyak 1,7%.
Dari grafik tersebut dapat disimpulkan apabila probabilitas pembelian > 1 maka disebut elastic,
dan apabila probabilitas <1 maka disebut inelastic.
Jadi apabila harga masih dalam range inelastic atau <1, berarti masih dapat diterapkan kenaikan
harga, namun apabila dalam range elastic > 1, maka sebaiknya menahan harga.
Berikut gambarannya :
17. ANALSIA ELASTISITAS HARGA PADA SEGMENT PASAR 1 (CAREER FOCUSED)
Selanjutnya kita akan melakukan langkah permodelan namun dikhususkan pada segementasi
pasar 1 atau Carrer Focused. Hal yang pertama dilakukan adalah melakukan seleksi dataframe
yang mengambil data khusus untuk segmen 1 dengan perintah berikut:
df_pa_segment_1 = df_pa[df_pa['segment']==1]
Perintah diatas adalah membuat dataframe baru dengan nama df_pa_segment_1 yang isinya
data dari dataframe df_pa namun khusus feture bernilai 1
Increase Decrease
18. MENENTUKAN FAKTOR X TERHADAP KEJADIAN Y PADA DATAFRAME SEGMENT 1 (CARRER
FOCUSED)
Y = df_pa_segment_1['Incidence']
X = pd.DataFrame()
X['Mean_price'] = (df_pa_segment_1['Price_1']+
df_pa_segment_1['Price_2']+
df_pa_segment_1['Price_3']+
df_pa_segment_1['Price_4']+
df_pa_segment_1['Price_5']
)/5
Code diatas digunakan untuk menentukan Y berasalah dari feature Incidence pada dataframe
df_pa_segment_1 dan X berasalah dari rata-rata harga pada dataframe df_pa_segment_1
19. MEMBUAT MODEL LINIER REGRESI UNTUK DATAFRAME SEGMENT 1 (CAREER FOCUSED)
model_incidence_seg_1 = LogisticRegression(solver='sag')
model_incidence_seg_1.fit(X, Y)
model_incidence_seg_1.coef_
Dengan nilai koefisien sebagai berikut:
array([[-1.71232127]])
Terlihat bahwa nilai koefisien dari segment carrer focused lebih rendah dari rata-rata koefisien
pasar keseluruhan yang bernilai -2,35
20. MEMBUAT Y PROBABILITY DARI SEGMENT 1
Y_pr_seg_1 = model_incidence_seg_1.predict_proba(df_price_range)
purchase_pr_seg_1 = Y_pr_seg_1[:][:,1]
pe_seg_1=model_incidence_seg_1.coef_[:,0]*price_range*(1-purchase_pr_seg_1)
df_price_elasticities['pe_segment_1']=pe_seg_1
df_price_elasticities
Code diatas digunakan untuk membuat Y probabilitas atas df_price_range, dan membuat
perhitungan elastisitas harga dan menyimpan dalam feature 'pe_segment_1' dengan output
sebagai berikut:
21. MEMBUAT GRAFIK PERBANDINGAN ELASTISITAS HARGA UNTUK PASAR SEGMENT 1 (CARRER
FOCUSED)
plt.figure(figsize=(9,6))
plt.plot(price_range,pe, color='grey')
plt.plot(price_range,pe_seg_1, color='green')
plt.xlabel('Price')
plt.ylabel('Elasticities')
plt.title('Price Elasticities of Purchase Probability')
Code diatas digunakan untuk membuat grafik dan membandingkan elatisitas harga secara
keseluruhan dengan elastisitas harga dari segment carrer focused (segment 1). Dan hasilnya
adalah sebagai berikut:
Apabila dilihat dari dataframe df_price_elasticities, dapat diketahui bahwa titik elastisitas
harga pada segment 1 adalah $1,39 yang artinya kenaikan harga lebih dari nilai tersebut akan
menyebabkan penurunan probabilitas purchase dengan nilai probabilitas pruchase melebihi 1
yakni -1,01. Seperti pada gambar dibawah ini.
22. SEGMENT PASAR 2 (FEWER OPPORTUNITY)
df_pa_segment_2 = df_pa[df_pa['segment']==2]
Y = df_pa_segment_2['Incidence']
X = pd.DataFrame()
X['Mean_price'] = (df_pa_segment_2['Price_1']+
df_pa_segment_2['Price_2']+
df_pa_segment_2['Price_3']+
df_pa_segment_2['Price_4']+
df_pa_segment_2['Price_5']
)/5
model_incidence_seg_2 = LogisticRegression(solver='sag')
model_incidence_seg_2.fit(X, Y)
model_incidence_seg_2.coef_
Hasilnya nilai koefisien sebagai berikut:
array([[-3.64025805]])
23. MEMBUAT Y PROBABILITAS DARI SEGMENT 2.
Y_pr_seg_2 = model_incidence_seg_2.predict_proba(df_price_range)
purchase_pr_seg_2 = Y_pr_seg_2[:][:,1]
pe_seg_2=model_incidence_seg_2.coef_[:,0]*price_range*(1-purchase_pr_seg_2)
df_price_elasticities['pe_segment_2']=pe_seg_2
df_price_elasticities
Perintah diatas digunakan untuk menghitung probabilitas nilai Y dan menghitung elastisitas
harga untuk segment 2 dan menampilkan dataframeny seperti pada gambar berikut:
Apabila dilihat dari dataframe df_price_elasticities, dapat diketahui bahwa titik elastisitas
harga pada segment 2 adalah $1,27 yang artinya kenaikan harga lebih dari nilai tersebut akan
menyebabkan penurunan probabilitas purchase dengan nilai probabilitas pruchase melebihi 1
yakni -1,02. Seperti pada gambar diatas.
24. MENAMPILKAN GRAFIK ELASTISITAS HARGA PADA SEGMENT 2 (FEWER OPPORTUNITY)
plt.figure(figsize=(9,6))
plt.plot(price_range,pe, color='grey')
plt.plot(price_range,pe_seg_1, color='green')
plt.plot(price_range,pe_seg_2, color='blue')
plt.xlabel('Price')
plt.ylabel('Elasticities')
plt.title('Price Elasticities of Purchase Probability')
Hasil dari code diatas adalah sebagai berikut:
25. ANALISA SEGMENT PASAR 3 (WELL OFF)
df_pa_segment_3 = df_pa[df_pa['segment']==3]
Y = df_pa_segment_3['Incidence']
X = pd.DataFrame()
X['Mean_price'] = (df_pa_segment_3['Price_1']+
df_pa_segment_3['Price_2']+
df_pa_segment_3['Price_3']+
df_pa_segment_3['Price_4']+
df_pa_segment_3['Price_5']
)/5
model_incidence_seg_3 = LogisticRegression(solver='sag')
model_incidence_seg_3.fit(X, Y)
Y_pr_seg_3 = model_incidence_seg_3.predict_proba(df_price_range)
purchase_pr_seg_3 = Y_pr_seg_3[:][:,1]
pe_seg_3=model_incidence_seg_3.coef_[:,0]*price_range*(1-purchase_pr_seg_3)
df_price_elasticities['pe_segment_3']=pe_seg_3
26. ANALISA SEGMENT PASAR 0 (STANDARD)
df_pa_segment_0 = df_pa[df_pa['segment']==0]
Y = df_pa_segment_0['Incidence']
X = pd.DataFrame()
X['Mean_price'] = (df_pa_segment_0['Price_1']+
df_pa_segment_0['Price_2']+
df_pa_segment_0['Price_3']+
df_pa_segment_0['Price_4']+
df_pa_segment_0['Price_5']
)/5
model_incidence_seg_0 = LogisticRegression(solver='sag')
model_incidence_seg_0.fit(X, Y)
Y_pr_seg_0 = model_incidence_seg_0.predict_proba(df_price_range)
purchase_pr_seg_0 = Y_pr_seg_0[:][:,1]
pe_seg_0=model_incidence_seg_0.coef_[:,0]*price_range*(1-purchase_pr_seg_0)
df_price_elasticities['pe_segment_0']=pe_seg_0
27. MEMBUAT GRAFIK PERBANDINGAN ELASTISITAS HARGA SELURUH SEGMENT PASAR
plt.figure(figsize=(9,6))
plt.plot(price_range,pe, color='grey')
plt.plot(price_range,pe_seg_1, color='green')
plt.plot(price_range,pe_seg_2, color='blue')
plt.plot(price_range,pe_seg_3, color='red')
plt.plot(price_range,pe_seg_0, color='yellow')
plt.legend(['Pasar Umum', 'Career Focused','Fewer Opprtunity','Well
Off','Standard'])
plt.xlabel('Price')
plt.ylabel('Elasticities')
plt.title('Price Elasticities of Purchase Probability')
Berikut adalah hasil dari code diatas:
Dari gambar diatas dapat dilihat bahwa terdapat elastisitas pada data yang hampir sama pada
semua segmen pasar yaitu 0.5 – 1.1.
Ada yang menjadi perhatian adalah Segment Fewer Opportunity dimana grafiknya memiliki nilai
paling tinggi pada range harga $0.5 - $1,1 hal ini mungkin disebabkan karena segment tersebut
merupakan segment yang terebesar.
Kemungkinan ke 2 adalah segment fewer opportunity memang sangat menyukai produk coklat
sehingga sedikit kenaikan harga tidak membuat probabilitas pembelian menurun.
Segmen fewer opportunity adalah segment yang paling sensitif terhadap kenaikan harga
apabila sudah diatas $1,1 dengan tingkat probabilitas kenaikan harga dibawah rata-rata pasar.
Pada Segment Standard memiliki probabitas elastis 1,01 dengan titik harga $1,24, hal ini
membuat segment standar adalah segment kedua yang paling tinggi sensitifitasnya apabila
terjadi kenaikan harga setelah segment fewer opprtunity, Namun elastisitas harga dari segment
ini masih diatas rata-rata.
Pada Segment Well Off memiliki probabitas elastis 1,00 dengan titik harga $1,47, hal ini
membuat segment well off adalah segment yang paling rendah sesifitasnya apabila terjadi
kenaikan harga. Perubahan harga mempergaruhi probabilitas puchase dari segment ini namun
tidak terlalu signifikan, kemungkinan segment ini sangat loyal terhadap produk.

More Related Content

Similar to ANALISA PROBABILITAS PEMBELIAN TERHADAP ELSTISITAS HARGA DENGAN PYTHON MACHINE LEARNING

KELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubadu
KELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubaduKELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubadu
KELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubadu
abdurrahmanalfaruqi1
 
13 Manajemen Hubungan Pelanggan
13 Manajemen Hubungan Pelanggan13 Manajemen Hubungan Pelanggan
13 Manajemen Hubungan Pelanggan
Ainul Yaqin
 

Similar to ANALISA PROBABILITAS PEMBELIAN TERHADAP ELSTISITAS HARGA DENGAN PYTHON MACHINE LEARNING (20)

Perencanaan dan perancangan produk1
Perencanaan dan perancangan produk1Perencanaan dan perancangan produk1
Perencanaan dan perancangan produk1
 
Training _Effective "MARKETING STRATEGY" in Digital Era 4.0 & Millennial Gene...
Training _Effective "MARKETING STRATEGY" in Digital Era 4.0 & Millennial Gene...Training _Effective "MARKETING STRATEGY" in Digital Era 4.0 & Millennial Gene...
Training _Effective "MARKETING STRATEGY" in Digital Era 4.0 & Millennial Gene...
 
BAHAN SETELAH MID BU SRI.doc
BAHAN SETELAH MID BU SRI.docBAHAN SETELAH MID BU SRI.doc
BAHAN SETELAH MID BU SRI.doc
 
17. sarah fadilah implementasi data mining untuk pengenalan karakteristik t...
17. sarah fadilah   implementasi data mining untuk pengenalan karakteristik t...17. sarah fadilah   implementasi data mining untuk pengenalan karakteristik t...
17. sarah fadilah implementasi data mining untuk pengenalan karakteristik t...
 
Value proposition
Value propositionValue proposition
Value proposition
 
KELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubadu
KELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubaduKELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubadu
KELOMPOK 5.pdfadadaaddadadabduababdbadabdubdabdubadu
 
13687346.ppt
13687346.ppt13687346.ppt
13687346.ppt
 
Agus supriyono, hapzi ali, forum 7 minggu 11, ut, 2017
Agus supriyono, hapzi ali, forum 7 minggu 11, ut, 2017Agus supriyono, hapzi ali, forum 7 minggu 11, ut, 2017
Agus supriyono, hapzi ali, forum 7 minggu 11, ut, 2017
 
design database
design databasedesign database
design database
 
Etika Profesi seorang Marketing Game di perusahaan Game
Etika Profesi seorang Marketing Game di perusahaan GameEtika Profesi seorang Marketing Game di perusahaan Game
Etika Profesi seorang Marketing Game di perusahaan Game
 
Sucik puji utami, hapzi ali, merancang sistem informasi hasil penjualan dan p...
Sucik puji utami, hapzi ali, merancang sistem informasi hasil penjualan dan p...Sucik puji utami, hapzi ali, merancang sistem informasi hasil penjualan dan p...
Sucik puji utami, hapzi ali, merancang sistem informasi hasil penjualan dan p...
 
Tugas Informasi proses bisnis
Tugas Informasi proses bisnisTugas Informasi proses bisnis
Tugas Informasi proses bisnis
 
Tugas Informasi proses bisnis
Tugas Informasi proses bisnisTugas Informasi proses bisnis
Tugas Informasi proses bisnis
 
Tugas 9 Blocks Models - DPA.pdf
Tugas 9 Blocks Models - DPA.pdfTugas 9 Blocks Models - DPA.pdf
Tugas 9 Blocks Models - DPA.pdf
 
13 Manajemen Hubungan Pelanggan
13 Manajemen Hubungan Pelanggan13 Manajemen Hubungan Pelanggan
13 Manajemen Hubungan Pelanggan
 
Laporan tugas akhir daspro kelompok
Laporan tugas akhir daspro kelompok Laporan tugas akhir daspro kelompok
Laporan tugas akhir daspro kelompok
 
Manual User CRM OfficeCentral IDV1R4.pdf
Manual User CRM OfficeCentral IDV1R4.pdfManual User CRM OfficeCentral IDV1R4.pdf
Manual User CRM OfficeCentral IDV1R4.pdf
 
Basis data tugas
Basis data tugasBasis data tugas
Basis data tugas
 
Affiliater plugin in action
Affiliater plugin in actionAffiliater plugin in action
Affiliater plugin in action
 
Ekspektasi Pelanggan dan Strategi Perbaikan Proses
Ekspektasi Pelanggan dan Strategi Perbaikan Proses Ekspektasi Pelanggan dan Strategi Perbaikan Proses
Ekspektasi Pelanggan dan Strategi Perbaikan Proses
 

Recently uploaded

PT Gudang Garam tugas kelompok..ppt.pptx
PT Gudang Garam tugas kelompok..ppt.pptxPT Gudang Garam tugas kelompok..ppt.pptx
PT Gudang Garam tugas kelompok..ppt.pptx
aciambarwati
 
Hub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam Rahayu
Hub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam RahayuHub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam Rahayu
Hub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam Rahayu
syafiraw266
 
Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...
Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...
Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...
Obat Aborsi Jakarta ( Ampuh _ No. 1 ) Kandungan Jakarta
 
farmasi Ngamprah obat penggugur kandungan
farmasi Ngamprah obat penggugur kandunganfarmasi Ngamprah obat penggugur kandungan
farmasi Ngamprah obat penggugur kandungan
Cara Menggugurkan Kandungan 087776558899
 
MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...
MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...
MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...
FORTRESS
 
obat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Sleman
obat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Slemanobat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Sleman
obat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Sleman
aureliamarcelin589
 
IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...
IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...
IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...
b54037163
 
EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...
EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...
EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...
FORTRESS
 

Recently uploaded (20)

WA 0821-2636-0569, Kelas Bimbingan Pra Nikah Terbaik Di Tangerang
WA 0821-2636-0569, Kelas Bimbingan Pra Nikah Terbaik Di TangerangWA 0821-2636-0569, Kelas Bimbingan Pra Nikah Terbaik Di Tangerang
WA 0821-2636-0569, Kelas Bimbingan Pra Nikah Terbaik Di Tangerang
 
PERSPEKTIF_MODUL_8_PPT KELAS PGSD UT JEMBER
PERSPEKTIF_MODUL_8_PPT KELAS PGSD UT JEMBERPERSPEKTIF_MODUL_8_PPT KELAS PGSD UT JEMBER
PERSPEKTIF_MODUL_8_PPT KELAS PGSD UT JEMBER
 
PT Gudang Garam tugas kelompok..ppt.pptx
PT Gudang Garam tugas kelompok..ppt.pptxPT Gudang Garam tugas kelompok..ppt.pptx
PT Gudang Garam tugas kelompok..ppt.pptx
 
Hub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam Rahayu
Hub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam RahayuHub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam Rahayu
Hub. 085 366 620 009, Jasa Catering Acara Keluarga di Batam Rahayu
 
Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...
Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...
Obat Aborsi Papua ( Ampuh _ No. 1 ) 082223109953 Klinik Jual Obat Penggugur K...
 
Memahami Organisasi dan Desain Organisasi-Pengantar (bagian 1)
Memahami Organisasi dan Desain Organisasi-Pengantar (bagian 1)Memahami Organisasi dan Desain Organisasi-Pengantar (bagian 1)
Memahami Organisasi dan Desain Organisasi-Pengantar (bagian 1)
 
UNIKBET : Link Slot Gacor Pragmatic Play Ada Deposit Pakai Bank Maybank Resmi...
UNIKBET : Link Slot Gacor Pragmatic Play Ada Deposit Pakai Bank Maybank Resmi...UNIKBET : Link Slot Gacor Pragmatic Play Ada Deposit Pakai Bank Maybank Resmi...
UNIKBET : Link Slot Gacor Pragmatic Play Ada Deposit Pakai Bank Maybank Resmi...
 
farmasi Ngamprah obat penggugur kandungan
farmasi Ngamprah obat penggugur kandunganfarmasi Ngamprah obat penggugur kandungan
farmasi Ngamprah obat penggugur kandungan
 
MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...
MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...
MEGAH!!! WA 0821 7001 0763 (FORTRESS) Estetik Pintu Aluminium Coklat di Kupan...
 
obat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Sleman
obat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Slemanobat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Sleman
obat aborsi Sleman Wa 081225888346 jual obat aborsi cytotec asli di Sleman
 
"Mengenal Kumbang4D: Situs Judi Online yang Meriah"
"Mengenal Kumbang4D: Situs Judi Online yang Meriah""Mengenal Kumbang4D: Situs Judi Online yang Meriah"
"Mengenal Kumbang4D: Situs Judi Online yang Meriah"
 
UNIKBET : Situs Slot Resmi Pragmatic Play Deposit Allo Bank
UNIKBET : Situs Slot Resmi Pragmatic Play Deposit Allo BankUNIKBET : Situs Slot Resmi Pragmatic Play Deposit Allo Bank
UNIKBET : Situs Slot Resmi Pragmatic Play Deposit Allo Bank
 
IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...
IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...
IN RAK City,+2773(7758)/557\ Abortion pills for sale in Dubai, Abu Dhabi, Sha...
 
UNIKBET : Situs Slot Gacor Pragmatic Play Ada Deposit Via Bank BNI 24 Jam Online
UNIKBET : Situs Slot Gacor Pragmatic Play Ada Deposit Via Bank BNI 24 Jam OnlineUNIKBET : Situs Slot Gacor Pragmatic Play Ada Deposit Via Bank BNI 24 Jam Online
UNIKBET : Situs Slot Gacor Pragmatic Play Ada Deposit Via Bank BNI 24 Jam Online
 
EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...
EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...
EKSKLUSIF!!! WA 0821 7001 0763 (FORTRESS) Pintu Aluminium Modern Kamar Mandi ...
 
Business Plan PT. Buana Energy, purpose Nickel trading
Business Plan PT. Buana Energy, purpose Nickel tradingBusiness Plan PT. Buana Energy, purpose Nickel trading
Business Plan PT. Buana Energy, purpose Nickel trading
 
Memahami Organisasi dan Desain Organisasi-from strategy (Bagian 2)
Memahami Organisasi dan Desain Organisasi-from strategy (Bagian 2)Memahami Organisasi dan Desain Organisasi-from strategy (Bagian 2)
Memahami Organisasi dan Desain Organisasi-from strategy (Bagian 2)
 
Judul: Mengenal Lebih Dekat Casino Online
Judul: Mengenal Lebih Dekat Casino OnlineJudul: Mengenal Lebih Dekat Casino Online
Judul: Mengenal Lebih Dekat Casino Online
 
UNIKBET : Bandar Slot Gacor Pragmatic Play Bisa Deposit Via Seabank Banyak Bonus
UNIKBET : Bandar Slot Gacor Pragmatic Play Bisa Deposit Via Seabank Banyak BonusUNIKBET : Bandar Slot Gacor Pragmatic Play Bisa Deposit Via Seabank Banyak Bonus
UNIKBET : Bandar Slot Gacor Pragmatic Play Bisa Deposit Via Seabank Banyak Bonus
 
Memahami Organisasi dan Desain Organisasi-Organisasi Publik (Bagian 3)
Memahami Organisasi dan Desain Organisasi-Organisasi Publik (Bagian 3)Memahami Organisasi dan Desain Organisasi-Organisasi Publik (Bagian 3)
Memahami Organisasi dan Desain Organisasi-Organisasi Publik (Bagian 3)
 

ANALISA PROBABILITAS PEMBELIAN TERHADAP ELSTISITAS HARGA DENGAN PYTHON MACHINE LEARNING

  • 1. ANALISA PROBABILITAS PEMBELIAN PADA SEGMENT PASAR TERHADAP ELASTISITAS HARGA Oleh : Rahmat Taufiq Sigit Pada artikel ini akan dibahas kelanjutan dari machine learning segmentasi pasar yang telah dibahas di artikel sebelumnya. Pada artikel ini dibahas tentang analisa probabilitas pembelian (purchase probability) dari setiap segment pasar. Dataset yang digunakan pada artikel ini adalah artikel dari transaksi yang terjadi pada sebuah minimarket. Dataset yang digunakan saat ini telah melalui proses data wragling, proses persiapan data tidak dibahas lagi. Pada artikel ini juga, hanya membahas transaksi dari satu produk yaitu produk coklat bar, dengan beberapa merek yang dijual di minimarket tersebut. Berikut pembahasan langkah-langkah dalam melakukan analisa elastisitas harga sebagai berikut: 1. ANALISA DATASET Variable Data type Range Description ID numerical Integer Shows a unique identificator of a customer. Day numerical Integer Day when the customer has visited the store Incidence categorical {0,1} Purchase Incidence 0 The customer has not purchased an item from the category of interest 1 The customer has purchased an item from the category of interest Brand categorical {0,1,2,3,4,5} Shows which brand the customer has purchased 0 No brand was purchased 1,2,3,4,5 Brand ID Quantity numerical integer Number of items bought by the customer from the product category of interest Last_Inc_Brand categorical {0,1,2,3,4,5} Shows which brand the customer has purchased on their previous store visit 0 No brand was purchased 1,2,3,4,5 Brand ID Last_Inc_Quantity numerical integer Number of items bought by the customer from the product category of interest during their previous store visit Price_1 numerical real Price of an item from Brand 1 on a particular day Price_2 numerical real Price of an item from Brand 2 on a particular day Price_3 numerical real Price of an item from Brand 3 on a particular day Price_4 numerical real Price of an item from Brand 4 on a particular day Price_5 numerical real Price of an item from Brand 5 on a particular day Promotion_1 categorical {0,1} Indicator whether Brand 1 was on promotion or not on a particular day 0 There is no promotion 1 There is promotion Promotion_2 categorical {0,1} Indicator of whether Brand 2 was on promotion or not on a particular day 0 There is no promotion 1 There is promotion Promotion_3 categorical {0,1} Indicator of whether Brand 3 was on promotion or not on a particular day 0 There is no promotion 1 There is promotion Promotion_4 categorical {0,1} Indicator of whether Brand 4 was on promotion or not on a particular day 0 There is no promotion 1 There is promotion Promotion_5 categorical {0,1} Indicator of whether Brand 5 was on promotion or not on a particular day 0 There is no promotion 1 There is promotion Sex categorical {0,1} Biological sex (gender) of a customer. In this dataset there are only 2 different options. 0 male 1 female Marital status categorical {0,1} Marital status of a customer. 0 single 1 non-single (divorced / separated / married / widowed) Age numerical Integer The age of the customer in years, calculated as current year minus the year of birth of the customer at the time of creation of the dataset 18 Min value (the lowest age observed in the dataset) 75 Max value (the highest age observed in the dataset) Education categorical {0,1,2,3} Level of education of the customer 0 other / unknown 1 high school 2 university 3 graduate school Income numerical real Self-reported annual income in US dollars of the customer. 38247 Min value (the lowest income observed in the dataset) 309364 Max value (the highest income observed in the dataset) Occupation categorical {0,1,2} Category of occupation of the customer. 0 unemployed / unskilled 1 skilled employee / official 2 management / self-employed / highly qualified employee / officer Settlement size categorical {0,1,2} The size of the city that the customer lives in. 0 small city 1 mid-sized city 2 big city
  • 2. 2. IMPORT PAKET Langkah pertama adalah melakukan import terhadap paket yang akan digunakan dalam proeses permrograman model. Seperti pada code dibawah ini: import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA from sklearn.cluster import KMeans import pickle from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt import matplotlib.axes as axs import seaborn as sns sns.set() 3. LOAD DATASET DAN MODEL SEGMENTASI PASAR Pada artikel sebelumnya kita telah membuat sebuah model segmentasi pasar. Model segmentasi pasar tersebut dibuat menjadi 3 file yaitu : skalar.pickel, pca.pickel, dan kmeans_pca. Pickel. Untuk membaca dataset gunakan code berikut: df_purchase = pd.read_csv("data/purchase data.csv") sedangkan untuk meakses model machine learning market segementation dengan cara berikut: scalar = pickle.load(open('skalar.pickel','rb')) pca = pickle.load(open('pca.pickel','rb')) kmeans_pca=pickle.load(open('kmeans_pca.pickel','rb')) 4. MENETAPKAN SEGMENTASI PASAR PADA SETIAP DATA DI DATASET PRUCHASE.CSV Berikutnya adalah menetapkan segementasi pasar dari setiap data yang ada pada dataset puchase.csv. Seperti dikatehui terdapat beberapa feature dalam dataset purchase.cvs yang sama dengan feature dataset yang digunakan ketika membuat machine learning. Feature tersebut adalah 'Sex','Marital status','Age','Education','Income','Occupation','Settlement size'. Feature inilah yang dibaca kemudian dimasukkan kedalam model Machine Learning, dengan menggunakan kode berikut: feature=df_purchase[['Sex','Marital status','Age','Education','Income','Occupation','Settlement size']] df_purchase_seg_std = scalar.transform(feature) df_purchase_seg_pca = pca.transform(df_purchase_seg_std) purchase_seg_kmeans_pca = kmeans_pca.predict(df_purchase_seg_pca) Hasil klasifikasi segmentasi pasar disimpan kedalam variabel bernama purchase_seg_kmeans_pca 5. MENAMBAHKAN FEATURE HASIL KLASIFIKASI SEGMENTASI PASAR KE DATASET Setelah melakukan poses klasifikasi segmentasi pasar telah dilakukan, maka langkah selanjutnya adalah menggabungkan data hasil klasifikasi dengan dataframe purchase. Codenya sebagai berikut: df_purchase_predictor = df_purchase.copy() df_purchase_predictor['segment'] = purchase_seg_kmeans_pca df_purchase_predictor Code diatas, dataframe dicopy dan disimpan pada variabel baru bernama df_purchase_predictor. Dataframe terbut yang ditambahkan feature baru bernama segment. Sehingga apabila ditampilkan hasilnya sebagai berikut:
  • 3. 6. MENAMBAHKAN DUMMIES SEGMENT Feature Segment adalah feature yang bersifat kategorikal, artinya tidak dapat dibandingkan satu sama lain antar segment. Untuk itu feature ini dapat diubah menjadi feature pada dataframe untuk mempermudah prose pembentukan model machine learning. Berikut codenya: segment_dummies = pd.get_dummies(purchase_seg_kmeans_pca, prefix='segment', prefix_sep='_') segment_dummies Hasil dari code diatas adalah sebagai berikut: Dari gambar diatas terbentuk feature baru bernama segment_0, segment_1, segment_2 dan segment_3. Feature bernilai 1 sesuai dengan feature segment. Sebagai contoh apabila feature segment adalah 1, maka feature segment_1 akan bernilai 1 dan segment segment_0, segment_2 dan segment_3 akan bernilai nol (0). 7. MENGGABUNGKAN FEATURE SEGMENT_0, SEGMENT_1 , SEGMENT_2, SEGMENT_3 DENGAN DATAFRAME. Tahapan ini adalah menggabungkan feature baru yang telah dibentuk dengan datframe yang telah ada bernama df_purchase_predictor. Hal ini dilakukan untuk memberikan kemudaham dalam pembentukan model machine learning. df_purchase_predictor = pd.concat([df_purchase_predictor,segment_dummies], axis=1) df_pa=df_purchase_predictor
  • 4. 8. MEMBUAT MODEL PROBABILITAS PEMBELIAN Selanjutnya adalah membuat model machine learning untuk menghitung purchase probability. Alogoritma yang digunakan adalah regresi linier. Feature yang menjadi Y adalah feature Incidence yang bernilai 1 untuk pembelian dan 0 apabila tidak terjadi pembelian sedangkan sumbu faktor X adalah Harga. Namun sepeti pada dataset diawal terlihat bahwa terdapat 5 feature harga yang berasal dari feature brand. Untuk itu nilai faktor yang akan diambil adalah rata-rata harga. Y = df_pa['Incidence'] X = pd.DataFrame() X['mean_price'] = (df_pa['Price_1']+ df_pa['Price_2']+ df_pa['Price_3']+ df_pa['Price_4']+ df_pa['Price_5'] )/5 model_purchase = LogisticRegression(solver='sag') model_purchase.fit(X,Y) 9. MENAMPILKAN NILAI KOEFISIEN DARI MODEL Melihat nilai koefisien dari model yang telah dibuat dengan menggunakan code berikut: model_purchase.coef_ Hasilnya adalah : array([[-2.34838627]]) Nilai mines pada koefisien menandakan bahwa hubungan antara Y dan X bersifat terbalik. Dimana semakin tinggi nilai X makan probabilitas terjadinya Y akan semakin kecil. 10. ELASTISITAS HARGA TERHADAP PROBABILITAS PEMBELIAN Pada tahap ini, kita akan mempelajari feature harga pada dataset. Hal ini dilakukan untuk memberikan gambaran dalam penentuan simulasi harga yang akan digunakan. Mengapa kita mgnggunakan simulasi harga ? hal ini dikerenakan apabila menggunakan harga yang ada, maka gap antara data harga semakin besar dan hasilnya tidak maksimal dalam menampilkan grafik simulasi elastisitas harga. Sebelumnya mari kita lihat statistika deskriptif dari harga pada dataset dengan code berikut: df_pa[['Price_1','Price_2','Price_3','Price_4','Price_5']].describe() Hasilnya sesuai gambar berikut: Pada gambari diatas terlihat bahwa harga terendah adalah $1,1 dan harga tertinggi adalah $2.8. .
  • 5. 11. MEMBUAT DATA HARGA UNTUK SIMULASI price_range = np.arange(0.5,3.5,0.01) price_range Code diatas adalah untuk membuat dummie data untuk harga jual dimana nilai minimalnya adalah $ 0,5 dengan nilai maximal $ 3,5 dengan iterasi atau penambahannya $ 0.01. Nilai iterasinya menjadi kecil dikarenakan untuk menampilkan pergerakan elastisitas harga dan probabilitas pembelian untuk kenaikan $ 0,01. Hasil dari kode diatas adalah : Pada data array diatas, telah terbentuk 300 data yang akan digunakan untuk membuat prediksi Y/ probabilitas pembelian. Namun sebelumnya data tersebut disimpan dalam bentuk dataframe menggunakan perintah berikut: df_price_range = pd.DataFrame(price_range) 12. MEMBUAT SIMULASI PROBABILITAS NILAI Y DARI PRICE_RANGE Y_pr = model_purchase.predict_proba(df_price_range) Y_pr Perintah diatas adalah membuat probabilitas nilai Y dari model_purchase yang telah dibuat sebelumnya dengan dataframe df_price_range sebagai inputan nilai X. Hasilnya adalah sebagai berikut:
  • 6. Gambar diatas menunjukkan probabilitas nilai Y atau probabilitas terjadinya pembelian dari hasil nilai X yang dibuat. Terdapat 2 kolom dimana kolom 1 adalah kolom yang menunjukkan probabilitas nilai 0 (tidak terjadi purchase) dan kolom 2 adalah kolomg yang menunjukkan pobabilitas nilai 1 (terjadi purchase) Dalam hal ini, probablitas yang dibutuhkan adalah pada kolom 2, untuk itu nilai pada kolom kedua kemudian disimpan pada variabel baru dengan nama purchase_pr dengan menggunakan perintah berikut: purchase_pr = Y_pr[:][:,1] 13. MENGHITUNG ELSATISITAS HARGA pe = model_purchase.coef_[:,0]*price_range*(1-purchase_pr) pe Perintah diatas adalah untuk melakukan perhitungan terhadap elastisitas harga (price elasticities) dengan hasil barikut:
  • 7. Hasil dari perhitungan tersebut kemudian disimpan dalam bentuk dataframe menggunakan perintah dibawah ini: df_price_elasticities = pd.DataFrame(price_range) df_price_elasticities = df_price_elasticities.rename({0:'Price point'}, axis=1) df_price_elasticities['Mean_PE'] = pe df_price_elasticities Hasil dari code diatas adalah sebagai berikut: 14. ANALISA DATAFRAME ELSATISITAS HARGA Seperti dilihat pada langkah sebelumnya dimana dataframe ditampilkan sebanyak 300 baris dengan 2 kolom, namun data yang ditampilkan tidak secara keseluruhan. Maka dilakukan perbaikan terhadap perintah tampilan data dengan kode berikut: pd.options.display.max_rows = None df_price_elasticities Perintah diatas digunakan untuk menampilkan seluruh data pada dataframe tanpa ada pemotongan tampilan.
  • 8. 15. TAMPILKAN GRAFIK ELSATISITAS HARGA plt.figure(figsize=(9,6)) plt.plot(price_range,pe, color='grey') plt.xlabel('Price') plt.ylabel('Elasticities') plt.title('Price Elasticities of Purchase Probability') Code diatas digunakan untuk menampilkan data Mean_PE kedalam bentuk grafis dimana sumbu X nya adalah harga dan sumbu Y adalah tingkat elastisitas harga. Hasilnya adalah sebagai berikut: 16. ANALISA GRAFIK ELSATISITAS HARGA Terlihat pada grafik elastisitsa harga bahwa tingkat elastisitas harga akan semakin kecil apabila harga semakin tinggi. Artinya semakin tinggi harga dari produk maka semakin rendah minat dari pasar untuk membeli. Namun kita harus tau, pada rate apa perubahan harga tersebut sangat berpengaruh terhadap elastisitas. Dari gambar terlihat bahwa tinggkat penurunan atau elastisitas masih sangat rendah pada point harga 0,5 sampai dengan 1,1, dan menjadi sangat elastis ketika melewati 1,1. Terlihat juga pada gambar bahwa tingkat elastisitasnya bersifat negatif, hal ini dikarenakan nilai koefisien yang dihasilkan dari model adalah negatif (-2.35). Elastisitas harga adalah besarnya perubahan (persen) kemungkinan terjadinya pembelian terhadap perubahan harga. Apabila nilainya diatas 100% (1) maka berarti elastis, dan apabila nilainya dibawah 100% (1) maka disebut inelastic) bisa dilihat ditabel dibawan ini:
  • 9. Gambar tersebut menjelaskan bahwa setiap kenaikan harga $1,1 akan mengakibatkan turunnya probabilitas pembelian sebesar -0,69% Dari gambar juga bisa dilihat bahwa kenaikan 1,5 % harga jual akan menyebabkan pernurunan probabilitas pembelian sebanyak 1,7%. Dari grafik tersebut dapat disimpulkan apabila probabilitas pembelian > 1 maka disebut elastic, dan apabila probabilitas <1 maka disebut inelastic. Jadi apabila harga masih dalam range inelastic atau <1, berarti masih dapat diterapkan kenaikan harga, namun apabila dalam range elastic > 1, maka sebaiknya menahan harga. Berikut gambarannya : 17. ANALSIA ELASTISITAS HARGA PADA SEGMENT PASAR 1 (CAREER FOCUSED) Selanjutnya kita akan melakukan langkah permodelan namun dikhususkan pada segementasi pasar 1 atau Carrer Focused. Hal yang pertama dilakukan adalah melakukan seleksi dataframe yang mengambil data khusus untuk segmen 1 dengan perintah berikut: df_pa_segment_1 = df_pa[df_pa['segment']==1] Perintah diatas adalah membuat dataframe baru dengan nama df_pa_segment_1 yang isinya data dari dataframe df_pa namun khusus feture bernilai 1 Increase Decrease
  • 10. 18. MENENTUKAN FAKTOR X TERHADAP KEJADIAN Y PADA DATAFRAME SEGMENT 1 (CARRER FOCUSED) Y = df_pa_segment_1['Incidence'] X = pd.DataFrame() X['Mean_price'] = (df_pa_segment_1['Price_1']+ df_pa_segment_1['Price_2']+ df_pa_segment_1['Price_3']+ df_pa_segment_1['Price_4']+ df_pa_segment_1['Price_5'] )/5 Code diatas digunakan untuk menentukan Y berasalah dari feature Incidence pada dataframe df_pa_segment_1 dan X berasalah dari rata-rata harga pada dataframe df_pa_segment_1 19. MEMBUAT MODEL LINIER REGRESI UNTUK DATAFRAME SEGMENT 1 (CAREER FOCUSED) model_incidence_seg_1 = LogisticRegression(solver='sag') model_incidence_seg_1.fit(X, Y) model_incidence_seg_1.coef_ Dengan nilai koefisien sebagai berikut: array([[-1.71232127]]) Terlihat bahwa nilai koefisien dari segment carrer focused lebih rendah dari rata-rata koefisien pasar keseluruhan yang bernilai -2,35 20. MEMBUAT Y PROBABILITY DARI SEGMENT 1 Y_pr_seg_1 = model_incidence_seg_1.predict_proba(df_price_range) purchase_pr_seg_1 = Y_pr_seg_1[:][:,1] pe_seg_1=model_incidence_seg_1.coef_[:,0]*price_range*(1-purchase_pr_seg_1) df_price_elasticities['pe_segment_1']=pe_seg_1 df_price_elasticities Code diatas digunakan untuk membuat Y probabilitas atas df_price_range, dan membuat perhitungan elastisitas harga dan menyimpan dalam feature 'pe_segment_1' dengan output sebagai berikut:
  • 11. 21. MEMBUAT GRAFIK PERBANDINGAN ELASTISITAS HARGA UNTUK PASAR SEGMENT 1 (CARRER FOCUSED) plt.figure(figsize=(9,6)) plt.plot(price_range,pe, color='grey') plt.plot(price_range,pe_seg_1, color='green') plt.xlabel('Price') plt.ylabel('Elasticities') plt.title('Price Elasticities of Purchase Probability') Code diatas digunakan untuk membuat grafik dan membandingkan elatisitas harga secara keseluruhan dengan elastisitas harga dari segment carrer focused (segment 1). Dan hasilnya adalah sebagai berikut: Apabila dilihat dari dataframe df_price_elasticities, dapat diketahui bahwa titik elastisitas harga pada segment 1 adalah $1,39 yang artinya kenaikan harga lebih dari nilai tersebut akan menyebabkan penurunan probabilitas purchase dengan nilai probabilitas pruchase melebihi 1 yakni -1,01. Seperti pada gambar dibawah ini.
  • 12. 22. SEGMENT PASAR 2 (FEWER OPPORTUNITY) df_pa_segment_2 = df_pa[df_pa['segment']==2] Y = df_pa_segment_2['Incidence'] X = pd.DataFrame() X['Mean_price'] = (df_pa_segment_2['Price_1']+ df_pa_segment_2['Price_2']+ df_pa_segment_2['Price_3']+ df_pa_segment_2['Price_4']+ df_pa_segment_2['Price_5'] )/5 model_incidence_seg_2 = LogisticRegression(solver='sag') model_incidence_seg_2.fit(X, Y) model_incidence_seg_2.coef_ Hasilnya nilai koefisien sebagai berikut: array([[-3.64025805]]) 23. MEMBUAT Y PROBABILITAS DARI SEGMENT 2. Y_pr_seg_2 = model_incidence_seg_2.predict_proba(df_price_range) purchase_pr_seg_2 = Y_pr_seg_2[:][:,1] pe_seg_2=model_incidence_seg_2.coef_[:,0]*price_range*(1-purchase_pr_seg_2) df_price_elasticities['pe_segment_2']=pe_seg_2 df_price_elasticities Perintah diatas digunakan untuk menghitung probabilitas nilai Y dan menghitung elastisitas harga untuk segment 2 dan menampilkan dataframeny seperti pada gambar berikut: Apabila dilihat dari dataframe df_price_elasticities, dapat diketahui bahwa titik elastisitas harga pada segment 2 adalah $1,27 yang artinya kenaikan harga lebih dari nilai tersebut akan menyebabkan penurunan probabilitas purchase dengan nilai probabilitas pruchase melebihi 1 yakni -1,02. Seperti pada gambar diatas. 24. MENAMPILKAN GRAFIK ELASTISITAS HARGA PADA SEGMENT 2 (FEWER OPPORTUNITY) plt.figure(figsize=(9,6)) plt.plot(price_range,pe, color='grey') plt.plot(price_range,pe_seg_1, color='green') plt.plot(price_range,pe_seg_2, color='blue') plt.xlabel('Price') plt.ylabel('Elasticities') plt.title('Price Elasticities of Purchase Probability')
  • 13. Hasil dari code diatas adalah sebagai berikut: 25. ANALISA SEGMENT PASAR 3 (WELL OFF) df_pa_segment_3 = df_pa[df_pa['segment']==3] Y = df_pa_segment_3['Incidence'] X = pd.DataFrame() X['Mean_price'] = (df_pa_segment_3['Price_1']+ df_pa_segment_3['Price_2']+ df_pa_segment_3['Price_3']+ df_pa_segment_3['Price_4']+ df_pa_segment_3['Price_5'] )/5 model_incidence_seg_3 = LogisticRegression(solver='sag') model_incidence_seg_3.fit(X, Y) Y_pr_seg_3 = model_incidence_seg_3.predict_proba(df_price_range) purchase_pr_seg_3 = Y_pr_seg_3[:][:,1] pe_seg_3=model_incidence_seg_3.coef_[:,0]*price_range*(1-purchase_pr_seg_3) df_price_elasticities['pe_segment_3']=pe_seg_3 26. ANALISA SEGMENT PASAR 0 (STANDARD) df_pa_segment_0 = df_pa[df_pa['segment']==0] Y = df_pa_segment_0['Incidence'] X = pd.DataFrame() X['Mean_price'] = (df_pa_segment_0['Price_1']+ df_pa_segment_0['Price_2']+ df_pa_segment_0['Price_3']+ df_pa_segment_0['Price_4']+ df_pa_segment_0['Price_5'] )/5 model_incidence_seg_0 = LogisticRegression(solver='sag') model_incidence_seg_0.fit(X, Y) Y_pr_seg_0 = model_incidence_seg_0.predict_proba(df_price_range) purchase_pr_seg_0 = Y_pr_seg_0[:][:,1] pe_seg_0=model_incidence_seg_0.coef_[:,0]*price_range*(1-purchase_pr_seg_0) df_price_elasticities['pe_segment_0']=pe_seg_0 27. MEMBUAT GRAFIK PERBANDINGAN ELASTISITAS HARGA SELURUH SEGMENT PASAR plt.figure(figsize=(9,6)) plt.plot(price_range,pe, color='grey') plt.plot(price_range,pe_seg_1, color='green') plt.plot(price_range,pe_seg_2, color='blue') plt.plot(price_range,pe_seg_3, color='red') plt.plot(price_range,pe_seg_0, color='yellow')
  • 14. plt.legend(['Pasar Umum', 'Career Focused','Fewer Opprtunity','Well Off','Standard']) plt.xlabel('Price') plt.ylabel('Elasticities') plt.title('Price Elasticities of Purchase Probability') Berikut adalah hasil dari code diatas: Dari gambar diatas dapat dilihat bahwa terdapat elastisitas pada data yang hampir sama pada semua segmen pasar yaitu 0.5 – 1.1. Ada yang menjadi perhatian adalah Segment Fewer Opportunity dimana grafiknya memiliki nilai paling tinggi pada range harga $0.5 - $1,1 hal ini mungkin disebabkan karena segment tersebut merupakan segment yang terebesar. Kemungkinan ke 2 adalah segment fewer opportunity memang sangat menyukai produk coklat sehingga sedikit kenaikan harga tidak membuat probabilitas pembelian menurun. Segmen fewer opportunity adalah segment yang paling sensitif terhadap kenaikan harga apabila sudah diatas $1,1 dengan tingkat probabilitas kenaikan harga dibawah rata-rata pasar. Pada Segment Standard memiliki probabitas elastis 1,01 dengan titik harga $1,24, hal ini membuat segment standar adalah segment kedua yang paling tinggi sensitifitasnya apabila terjadi kenaikan harga setelah segment fewer opprtunity, Namun elastisitas harga dari segment ini masih diatas rata-rata. Pada Segment Well Off memiliki probabitas elastis 1,00 dengan titik harga $1,47, hal ini membuat segment well off adalah segment yang paling rendah sesifitasnya apabila terjadi kenaikan harga. Perubahan harga mempergaruhi probabilitas puchase dari segment ini namun tidak terlalu signifikan, kemungkinan segment ini sangat loyal terhadap produk.