Dùng đường cầu để phân tích giá bằng R
Hãy tạo và phân tích một đường cầu bằng R. Để mô phỏng bộ dữ liệu, tôi tạo một đường cong suy giảm mũ với nhiễu rải rác xung quanh. Ý tưởng ở đây là mỗi điểm dữ liệu đại diện cho một tuần bán hàng của một đại lý ô tô, nơi đại lý đưa ra các ưu đãi khác nhau và thử nghiệm các mức giá khác nhau cho cùng một dòng xe nhằm tăng doanh số.
# 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
Đường cầu có nhiễu. Ảnh: Tác giả
Ở đây, tôi đã vẽ mối quan hệ giữa giá và lượng bán, và tôi dùng các điểm scatterplot để biểu diễn biến thiên tự nhiên, có thể do nhiều nguyên nhân khác nhau.
Đọc biểu đồ này, ta thấy khi giá tăng, doanh số giảm, và mối quan hệ này nhạy hơn ở một số khoảng giá so với khoảng khác. Nhưng, tùy vào việc bạn làm gì với dữ liệu, nhận định tổng quát này có thể chưa đủ để đưa ra một quyết định kinh doanh thực tiễn. Theo kinh nghiệm của tôi, sếp thường muốn thấy một kết luận chuẩn tắc đưa ra câu trả lời cụ thể cho một câu hỏi kinh doanh cấp bách hơn. Một câu hỏi như vậy là: Mức giá ô tô nào thực sự tối đa hóa tổng doanh thu?
Ta có thể bắt đầu bằng cách ước đoán chỉ bằng mắt qua biểu đồ.
- Ở mức thấp, theo đường xanh lá, lượng bán là 60 khi trục x cho giá là 10.000$. Điều này tương đương 600.000$ doanh thu tổng.
- Ở mức cao, ta thấy đường xanh lá đạt khoảng 10 khi trục x là 40.000$, tương đương 400.000$ doanh thu.
- Ở khoảng giữa, đường xanh lá đạt 30 khi giá là 25.000$. Điều này bằng 750.000$.
Có lẽ bạn đang cảm nhận rằng mức giá tối đa hóa tổng doanh thu nằm đâu đó ở giữa. Về mặt khái niệm, điều này hợp lý: Chúng ta kỳ vọng giá rất thấp sẽ tạo ra khối lượng bán cao nhưng doanh thu tương đối nhỏ, trong khi giá rất cao sẽ khiến bán ít và doanh thu cũng tương đối nhỏ. Nhưng ở đâu đó giữa hai mức này phải tồn tại mức giá tối ưu tối đa hóa doanh thu.
Bây giờ, thay vì ước lượng bằng mắt, hãy học một cách tốt hơn, hiệu quả và chắc chắn hơn để tối đa hóa tổng doanh thu. Ta có thể tìm ra mức giá tối ưu bằng cách giải một bài toán tối ưu hóa sơ đẳng. Trước tiên ta tạo một mô hình tuyến tính, rồi bẻ cong mô hình đó thành một parabol và tìm điểm cao nhất.
Bước đầu tiên là tuyến tính hóa mối quan hệ. Vì tôi đã dựng tất cả bằng một hàm suy giảm mũ, tôi biết nó sẽ được tuyến tính hóa tốt bằng cách lấy logarit của lượng bán. Để đơn giản, hãy bỏ qua mọi phương sai thay đổi.
# 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

Đường cầu đã biến đổi. Ảnh: Tác giả
Giờ đây, ta có thể tạo biến mới tên là revenue được định nghĩa là price nhân với log_quantity_sold. Lưu ý, ta tạo một đối tượng mô hình tuyến tính bằng hàm lm() vì ta muốn truy cập các con số gắn với hệ số mô hình.
Ở bước tiếp theo, ta thế phương trình mô hình tuyến tính vào công thức của mình. Nếu chúng ta không thực hiện phép biến đổi log:
-
Điều này có nghĩa phương trình:
revenue = price * quantity_soldgiờ có thể viết thànhrevenue = price * (b0 + b1 * price). -
Sau đó, ta phân phối hạng tử. Giống như phân phối trong x(1-x) để thành x - x2, ta viết lại phương trình thành
revenue = b0 * Price + b1 * price2.
Lúc này hãy để ý rằng revenue được xác định bởi một phương trình trong đó price xuất hiện dưới dạng bình phương. Đây là phần mấu chốt vì, bằng cách đồ thị price dưới dạng bình phương, ta đã tạo ra một hàm có điểm cực đại.
Tuy nhiên, vì chúng ta có phép biến đổi log, ta phải biến đổi ngược mũ của mô hình log-tuyến tính.
-
Điều này có nghĩa phương trình:
revenue = price * log_quantity_soldgiờ sẽ được viết thànhrevenue = price * eb0 + b1 * price. -
Ta có thể phân tích phương trình này sang dạng mới, nếu muốn:
revenue=price * eb0 * eb1⋅price. Nhưng phương trình cụ thể này không thể phân phối theo cách giống như phương trình tuyến tính hay đa thức vì hàm mũ không cho phép tách hoặc phân phối các hạng tử như các hạng tử đại số tiêu chuẩn ở trên.
Dù sao đi nữa, hãy tiếp tục:
# 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)
)

