Menggunakan kurva permintaan untuk menganalisis harga di R
Mari membuat dan menganalisis kurva permintaan menggunakan R. Untuk mensimulasikan dataset, saya membuat kurva tipe peluruhan eksponensial dengan noise tersebar di sekitarnya. Idenya adalah setiap titik data merepresentasikan penjualan mingguan di sebuah dealer mobil, di mana dealer menawarkan promo berbeda dan mencoba berbagai tingkat harga untuk jenis mobil yang sama sebagai upaya meningkatkan penjualan.
# Load necessary library
library(tidyverse)
# Define parameters for the exponential decay
a <- 100 # Initial value
b <- 0.5 # Decay rate
# Define a realistic price range
price <- seq(10000, 40000, length.out = 200) # Price from $10,000 to $40,000
# Calculate the exponential decay
y <- a * exp(-b * (price / 10000)) # Adjust decay rate to match price scaling
# Add mixed noise (additive + slight proportional)
set.seed(42) # For reproducibility
additive_noise <- rnorm(length(y), mean = 0, sd = 1) # Constant additive noise
proportional_noise <- rnorm(length(y), mean = 0, sd = 0.05 * y) # Small proportional noise
y_noisy <- y + additive_noise + proportional_noise
# Ensure no negative values (optional, as sales can't be negative)
y_noisy[y_noisy < 0] <- 0.01
# Combine price and noisy y into a data frame
demand_curve_data <- data.frame(
price = price,
quantity_sold = y_noisy
)
# Clean and prepare the data
demand_curve_data <- demand_curve_data %>%
mutate(quantity_sold = round(quantity_sold, 0)) %>%
filter(quantity_sold != 0)
# Plot the noisy exponential decay
ggplot(demand_curve_data, aes(x = price, y = quantity_sold)) +
geom_point(color = '#203147', alpha = 0.6) +
geom_line(
aes(y = a * exp(-b * (price / 10000))),
color = '#01ef63',
size = 1.2,
linetype = "dashed"
) +
labs(
title = "Cars Sold",
subtitle = "Demand Curve (Cars Sold)",
x = "Price ($)",
y = "Quantity Sold"
) +
scale_x_continuous(labels = scales::dollar_format()) # Format x-axis as dollars
Kurva permintaan dengan noise. Gambar oleh Penulis
Di sini, saya memetakan hubungan antara harga dan jumlah yang terjual, dan saya menggunakan titik-titik scatterplot untuk merepresentasikan variasi alami, yang bisa disebabkan oleh berbagai alasan.
Membaca grafik ini, kita melihat bahwa ketika harga meningkat, penjualan menurun, dan hubungan ini lebih sensitif pada beberapa rentang harga dibandingkan yang lain. Namun, tergantung pada apa yang Anda lakukan dengan data, wawasan umum ini mungkin belum cukup untuk menginformasikan keputusan bisnis yang praktis. Berdasarkan pengalaman saya, atasan sering ingin melihat wawasan normatif yang memberikan jawaban konkret untuk pertanyaan bisnis yang lebih mendesak. Salah satu pertanyaannya adalah: Berapakah harga mobil yang benar-benar memaksimalkan pendapatan keseluruhan?
Kita bisa mulai dengan menebak-nebak hanya dengan melihat grafik.
- Di sisi bawah, kita melihat, mengikuti garis hijau, bahwa jumlah terjual adalah 60 ketika nilai x untuk harga adalah $10.000. Ini berarti $600.000 dalam total pendapatan.
- Di sisi atas, kita melihat garis hijau menyentuh sekitar 10 ketika nilai x adalah $40.000, setara dengan $400.000 dalam pendapatan.
- Tepat di tengah, kita melihat garis hijau menyentuh 30 ketika harga $25.000. Ini setara dengan $750.000.
Anda mungkin mulai merasa bahwa harga yang memaksimalkan pendapatan keseluruhan berada di suatu tempat di tengah. Secara konseptual, ini masuk akal: Kita memperkirakan harga yang sangat rendah menghasilkan volume penjualan tinggi tetapi pendapatan relatif kecil, sementara harga yang sangat tinggi menghasilkan penjualan jauh lebih sedikit dan tetap pendapatan relatif kecil. Namun, di suatu titik tengah pasti ada harga optimal yang memaksimalkan pendapatan.
Sekarang, alih-alih menebak dari grafik, mari pelajari cara yang lebih baik, lebih efisien, dan lebih solid untuk memaksimalkan pendapatan keseluruhan. Kita dapat mencari harga optimal dengan menyelesaikan masalah optimasi sederhana. Kita terlebih dahulu membuat model linear, lalu membengkokkan model itu menjadi parabola, dan menemukan titik tertingginya.
Langkah pertama kita di sini adalah melinearkan hubungan tersebut. Karena saya membangun semuanya dengan fungsi peluruhan eksponensial, saya tahu hubungan ini akan terlinearkan dengan baik dengan mengambil logaritma dari jumlah yang terjual. Demi kesederhanaan, mari abaikan heteroskedastisitas.
# Create a linearized version of the data
demand_curve_data$log_quantity_sold <- log(demand_curve_data$quantity_sold)
# Plot the linearized relationship
ggplot(demand_curve_data, aes(x = price, y = log_quantity_sold)) +
geom_point(color = '#203147', alpha = 0.6) +
geom_smooth(method = "lm", color = '#01ef63', se = FALSE) +
labs(
title = "Cars Sold",
subtitle = "Demand Curve (Log Quantity Sold)",
x = "Price ($)",
y = "Log of Quantity Sold"
) +
scale_x_continuous(labels = scales::dollar_format()) # Format x-axis as dollars