Mô hình doanh thu tạo từ đường cầu. Ảnh: Tác giả.
Điều thú vị là, dù mô hình gốc dùng log_quantity_sold, biểu đồ chúng ta tạo lại hoàn toàn ở trên thang đo gốc của price và revenue. Phép biến đổi log chỉ ảnh hưởng mô hình nền, và phép biến đổi ngược với e đưa biểu đồ trở lại thang ban đầu nên vẫn dễ diễn giải.
Tìm nơi đạo hàm bằng không
Điểm mấu chốt cuối cùng là: Điểm trên đỉnh của parabol, nơi đạo hàm bằng không, sẽ là mức giá lý thuyết tối đa hóa doanh thu.
Ta có thể nhớ rằng ta tìm đạo hàm của phương trình như 3x² + 2x bằng cách nhân với số mũ để được 6x + 2. Lý luận tương tự áp dụng ở đây, nhưng hãy nhớ rằng, trong ví dụ này, trước tiên chúng ta phải biến đổi ngược các giá trị đã lấy log trước khi lập hàm doanh thu. Bằng cách đưa về thang đo gốc trước khi tìm cực đại doanh thu, ta biết rằng mình đang tìm mức giá tối đa hóa doanh thu thực tế, không phải một chỉ số đã biến đổi. Vì vậy đây là hàm doanh thu đúng để lấy đạo hàm: revenue = price * e(b0 + b1 * price).
Hãy thực hiện. Ở đây, tôi lấy các hệ số của mô hình tuyến tính. Sau đó tôi định nghĩa một hàm doanh thu. Cuối cùng, tôi tính mức giá tối ưu và giá trị doanh thu tổng kỳ vọng tương ứng.
# 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
Bạn có thể đã để ý rằng tôi có một dòng mã tính giá tối ưu mà chưa giải thích rõ trong ngữ cảnh. Tôi đang nói đến phần: (optimal_price <- -1 / b1). Hãy để tôi dành một chút để chỉ bạn cách tôi tìm ra điều này, rằng giá tối ưu bằng âm một chia cho hệ số dốc.
Trước hết, ta phải nhớ quy tắc tích trong giải tích, phát biểu rằng, nếu hàm của x "f của x" bằng u(x) nhân v(x), thì đạo hàm, ký hiệu f'(x), bằng đạo hàm của phần thứ nhất nhân phần thứ hai, cộng với phần thứ nhất nhân đạo hàm của phần thứ hai.
# the product rule in calculus
f(x) = u(x) * v(x)
f'(x) = u'(x) * v(x) + u(x) * v'(x)
Đây là phương trình của ta một lần nữa, cùng với đạo hàm:
# 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)
Tôi biết đạo hàm của price ở đây là 1 vì đó là biến ta đang lấy đạo hàm theo nó. "Giá thay đổi bao nhiêu khi giá thay đổi?" Đó là mối quan hệ một-một.
Ở phía còn lại, đạo hàm của e(b0 + b1 * price) không gọn gàng như một hàm đơn giản, chẳng hạn 2x2 có đạo hàm là 4x.
Trong biểu thức ta đang xét, số mũ là một đa thức. Mẹo là quan sát kỹ tất cả các hạng tử: Trước tiên,
-
b0chỉ là một hằng số, nên đạo hàm bằng 0 -
pricecó đạo hàm là 1, như ta đã xử lý. -
b1là hệ số co giãn, nên ta đưa con số đó ra trước, rồi theo quy tắc, giữ nguyên số mũ đa thức.
Vậy đạo hàm của e(b0 + b1 * price) là b1 * e(b0 + b1 * price). Đây được gọi là quy tắc dây chuyền (chain rule), như tôi minh họa ở đây:
# the chain rule in calculus
f(x) = x^g(x)
f'(x) = g'(x) * x^g(x)
Cuối cùng là phân tích nhân tử.
Đại số cho ta biết các biểu thức này tương đương:
A + B * A = A(1+B)
Khi quan sát kỹ đạo hàm tôi đang làm việc, tôi nhận ra có phần A và phần B:
"A" là e(b0 + b1 * price) và "B" là price * b1. Vậy tôi có thể phân tích
e^(b0 + b1 * price) + price * b1 * e^(b0 + b1 * price)
thành:
e^(b0 + b1 * price)(1 + price * b1)
Cuối cùng, tôi phải đặt đạo hàm này bằng không để tìm điểm mà độ dốc ngừng tăng và bắt đầu giảm, tức là đỉnh của parabol.
e^(b0 + b1 * price)(1 + price * b1) = 0
Mẹo cuối: tôi biết rằng khi A * B bằng không, thì hoặc A hoặc B (hoặc cả hai) phải bằng không. Nhưng thuận tiện là tôi biết e(b0 + b1 * price) không bao giờ bằng không vì nó là một số mũ. Nếu số mũ dương, kết quả lớn; nếu bằng 0, kết quả là 1; nếu âm, kết quả là một phân số nhỏ. Nên tôi có thể loại một nửa khi giải bằng không.
Điều duy nhất còn lại là chuyển vế và giải price.
(1 + b1 * price) = 0
b1 * price = -1
price = - 1 / b1
Đây là cách tôi tìm -1 / b1 để đưa vào hàm tự xây trong mã R của chúng ta.
Giờ, để tiếp tục, chúng ta có thể vẽ mức giá tối ưu và xem doanh thu tương ứng.
Giá tối ưu là 20.104,54$, mang lại tổng doanh thu kỳ vọng 732.853,50$, xấp xỉ. Tôi nói 'xấp xỉ' vì nếu bạn kiểm tra phép tính, chúng ta đang giả định bán 36,45 chiếc xe, nhưng ta không thể bán nửa chiếc xe.
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)
Tìm mức giá tối đa hóa doanh thu. Ảnh: Tác giả.
Trong một quy trình khác, ta thậm chí có thể mở rộng các ý tưởng này để xét lợi nhuận thay vì doanh thu. Tôi sẽ không trình bày toàn bộ ở đây, nhưng để làm điều đó, hãy biết rằng ta có thể xét profit = revenue - cost, trong đó cost được tính là quantity * unit cost. Nếu chi phí đơn vị không đổi và lượng có thể được thay bằng một biểu thức như 1 - price, thì ta lại có một parabol úp xuống.
Nếu bạn muốn tìm hiểu thêm về cách giải tích và đạo hàm xuất hiện trong học máy, hãy thử khóa học Giới thiệu về Học sâu với PyTorch của chúng tôi, khóa này khám phá gradient descent chi tiết trong bối cảnh tối ưu siêu tham số. Bối cảnh khác nhau, nhưng bạn có thể áp dụng tư duy tương tự. Tối ưu hóa, dưới nhiều hình thức khác nhau, như bạn đang thấy, là một kỹ năng then chốt trong khoa học dữ liệu, và thực hành sẽ giúp bạn tiến bộ.
Đường cầu so với đường Laffer
Nếu bạn đã học kinh tế học, bạn có thể nhận ra parabol này giống với đường Laffer, một khái niệm gây tranh cãi phần nào, minh họa cách thuế suất ảnh hưởng đến doanh thu thuế của chính phủ.
Trong khi tôi coi cả đường Laffer và phép biến đổi này trên đường cầu là các bài toán kiểu “tối đa hóa so với tỷ lệ”, đường Laffer thì đặc thù cho thuế: trục hoành biểu diễn thuế suất (0% đến 100%), còn trục tung là tổng doanh thu thuế thu được. Về mặt khái niệm, đường Laffer cũng có dạng chữ U ngược vì ở mức cao, nếu thuế suất quá cao, sẽ không tạo ra doanh thu do không còn động lực cho cá nhân hay doanh nghiệp tham gia vào các hoạt động chịu thuế. Các nhà kinh tế có thể bất đồng về yếu tố 'động lực' đó.

Đường Laffer trong phim Ferris Bueller's Day Off. Nguồn: YouTube
Dùng đường cầu để phân tích giá bằng SQL
Sau khi đã đi qua ý tưởng, tôi cũng muốn chia sẻ một script SQL thực hiện cùng công việc. Hàm này sẽ hồi quy quantity_sold theo price. Sau đó, nó cho phép bạn tìm mức giá tối ưu để tối đa hóa doanh thu dựa trên hệ số hồi quy, và xác định doanh thu tối đa tương ứng.
Tôi nghĩ script sau sẽ đặc biệt hữu ích khi tạo dashboard động trong Power BI hoặc Tableau vì bạn sẽ có cập nhật dữ liệu thời gian thực mà không cần đưa bất cứ thứ gì ngoại tuyến.
Bạn cũng sẽ thấy rằng tôi dùng cách thủ công để tìm các hệ số hồi quy bằng các hàm tổng hợp SQL, vì hầu hết các biến thể SQL không có sẵn các hàm hồi quy chuyên biệt. Bạn có thể ngạc nhiên khi biết hồi quy tuyến tính đơn hoạt động tốt trong SQL vì các hệ số mô hình cho hồi quy tuyến tính đơn có thể được biểu diễn theo tương quan, độ lệch chuẩn và giá trị trung bình giữa x và 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
Lưu ý rằng script SQL được cung cấp có thể cần điều chỉnh tùy vào biến thể SQL bạn dùng, vì cú pháp có thể khác nhau. Ngoài ra, để khắc phục sự cố, tôi sẽ đảm bảo bảng dữ liệu bán hàng của bạn chứa các giá trị hợp lệ và dương cho cả price và quantity_sold, vì giá trị âm hoặc bằng không có thể gây lỗi.
Bên cạnh đó, nếu bạn muốn áp dụng biến đổi log như ta đã làm trong phần R, bạn có thể thực hiện, nhưng tùy vào biến thể, hàm log tự nhiên có thể có tên khác nhau, hoặc là LN hoặc LOG. Trong DuckDB, LN và LOG thực ra khác nhau: LN là log tự nhiên cơ số e, còn LOG là cơ số 10. Nếu bạn quan tâm đến việc tạo đường cầu để phân tích mối quan hệ giữa giá và doanh số trong SQL, hãy xem buổi code-along Phân tích nhu cầu sản phẩm trong SQL của tôi. Cuối cùng, tôi muốn nói rằng, để nâng cao năng lực SQL như một nhà phân tích, bạn nên khám phá lộ trình nghề nghiệp Associate Data Analyst in SQL, để phát triển bộ công cụ đầy đủ.
Những ngoại lệ đối với đường cầu
Có những ngoại lệ đáng chú ý khi hành vi người tiêu dùng có thể đi ngược mô hình tiêu chuẩn của đường cầu:
Hàng hóa Giffen
Hàng hóa Giffen là một loại hàng hóa thứ cấp hiếm hoi mà quy luật cầu không còn đúng. Khi giá của hàng Giffen tăng, người tiêu dùng có thể nghịch lý là mua nhiều hơn chứ không phải ít đi. Điều này xảy ra vì hàng hóa đó chiếm một phần lớn trong ngân sách của người tiêu dùng, đến mức khi giá tăng, họ không còn đủ khả năng chi trả cho các sản phẩm thay thế hấp dẫn hơn và buộc phải mua nhiều hàng Giffen hơn. Một ví dụ lịch sử kinh điển (dù gây tranh cãi) là giá bánh mì tăng trong thế kỷ 19 ở một số nơi (có thể là Anh), khi người dân cuối cùng tiêu thụ nhiều bánh mì hơn vì họ không thể mua những thực phẩm khác đắt tiền hơn.
Hàng hóa Veblen
Hàng hóa Veblen là những sản phẩm xa xỉ hay biểu tượng địa vị — như túi xách hàng hiệu, rượu vang hảo hạng, hoặc đồng hồ cao cấp — mà cầu tăng khi giá tăng. Một phần sức hấp dẫn đến từ nhận thức rằng giá cao hơn báo hiệu tính độc quyền hoặc địa vị xã hội cao hơn, khiến hàng hóa trở nên đáng mong muốn hơn khi nó đắt hơn. Bạn có thể nghĩ về điều này như “tiêu dùng phô trương”.
Các trường hợp đặc biệt khác
- Hiệu ứng đám đông hoặc hiệu ứng mạng: Một số hàng hóa trở nên giá trị hơn với mỗi người dùng khi càng nhiều người khác sử dụng (ví dụ: nền tảng mạng xã hội, một số hệ sinh thái phần mềm). Cầu có thể tăng không chỉ vì giá mà còn do mức độ phổ biến hoặc quy mô mạng lưới của hàng hóa.
- Hiệu ứng “sành điệu” (snob): Một số người tiêu dùng mua hàng hóa chính vì ít người khác có. Trong những trường hợp này, giá thấp hơn có thể khiến hàng hóa có vẻ “kém độc quyền” hơn, làm giảm sức hấp dẫn.
- Tài sản đầu cơ hoặc đầu tư: Với các tài sản như một số tiền mã hóa hoặc hàng hóa, nếu thị trường tin rằng giá sẽ tiếp tục tăng, cầu có thể nhảy vọt để đáp ứng việc tăng giá thay vì giảm.
Trong tất cả những ví dụ này, mối quan hệ giá–lượng thông thường bị đảo ngược hoặc trở nên phức tạp hơn do các yếu tố tâm lý, văn hóa hoặc tình huống lấn át giả định kinh điển rằng người tiêu dùng đơn giản là muốn “nhiều hơn khi giá thấp hơn.”
Các thuật ngữ thường gặp về đường cầu
Chúng ta đã xét một vài thuật ngữ khác nhau trong bài. Hãy tạo một bảng để hệ thống hóa.
| Khái niệm | Mô tả |
|---|---|
| Đường cầu | Biểu diễn bằng đồ thị cho thấy mối quan hệ giữa giá của một hàng hóa và lượng cầu của người tiêu dùng. |
| Quy luật cầu | Phát biểu rằng, các yếu tố khác không đổi, khi giá của một sản phẩm giảm, lượng cầu tăng. |
| Mối quan hệ Giá–Lượng | Chỉ ra rằng giá của sản phẩm ảnh hưởng trực tiếp tới lượng mà người tiêu dùng sẵn sàng mua. |
| Độ co giãn | Đo lường mức độ nhạy cảm của lượng cầu đối với một thay đổi về giá. |
| Lợi ích cận biên giảm dần | Chỉ việc mức thỏa mãn hoặc hữu ích giảm đi từ việc tiêu dùng các đơn vị bổ sung của một sản phẩm. |
Lời kết
Chúng ta đã đi qua khá nhiều nội dung: Từ đường cầu và mô hình cầu, tới biến đổi log và mũ, tới kỹ thuật hồi quy bậc hai và tối ưu hóa.
Tiếp tục học phân tích kinh doanh với DataCamp. Hãy cân nhắc đăng ký các khóa tôi đã nhắc tới: Dự báo nhu cầu sản phẩm bằng R và Ra quyết định dựa trên dữ liệu cho doanh nghiệp, cả hai sẽ dạy bạn cách dùng dữ liệu để nâng cao quyết định trong kinh doanh và tài chính. Không gì thay thế được việc có một số kỹ năng kỹ thuật và biết đúng kỹ thuật cần dùng.
Ngoài ra, hãy tiếp tục rèn luyện các kiến thức cốt lõi của khoa học dữ liệu. Bên cạnh các khóa hồi quy nền tảng (Giới thiệu về Hồi quy với statsmodels trong Python và Giới thiệu về Hồi quy trong R), hãy học Mô hình hóa phi tuyến với Mô hình cộng tổng quát (GAMs) trong R hoặc Nền tảng Thống kê trong Python. Tôi cũng khuyến nghị theo đuổi trọn vẹn lộ trình nghề nghiệp Nhà khoa học Học máy với Python. Hãy chọn phần bạn yếu nhất để học được nhiều nhất.