Kurva permintaan yang ditransformasikan. Gambar oleh Penulis
Sekarang, kita dapat membuat variabel baru bernama revenue yang didefinisikan sebagai price dikali log_quantity_sold. Sebagai catatan, kita membuat objek model linear menggunakan fungsi lm() karena kita ingin mengakses angka-angka yang terkait dengan koefisien model.
Untuk langkah berikutnya, kita masukkan persamaan model linear ke dalam rumus kita. Jika kita tidak melakukan transformasi log:
-
Ini berarti bahwa persamaan kita:
revenue = price * quantity_soldsekarang dapat ditulis sebagairevenue = price * (b0 + b1 * price). -
Lalu, kita distribusikan suku. Sama seperti kita mendistribusikan suku pada x(1-x) menjadi x - x2, kita menulis ulang persamaan menjadi
revenue = b0 * Price + b1 * price2.
Perhatikan sekarang bahwa kita memiliki revenue yang didefinisikan oleh persamaan yang memiliki price sebagai suku kuadrat. Ini adalah bagian kunci karena, dengan memetakan price sebagai suku kuadrat, kita telah membuat fungsi pemaksimuman.
Namun, karena kita memang melakukan transformasi log, kita harus melakukan back-transform eksponensial dari model log-linear.
-
Ini berarti bahwa persamaan kita:
revenue = price * log_quantity_soldsekarang akan ditulis sebagairevenue = price * eb0 + b1 * price. -
Kita sekarang dapat memfaktorkan persamaan ini ke bentuk baru, jika diinginkan:
revenue=price * eb0 * eb1⋅price. Namun persamaan khusus ini tidak dapat didistribusikan dengan cara yang sama seperti persamaan linear atau polinomial karena fungsi eksponensial tidak memungkinkan pemisahan atau distribusi suku seperti suku aljabar standar di atas.
Bagaimanapun, mari lanjutkan:
# Fit a linear model to the log-transformed quantity sold
model <- lm(log_quantity_sold ~ price, data = demand_curve_data)
# Create a revenue model based on the linear model coefficients
revenue_model_data <- demand_curve_data %>%
mutate(
revenue_model = price * exp(coef(model)[1] + coef(model)[2] * price) # Modeled revenue
)
# Plot the revenue model
ggplot(revenue_model_data, aes(x = price, y = revenue_model)) +
geom_point(color = '#203147', alpha = 0.6) + # Actual revenue points
geom_line(color = '#01ef63', size = 1.2) + # Revenue model line
labs(
title = "Car Sales",
subtitle = "Revenue Model",
x = "Price ($)",
y = "Revenue ($)"
) +
scale_y_continuous(labels = scales::dollar_format()) + # Format y-axis as dollars
theme_minimal() + # Apply a minimal theme for aesthetics
theme(
text = element_text(family = "Arial", size = 12),
plot.title = element_text(face = "bold", size = 16),
plot.subtitle = element_text(size = 14)
)

Model pendapatan yang dibuat dari kurva permintaan. Gambar oleh Penulis.
Menariknya, meskipun model asli menggunakan log_quantity_sold, grafik yang kita buat sepenuhnya berada pada skala asli price dan revenue. Transformasi log hanya memengaruhi model yang mendasarinya, dan back-transform dengan e menempatkan grafik pada skala asli sehingga tetap mudah diinterpretasikan.
Mencari titik saat turunan sama dengan nol
Sekarang, poin kunci terakhir kita adalah ini: Titik di puncak parabola, saat turunan sama dengan nol, akan menjadi harga teoretis yang memaksimalkan pendapatan.
Kita mungkin ingat bahwa kita mencari turunan dari persamaan seperti 3x² + 2x dengan mengalikan eksponen untuk mendapatkan 6x + 2. Penalaran yang sama berlaku, tetapi ingat lagi, dalam contoh ini, kita terlebih dahulu harus melakukan back-transform pada nilai yang dilog sebelum membentuk fungsi pendapatan. Dengan kembali ke skala asli sebelum mencari maksimum pendapatan, kita tahu bahwa kita mencari harga yang memaksimalkan pendapatan aktual, bukan metrik yang ditransformasi. Jadi ini adalah fungsi pendapatan yang benar untuk diturunkan: revenue = price * e(b0 + b1 * price).
Mari kita kerjakan. Di sini, saya mengambil koefisien model linear. Lalu saya mendefinisikan fungsi pendapatan. Terakhir, saya menghitung harga optimal dan mengetahui total pendapatan yang diharapkan terkaitnya.
# Model coefficients
b0 <- 4.596 # Intercept
b1 <- -4.974e-05 # Slope for price
# Define the revenue function
revenue <- function(P, b0, b1) {
P * exp(b0 + b1 * P)
}
# Calculate the optimal price (analytical solution from dR/dP = 0) - shortcut code here
(optimal_price <- -1 / b1)
# Calculate maximum revenue
(max_revenue <- revenue(optimal_price, b0, b1))
[1] 20104.54
[1] 732853.5
Anda mungkin memperhatikan bahwa saya memiliki satu baris kode untuk harga optimal yang tidak dijelaskan dengan baik dalam konteks. Saya merujuk pada bagian kode ini: (optimal_price <- -1 / b1). Izinkan saya menunjukkan bagaimana saya mengetahuinya, bahwa harga optimal adalah -1 dibagi kemiringan.
Pertama, kita harus mengingat apa yang disebut aturan hasil kali dalam kalkulus, yang menyatakan bahwa, jika fungsi x "f dari x" sama dengan u(x) kali v(x), maka turunannya, yang dapat kita tulis sebagai f'(x), sama dengan turunan dari bagian pertama dikalikan bagian kedua, lalu ditambah bagian pertama dikalikan turunan bagian kedua.
# the product rule in calculus
f(x) = u(x) * v(x)
f'(x) = u'(x) * v(x) + u(x) * v'(x)
Berikut persamaan kita lagi, beserta turunannya:
# our equation:
revenue = price * e^(b0 + b1 * price)
# the derivative of our equation
derivative = 1 * e^(b0 + b1 * price) + price * b1 * e^(b0 + b1 * price)
Saya tahu bahwa turunan dari price di sini adalah 1 karena itulah hal yang kita turunkan. "Seberapa banyak price berubah saat price berubah?" Ya, itu hubungan satu-ke-satu.
Di sisi lain, turunan dari e(b0 + b1 * price) tidak rapi seperti fungsi sederhana, misalnya 2x2 yang turunannya 4x.
Dalam ekspresi yang kita kerjakan di sini, eksponennya adalah polinomial. Triknya adalah melihat lebih dekat semua suku: Untuk memulai,
-
b0hanyalah sebuah nilai tunggal, jadi turunannya nol -
pricebernilai 1, seperti yang sudah kita tangani. -
b1adalah faktor skala, jadi kita letakkan angka itu di depan, lalu, sesuai kaidah, kita biarkan eksponen polinomialnya sama.
Jadi turunan dari e(b0 + b1 * price) adalah b1 * e(b0 + b1 * price). Ini dikenal sebagai aturan rantai, seperti yang akan saya tunjukkan di sini:
# the chain rule in calculus
f(x) = x^g(x)
f'(x) = g'(x) * x^g(x)
Hal terakhir adalah melakukan pemfaktoran.
Aljabar memberi tahu kita bahwa ini sama:
A + B * A = A(1+B)
Dan ketika saya melihat lebih dekat turunan yang saya kerjakan, saya menyadari ada bagian A dan B:
"A" adalah e(b0 + b1 * price) dan "B" adalah price * b1. Jadi saya bisa memfaktorkan ini
e^(b0 + b1 * price) + price * b1 * e^(b0 + b1 * price)
menjadi ini:
e^(b0 + b1 * price)(1 + price * b1)
Akhirnya, saya harus menyamakan turunan ini dengan nol untuk menemukan titik di mana kemiringan berhenti naik dan mulai turun, yaitu puncak parabola.
e^(b0 + b1 * price)(1 + price * b1) = 0
Sebagai trik terakhir, saya tahu bahwa, ketika A * B sama dengan nol, maka A atau B (atau keduanya) harus bernilai nol. Namun kebetulan, saya tahu bahwa e(b0 + b1 * price) tidak pernah bisa sama dengan nol karena ini adalah eksponen. Jika positif, angkanya akan besar; jika eksponen bernilai 0, hasilnya 1; jika eksponen negatif, hasilnya pecahan kecil. Jadi saya bisa mengabaikan separuhnya saat menyelesaikan hingga nol.
Satu-satunya yang harus saya lakukan sekarang adalah memindahkan suku dan menyelesaikan untuk price.
(1 + b1 * price) = 0
b1 * price = -1
price = - 1 / b1
Begitulah cara saya mendapatkan -1 / b1 untuk dimasukkan ke fungsi R buatan khusus kita.
Sekarang, melanjutkan dari tempat kita berhenti, kita dapat memetakan harga optimal dan melihat pendapatan terkaitnya.
Harga optimal adalah $20.104,54, yang menghasilkan perkiraan pendapatan total $732.853,50, kurang lebih. Saya mengatakan 'kurang lebih' karena, jika Anda memeriksa perhitungannya, kita mengasumsikan 36,45 mobil terjual, padahal kita tidak bisa menjual setengah mobil.
ggplot(revenue_model_data, aes(x = price, y = revenue_model)) +
geom_point() + geom_line(color = '#01ef63') +
ggtitle("Car Sales") + labs(subtitle = "revenue model") +
ylab("Revenue") +
scale_y_continuous(labels = scales::dollar_format()) +
geom_vline(xintercept = optimal_price, linetype = "dashed", color = '#203147') +
geom_point(aes(x = optimal_price, y = max_revenue), color = '#203147', size = 3)
Menemukan harga yang memaksimalkan pendapatan. Gambar oleh Penulis.
Dalam alur kerja lain, kita bahkan dapat memperluas gagasan ini untuk mempertimbangkan laba, bukan pendapatan. Saya tidak akan menguraikannya di sini, tetapi untuk melakukan ini, ketahuilah bahwa kita dapat mempertimbangkan profit = revenue - cost, di mana cost dianggap sebagai quantity * unit cost. Jika biaya per unit konstan dan kuantitas dapat digantikan oleh ekspresi seperti 1 - price, maka kita kembali mendapatkan parabola terbalik.
Jika Anda tertarik mempelajari lebih lanjut bagaimana kalkulus dan turunan muncul dalam machine learning, coba kursus Introduction to Deep Learning with PyTorch kami yang membahas gradient descent secara mendalam dalam konteks penyetelan hyperparameter. Konteksnya berbeda, tetapi Anda dapat menerapkan pemikiran yang serupa. Optimasi, dalam berbagai bentuknya, seperti yang Anda lihat, adalah keterampilan kunci dalam data science, dan latihan sangat membantu.
Kurva permintaan vs. Kurva Laffer
Jika Anda pernah mempelajari ekonomi, Anda mungkin mengenali parabola ini sebagai sesuatu yang mirip dengan kurva Laffer, yang merupakan konsep agak kontroversial yang menggambarkan bagaimana tarif pajak memengaruhi pendapatan pajak pemerintah.
Meskipun saya menganggap kurva Laffer dan transformasi pada kurva permintaan ini sebagai masalah tipe “memaksimalkan vs. tarif”, kurva Laffer spesifik untuk perpajakan: sumbu-x merepresentasikan tarif pajak (0% hingga 100%), dan sumbu-y adalah total pendapatan pajak yang dipungut. Secara konseptual, kurva Laffer juga berbentuk U-terbalik karena, pada sisi tinggi, kita mempertimbangkan bahwa jika tarif pajak terlalu tinggi, itu menghasilkan nol pendapatan karena tidak ada insentif bagi individu atau bisnis untuk terlibat dalam aktivitas kena pajak. Ekonom mungkin tidak sepakat pada bagian 'insentif' itu.