Tác giả
Josef Waples
Tôi là một cây bút và biên tập viên về khoa học dữ liệu, đã có bài đóng góp cho các nghiên cứu đăng trên tạp chí khoa học. Tôi đặc biệt quan tâm đến đại số tuyến tính, thống kê, R và các chủ đề tương tự. Tôi cũng chơi cờ vua khá thường xuyên!
Đường cầu là một trong những công cụ thú vị và hữu ích nhất để hiểu hành vi người tiêu dùng và chiến lược định giá. Nó thường được dùng để phân tích mối quan hệ giữa giá của một hàng hóa hoặc dịch vụ và lượng bán ra, dù trong những bối cảnh khác nó có thể được dùng để phân tích động lực thị trường hoặc dự báo kết quả doanh thu.
Trong bài viết này, chúng ta sẽ tìm hiểu tất cả về đường cầu. Chúng ta sẽ khám phá cả các đặc điểm xác định và các thuật ngữ liên quan. Ở phần sau, tôi cũng sẽ dành thời gian chỉ ra cách mở rộng đường cầu để tìm mức giá tối ưu tối đa hóa lợi nhuận – một chút đại số ứng dụng hữu ích để tạo nên một kỹ thuật tối ưu hóa sơ cấp mà tôi thấy hữu ích trong công việc của mình.
Bằng cách làm theo các phương pháp này, tôi đảm bảo rằng bạn không chỉ có thể đưa ra quyết định về chiến lược định giá mà còn có thể diễn giải rõ ràng các phương pháp theo cách cung cấp khung làm việc cho các dự án tương lai. Mặc dù tôi sẽ dùng R và SQL trong bài viết này, hãy biết rằng bạn có thể dùng các phương pháp tương tự với những công cụ phổ biến khác như Excel, Python, Tableau và Power BI. Cuối cùng, tôi muốn nói rằng, để thực sự trở thành chuyên gia định giá, tôi rất khuyến nghị khóa học Dự báo nhu cầu sản phẩm bằng R của chúng tôi.
Đường cầu là gì?
Đường cầu là một khái niệm nền tảng trong chiến lược định giá và kinh tế nói chung. Đây là một cách trực quan thuyết phục để biểu diễn mối quan hệ giữa giá của hàng hóa hoặc dịch vụ và lượng cầu của người tiêu dùng. Các thành phần chính của đường cầu gồm giá trên một trục và lượng cầu trên trục còn lại. Dưới đây là một ví dụ:
Một dạng đường cầu cơ bản. Ảnh: Tác giả.
Các thành phần của đường cầu
Trong biểu đồ trên, bạn sẽ nhận thấy một điều khá hiển nhiên ngay từ cái nhìn đầu tiên: giá và lượng bán có mối quan hệ nghịch biến. Chính xác hơn, ta có thể nói đường cầu liên quan chặt chẽ tới cái gọi là quy luật cầu, phát biểu rằng, các yếu tố khác không đổi, khi giá của một sản phẩm giảm, lượng cầu sẽ tăng. Đôi khi, cùng ý tưởng này còn được gọi là mối quan hệ giữa giá và lượng, nghĩa là giá của một sản phẩm ảnh hưởng trực tiếp tới mức độ mà người tiêu dùng sẵn sàng mua.
Tuy nhiên, đồ thị này còn biểu thị một điều ít hiển nhiên hơn, đó là lượng bán ra giảm mạnh hơn khi giá thấp và trở nên phẳng khi giá cao. Độ cong này liên quan đến các khái niệm khác như độ co giãn thay đổi và lợi ích cận biên giảm dần mà tôi sẽ đề cập trong phần tiếp theo.
Độ co giãn của cầu theo giá
Một khái niệm then chốt xuất hiện từ mối quan hệ nghịch biến giữa giá và lượng cầu là độ co giãn của cầu theo giá, đo lường mức độ nhạy cảm của lượng cầu trước sự thay đổi của giá. Về mặt hình thức, độ co giãn thường được tính là:
Một sản phẩm được cho là có cầu co giãn nếu một thay đổi nhỏ về giá dẫn tới thay đổi lớn về lượng cầu. Các thiết bị điện tử cao cấp hoặc túi xách hàng hiệu có thể chứng kiến cầu giảm mạnh ngay cả khi giá tăng chút ít vì người tiêu dùng có thể tìm hàng thay thế.
Một sản phẩm có cầu kém co giãn nếu thay đổi lớn về giá chỉ dẫn tới thay đổi nhỏ về lượng cầu. Những mặt hàng thiết yếu như xăng dầu hoặc thuốc men là ví dụ kinh điển. Dù giá tăng, người tiêu dùng vẫn buộc phải mua gần như cùng lượng vì không có lựa chọn thay thế.
Các dạng đường cầu
Mặc dù tôi đã minh họa một ví dụ về đường cầu, hãy biết rằng nó có thể có nhiều hình dạng khác nhau tùy theo đặc điểm nền tảng của thị trường, sản phẩm và sở thích người tiêu dùng. Dù luôn dốc xuống, mối quan hệ này không nhất thiết phải tuân theo một hình dạng toán học duy nhất.
Đường cầu tuyến tính
Đường cầu tuyến tính có tốc độ thay đổi không đổi giữa giá và lượng. Đây là dạng thường gặp trong các kịch bản thị trường đơn giản. Nó được biểu diễn bằng một đường thẳng.
Đường cầu phi tuyến
Như ta thấy, đường cầu không phải lúc nào cũng được vẽ thành đường thẳng hoàn hảo vì mối quan hệ giữa giá và lượng không phải lúc nào cũng được biểu diễn tốt bằng một hàm tuyến tính một-một đơn giản. Có vài lý do, như tôi đã đề cập:
Trong thực tế, đường cầu phi tuyến có thể thực tế hơn vì chúng mô tả tốt hơn tốc độ thay đổi biến thiên. Suy cho cùng, dữ liệu thế giới thực rất nhiễu và hành vi người tiêu dùng rất phức tạp. Dẫu vậy, thường có cách để tuyến tính hóa một đường cong phi tuyến, như tôi sẽ minh họa sau.
Đường cầu cá nhân so với đường cầu thị trường
Chúng ta cũng có thể so sánh sự khác biệt về cầu ở cấp độ người tiêu dùng và thị trường. Đường cầu cá nhân biểu diễn mối quan hệ giữa giá của một sản phẩm và lượng cầu của một người tiêu dùng cụ thể. Nó phản ánh sở thích cá nhân và mức sẵn sàng chi trả.
Đường cầu thị trường tổng hợp cầu từ tất cả người tiêu dùng trong một thị trường. Nó cộng gộp các đường cầu cá nhân, cho thấy tổng lượng cầu tại mỗi mức giá. Vì cách xây dựng như vậy, các đường cầu thị trường được doanh nghiệp dùng để ước lượng tiềm năng thị trường.
Đường cầu so với đường cung
Nếu bạn đang nghiên cứu đường cầu, có thể bạn cũng đã nghe về cái gọi là đường cung. Về cơ bản, đường cung và đường cầu là hai mặt của cùng một đồng xu. Trong khi đường cầu cho thấy người tiêu dùng sẵn sàng mua bao nhiêu ở các mức giá khác nhau, đường cung thể hiện người sản xuất sẵn sàng bán bao nhiêu ở cùng các mức giá đó.
Nếu bạn vẽ cả đường cầu và đường cung trên cùng một đồ thị, bạn sẽ thấy điểm chúng cắt nhau. Giao điểm này, gọi là điểm cân bằng, được cho là xác định mức giá và lượng của thị trường. Vậy nên, khi cầu vượt cung, giá có xu hướng tăng, tạo động lực cho nhà sản xuất tăng sản lượng. Nhưng khi cung vượt cầu, giá giảm, khuyến khích mua nhiều hơn.
Đường cầu so với đường cung. Ảnh: Tác giả.
Ứng dụng đường cầu trong khoa học dữ liệu
Có rất nhiều cách khác nhau để tận dụng đường cầu nhằm đưa ra quyết định kinh doanh. Ở đây, tôi sẽ hướng dẫn bạn một cách cụ thể để làm cho đường cầu trở nên hữu ích: Chúng ta sẽ dùng dữ liệu để tạo cả đường cầu và mô hình cầu bằng kỹ thuật hồi quy bậc hai. Tôi sẽ chỉ ra cách bạn có thể áp dụng kỹ thuật này trong cả R và SQL, nơi nó có thể được dùng trong dashboard tương tác của Power BI hoặc Tableau.
Trước khi tiếp tục, tôi muốn nói rằng, nếu bạn đang đọc và nghĩ rằng bạn muốn nâng cao kỹ năng cho cả một đội ngũ cùng lúc, như một bộ phận nhà phân tích kinh doanh hoặc nhà khoa học dữ liệu, DataCamp for Business luôn sẵn sàng hỗ trợ. Chúng tôi sẽ giúp đội ngũ của bạn xây dựng các kỹ năng và kỹ thuật hữu ích trong bối cảnh kinh doanh cụ thể của bạn. Nhiều dự án phân tích dữ liệu chuyên sâu đòi hỏi nhiều người đóng góp – hãy liên hệ với đội ngũ DataCamp để tìm hiểu thêm.