Kurva Laffer di Ferris Bueller's Day Off. Sumber: YouTube
Menggunakan kurva permintaan untuk menganalisis harga di SQL
Sekarang kita sudah melalui idenya, saya juga ingin membagikan skrip SQL yang akan melakukan pekerjaan yang sama. Fungsi ini akan melakukan regresi pada quantity_sold terhadap price. Kemudian ini akan memungkinkan Anda menemukan harga optimal untuk memaksimalkan pendapatan berdasarkan koefisien regresi, dan menentukan pendapatan maksimum yang sesuai.
Saya rasa skrip berikut akan sangat berguna saat membuat dasbor dinamis di Power BI atau Tableau karena Anda akan mendapatkan pembaruan data real-time tanpa perlu membawa apa pun secara offline.
Anda juga akan melihat bahwa saya menggunakan pendekatan manual untuk menemukan koefisien regresi menggunakan fungsi agregat SQL, karena sebagian besar dialek SQL tidak memiliki fungsi regresi khusus yang dapat Anda gunakan. Anda mungkin terkejut mengetahui bahwa regresi linear sederhana bekerja dengan baik di SQL karena koefisien model untuk regresi linear sederhana dapat diekspresikan dalam hal korelasi, simpangan baku, dan nilai mean antara x dan y.
-- SQL script to perform linear regression on log(quantity_sold) vs price,
-- calculate the optimal price to maximize revenue, and determine the maximum revenue.
WITH regression_data AS (
SELECT
COUNT(*) AS N,
SUM(price) AS sum_x,
SUM(LOG(quantity_sold)) AS sum_y,
SUM(price * LOG(quantity_sold)) AS sum_xy,
SUM(price * price) AS sum_x2,
SUM(LOG(quantity_sold) * LOG(quantity_sold)) AS sum_y2
FROM sales_data
),
regression_coefficients AS (
SELECT
N,
sum_x,
sum_y,
sum_xy,
sum_x2,
sum_y2,
(N * sum_xy - sum_x * sum_y) / (N * sum_x2 - sum_x * sum_x) AS slope,
(sum_y - ((N * sum_xy - sum_x * sum_y) / (N * sum_x2 - sum_x * sum_x)) * sum_x) / N AS intercept
FROM regression_data
),
optimal_price AS (
SELECT
slope,
intercept,
(-1 / slope) AS optimal_P
FROM regression_coefficients
),
max_revenue AS (
SELECT
optimal_P,
slope,
intercept,
optimal_P * EXP(intercept + slope * optimal_P) AS max_R
FROM optimal_price
)
SELECT
optimal_P AS Optimal_Price,
max_R AS Maximum_Revenue
FROM max_revenue;
Optimal_Price | Maximum_Revenue
------------- | ----------------
20104.32 | 402082.58
Perlu diketahui bahwa skrip SQL yang disediakan mungkin memerlukan penyesuaian tergantung pada dialek SQL yang digunakan, karena sintaksnya bisa berbeda. Juga, untuk tujuan pemecahan masalah, saya akan memastikan bahwa tabel data penjualan Anda berisi nilai yang valid dan positif untuk price dan quantity_sold, karena nilai negatif atau nol dapat menyebabkan error.
Selain itu, jika Anda ingin memasukkan transformasi log, seperti yang kita lakukan di bagian R, Anda bisa melakukannya, tetapi, tergantung dialek Anda, fungsi logaritma natural mungkin bernama berbeda, LN atau LOG. Di DuckDB, LN dan LOG sebenarnya berbeda: LN adalah logaritma natural e, sedangkan LOG berbasis 10. Jika Anda tertarik membuat kurva permintaan untuk menganalisis hubungan antara harga dan penjualan di SQL, ikuti code-along Analyzing Product Demand in SQL saya. Terakhir, untuk meningkatkan kemahiran SQL Anda sebagai analis, jelajahi jalur karier Associate Data Analyst in SQL, agar Anda mengembangkan seperangkat alat yang lengkap.
Pengecualian terhadap Kurva Permintaan
Ada pengecualian penting ketika perilaku konsumen dapat menyimpang dari pola standar kurva permintaan:
Barang Giffen
Barang Giffen adalah jenis barang inferior yang langka di mana hukum permintaan tidak berlaku. Ketika harga barang Giffen naik, konsumen justru dapat membeli lebih banyak, bukan lebih sedikit. Ini terjadi karena barang tersebut menyerap porsi besar dari anggaran konsumen sehingga saat harganya naik, konsumen tidak lagi mampu membeli substitusi yang lebih diinginkan dan terpaksa membeli lebih banyak barang Giffen. Contoh historis klasik (meski diperdebatkan) adalah kenaikan harga roti pada abad ke-19 di beberapa tempat (mungkin Inggris), di mana orang akhirnya mengonsumsi lebih banyak roti karena mereka tidak mampu membeli makanan lain yang lebih mahal.
Barang Veblen
Barang Veblen adalah produk mewah atau simbol status—seperti tas desainer, wine berkualitas, atau jam tangan kelas atas—yang permintaannya meningkat seiring kenaikan harga. Sebagian daya tariknya berasal dari persepsi bahwa harga yang lebih tinggi menandakan eksklusivitas atau status sosial yang lebih tinggi, membuat barang tersebut semakin diinginkan saat menjadi lebih mahal. Anda bisa menganggap ini sebagai “konsumsi mencolok.”
Kasus khusus lainnya
- Efek ikut-ikutan atau jaringan: Beberapa barang menjadi lebih bernilai bagi setiap konsumen seiring semakin banyak orang menggunakannya (misalnya, platform media sosial, ekosistem perangkat lunak tertentu). Permintaan dapat meningkat bukan hanya karena harga tetapi karena popularitas atau ukuran jaringan barang tersebut yang tumbuh.
- Efek snob: Beberapa konsumen membeli barang justru karena sedikit orang yang memilikinya. Dalam kasus ini, harga yang lebih rendah dapat membuat barang tampak “kurang eksklusif,” mengurangi daya tariknya.
- Aset spekulatif atau investasi: Untuk aset seperti beberapa cryptocurrency atau komoditas, jika pasar percaya harga akan terus naik, permintaan dapat melonjak sebagai respons terhadap kenaikan harga, bukan turun.
Dalam semua contoh ini, hubungan harga–kuantitas yang biasa berbalik atau menjadi lebih kompleks karena faktor psikologis, budaya, atau situasional yang mengesampingkan asumsi klasik bahwa konsumen sekadar menginginkan “lebih pada harga yang lebih rendah.”
Istilah Umum pada Kurva Permintaan
Kita telah membahas beberapa istilah berbeda dalam artikel ini. Mari buat tabel untuk membantu merapikannya.
| Konsep | Deskripsi |
|---|---|
| Kurva Permintaan | Representasi grafis yang menunjukkan hubungan antara harga suatu barang dan jumlah yang diminta oleh konsumen. |
| Hukum Permintaan | Menyatakan bahwa, ceteris paribus, ketika harga suatu produk turun, jumlah yang diminta meningkat. |
| Hubungan Harga–Kuantitas | Menunjukkan bahwa harga suatu produk secara langsung memengaruhi jumlah yang bersedia dibeli konsumen. |
| Elastisitas | Mengukur seberapa sensitif jumlah yang diminta terhadap perubahan harga. |
| Utilitas Marjinal yang Menurun | Merujuk pada penurunan kepuasan atau kegunaan dari mengonsumsi unit tambahan suatu produk. |
Penutup
Kita telah membahas banyak hal: Kita berlatih mulai dari kurva permintaan dan model permintaan, transformasi log dan eksponensial, hingga teknik regresi kuadratik dan optimasi.
Terus pelajari analisis bisnis dengan DataCamp. Pertimbangkan untuk mendaftar kursus seperti yang saya sebutkan sebelumnya: Forecasting Product Demand in R dan Data-Driven Decision Making for Business, keduanya akan mengajarkan Anda cara menggunakan data untuk meningkatkan keputusan dalam bisnis dan keuangan. Tidak ada pengganti untuk memiliki keterampilan teknis dan mengetahui teknik yang tepat.
Selain itu, terus latih hal-hal inti dalam data science. Selain kursus regresi inti (Introduction to Regression with statsmodels in Python dan Introduction to Regression in R) pelajari Nonlinear Modeling with Generalized Additive Models (GAMs) in R atau Statistics Fundamentals in Python. Saya juga merekomendasikan mengikuti jalur karier lengkap Machine Learning Scientist in Python. Pilih hal yang paling lemah bagi Anda, agar Anda belajar paling banyak.

Penulis
Josef Waples
Saya penulis dan editor data science dengan kontribusi pada artikel riset di jurnal ilmiah. Saya sangat tertarik pada aljabar linear, statistika, R, dan sejenisnya. Saya juga cukup sering bermain catur!

Kurva permintaan adalah salah satu alat paling menarik dan berguna untuk memahami perilaku konsumen dan strategi penetapan harga. Alat ini umum digunakan untuk menganalisis hubungan antara harga suatu barang atau jasa dan jumlah yang terjual, meskipun dalam konteks lain dapat digunakan untuk menganalisis dinamika pasar atau memproyeksikan pendapatan.
Dalam artikel ini, kita akan mempelajari segala hal tentang kurva permintaan. Kita akan membahas karakteristik penentu dan istilah-istilah terkait. Nantinya, saya juga akan menunjukkan bagaimana kurva permintaan dapat diperluas untuk menemukan harga optimal yang memaksimalkan keuntungan—sedikit aljabar terapan yang berguna untuk membangun teknik optimasi dasar yang saya gunakan dalam pekerjaan saya sendiri.
Dengan mengikuti metode ini, saya yakin Anda tidak hanya akan mampu mengambil keputusan terkait strategi harga, tetapi juga mampu menjelaskan metodenya dengan jelas sehingga menjadi kerangka untuk proyek-proyek selanjutnya. Meskipun saya akan menggunakan R dan SQL dalam artikel ini, ketahuilah bahwa Anda bisa menggunakan metode yang sama dengan alat populer lainnya, seperti Excel, Python, Tableau, dan Power BI. Terakhir, agar benar-benar mahir dalam penetapan harga, saya sangat merekomendasikan kursus kami, Forecasting Product Demand in R.
Apa itu Kurva Permintaan?
Kurva permintaan adalah konsep mendasar dalam strategi harga dan ekonomi secara umum. Ini adalah cara visual yang kuat untuk merepresentasikan hubungan antara harga suatu barang atau jasa dan jumlah yang diminta oleh konsumen. Komponen utama kurva permintaan mencakup harga pada satu sumbu dan jumlah yang diminta pada sumbu lainnya. Berikut salah satu contohnya:
Salah satu bentuk dasar kurva permintaan. Gambar oleh Penulis.
Komponen kurva permintaan
Pada grafik di atas, Anda akan melihat sesuatu yang cukup jelas pada pandangan pertama: bahwa harga dan jumlah yang terjual memiliki hubungan terbalik. Secara lebih formal, kita bisa mengatakan bahwa kurva permintaan sangat terkait dengan apa yang dikenal sebagai hukum permintaan, yang menyatakan bahwa, ceteris paribus, saat harga suatu produk turun, jumlah yang diminta meningkat. Terkadang, gagasan yang sama ini disebut sebagai hubungan harga dan kuantitas, yang berarti bahwa harga suatu produk secara langsung memengaruhi seberapa banyak yang bersedia dibeli konsumen.
Namun, grafik khusus ini juga memuat sesuatu yang agak kurang jelas, yakni bahwa jumlah yang terjual turun lebih tajam saat harga rendah dan cenderung mendatar saat harga tinggi. Kelengkungan ini terkait dengan konsep lain, seperti elastisitas yang berubah-ubah dan utilitas marjinal yang menurun yang akan saya bahas di bagian berikutnya.
Elastisitas harga permintaan
Salah satu konsep kunci yang muncul dari hubungan terbalik antara harga dan jumlah yang diminta adalah elastisitas harga permintaan, yang mengukur seberapa sensitif jumlah yang diminta terhadap perubahan harga. Secara formal, elastisitas sering dihitung sebagai:
Suatu produk dikatakan memiliki permintaan elastis jika perubahan harga yang relatif kecil menyebabkan perubahan besar pada jumlah yang diminta. Elektronik kelas atas atau tas desainer mungkin mengalami penurunan permintaan yang tajam jika harganya naik sedikit saja, karena konsumen dapat menemukan substitusi.
Suatu produk memiliki permintaan inelastis jika perubahan harga yang besar hanya menyebabkan perubahan yang relatif kecil pada jumlah yang diminta. Kebutuhan pokok seperti bensin atau obat-obatan adalah contoh klasik. Bahkan jika harganya naik, konsumen tetap terdorong untuk membeli hampir jumlah yang sama karena tidak ada alternatif.
Jenis-jenis kurva permintaan
Meskipun saya menunjukkan satu contoh kurva permintaan, ketahuilah bahwa kurva ini dapat mengambil banyak bentuk berbeda tergantung pada karakteristik mendasar pasar, produk, dan preferensi konsumen. Meskipun selalu menurun, hubungan ini tidak harus mengikuti satu bentuk matematis tertentu.
Kurva permintaan linear
Kurva permintaan linear memiliki laju perubahan konstan antara harga dan kuantitas. Ini umum pada skenario pasar sederhana. Digambarkan sebagai garis lurus.
Kurva permintaan non-linear
Seperti yang kita lihat, kurva permintaan tidak selalu digambar sebagai garis lurus sempurna karena hubungan antara harga dan kuantitas tidak selalu terwakili dengan baik oleh fungsi linear satu-ke-satu yang sederhana. Ada beberapa alasan mengapa, yang sudah mulai saya singgung sebelumnya:
Dalam praktiknya, kurva permintaan non-linear mungkin lebih realistis karena lebih baik menggambarkan laju perubahan yang bervariasi. Bagaimanapun, data dunia nyata berantakan, dan perilaku konsumen itu kompleks. Meski begitu, sering kali ada cara untuk melinearkan kurva non-linear, seperti yang akan saya tunjukkan nanti.
Kurva permintaan individu vs. kurva permintaan pasar
Kita juga dapat membandingkan perbedaan permintaan pada tingkat konsumen dan pasar. Kurva permintaan individu merepresentasikan hubungan antara harga suatu produk dan jumlah yang diminta oleh satu konsumen. Ini mencerminkan preferensi pribadi dan kesediaan membayar.
Kurva permintaan pasar menggabungkan permintaan dari semua konsumen di pasar. Ini menjumlahkan kurva permintaan individu, menunjukkan total jumlah yang diminta pada setiap titik harga. Karena cara pembentukannya, kurva permintaan pasar digunakan oleh bisnis untuk menilai potensi pasar.
Kurva permintaan vs. kurva penawaran
Jika Anda mempelajari kurva permintaan, Anda mungkin juga pernah mendengar tentang kurva penawaran. Pada dasarnya, kurva penawaran dan kurva permintaan adalah dua sisi dari satu koin. Sementara kurva permintaan menunjukkan seberapa banyak produk yang bersedia dibeli konsumen pada berbagai tingkat harga, kurva penawaran merepresentasikan seberapa banyak produsen bersedia menjual pada harga yang sama.
Sekarang, jika Anda memplot kurva permintaan dan kurva penawaran pada grafik yang sama, Anda akan melihat titik perpotongan. Titik perpotongan ini, yang dikenal sebagai titik keseimbangan, dianggap menentukan harga dan kuantitas pasar. Jadi, ketika permintaan melampaui penawaran, harga cenderung naik, yang memberi insentif produsen untuk memproduksi lebih banyak. Namun ketika penawaran melebihi permintaan, harga turun, yang mendorong lebih banyak pembelian.
Kurva permintaan vs. kurva penawaran. Gambar oleh Penulis.
Menggunakan Kurva Permintaan dalam Data Science
Ada banyak cara untuk memanfaatkan kurva permintaan dalam pengambilan keputusan bisnis. Di sini, saya akan memandu Anda melalui satu cara spesifik untuk membuat kurva permintaan menjadi berguna: Kita akan menggunakan data kita untuk membuat kurva permintaan dan model permintaan menggunakan teknik regresi kuadratik. Saya akan menunjukkan bagaimana Anda dapat menggunakan teknik ini baik di R maupun SQL, yang kemudian bisa digunakan pada dasbor interaktif Power BI atau Tableau.
Sebelum saya lanjut, jika Anda membaca ini dan berpikir ingin meningkatkan keterampilan seluruh tim sekaligus, seperti tim analis bisnis atau data scientist, DataCamp for Business siap membantu. Kami akan membantu tim Anda membangun keterampilan dan teknik yang bermanfaat dalam konteks bisnis Anda. Banyak proyek analisis data tingkat lanjut memerlukan banyak kontributor—jadi hubungi tim DataCamp kami untuk mempelajari lebih lanjut.