1 Tình huống:

Một nhà đầu tư muốn thuê một căn hộ full đồ để làm AirBnb, chi phí đầu tư tối đa là 15 triệu/tháng, trong 5 quận nội thành: Hoàn Kiếm, Ba Đình, Đống Đa, Hai Bà Trưng Tây Hồ.

Các giả định:

  1. Chi phí duy trì (truyền hình cáp, internet và khấu hao) là 1 triệu/tháng.
  2. Chi phí điện nước cho mỗi phòng ngủ1 triệu/tháng.
  3. Những căn có 2 phòng ngủ giá từ 7 triệu/tháng trở xuống hoặc có 3 phòng ngủ giá từ 10 triệu/tháng trở xuống là những căn ở vị trí rất xa trung tâm hoặc chất lượng rất tồi hoặc là tin scam nên cần được loại

2 Dữ liệu

2.1 Dữ liệu thống kê thu thập từ AirBnb

Dữ liệu được thu thập qua airdna.co - công cụ phân tích tổng hợp dữ liệu AirBnb.

2.1.1 Các dữ liệu được thu thập

  1. giaairbnb - Giá cho thuê trung bình (triệu/ngày).
  2. tysuatdatphong - Tỷ suất đặt phòng trung bình.

2.1.2 Kết quả thu thập

# Import du lieu
airbnb_data <- read.csv("airdna.csv", header = T) %>% 
  filter(sophongngu > 0)

airbnb_data$giaairbnb <- airbnb_data$giaairbnb/1000000

airbnb_data %>% head(4)
##        quan sophongngu giaairbnb tysuatdatphong
## 1 Hoàn Kiếm          1     0.790           0.59
## 2 Hoàn Kiếm          2     0.947           0.62
## 3 Hoàn Kiếm          3     1.564           0.73
## 4    Tây Hồ          1     0.799           0.35

2.2 Dữ liệu về căn hộ cho thuê thu thập từ trang web thông tin bất động sản

Dữ liệu được thu thập bằng cách scrape trang batdongsan.com. Các tin đăng được thu thập là các căn hộ cho thuê tại Hà nội có khoảng giá không quá 15 triệu/tháng.

2.2.1 Các dữ liệu được thu thập

  1. matindang: Mã tin đăng (Mã này là độc nhất cho mỗi tin đăng trên batdongsan.com).
  2. quan: Khu vực (Quận: Hoàn Kiếm, Ba Đình, Đống Đa, Hai Bà Trưng Tây Hồ).
  3. sophongngu: Số phòng ngủ.
  4. gia: Giá tiền (triệu/tháng).
  5. dientich: Diện tích (m2).
  6. fullnoithat: Có full đồ hay không (bằng cách tìm keyword đầy đủ nội thất, đủ đồ, full đồ, nội thất đầy đủ, full nội thất trong nội dung tin đăng).

2.2.2 Kết quả thu thập

# Import du lieu
rawdata <- read.csv("data.csv", header = T);

rawdata %>% 
  select(matindang, quan, gia, sophongngu, dientich, date, fullnoithat) %>% 
  head(4);
##   matindang      quan gia sophongngu dientich       date fullnoithat
## 1  16007038 Hoàn Kiếm 5.0         NA       35 22/05/2018            
## 2  14143675 Hoàn Kiếm 2.2         NA       16 23/05/2018            
## 3  16528829 Hoàn Kiếm 8.0         NA       NA 25/06/2018            
## 4  16966316 Hoàn Kiếm 4.5          2       38 30/07/2018     full đồ

Lọc bỏ các căn không full đồ hoặc thiếu thông tin số phòng ngủ, diện tích hoặc nằm trong giả thiết 3 hoặc được đăng trước năm 2018.

data <- rawdata %>% 
  # Loai bo cac can ho khong full noi that
  filter(fullnoithat != '') %>%
  # Loai bo cac can ho khong co thong tin so phong ngu, dien tich
  filter(sophongngu != 'NA' & dientich != 'NA') %>% 
  # Loai bo cac can ho duoc dang truoc nam 2018
  filter(as.Date(date, format="%d/%m/%Y") >= as.Date("01/01/2018", format="%d/%m/%Y")) %>% 
  # Loai bo cac can nam trong gia thiet 3
  filter(!(gia <= 7 & sophongngu >= 2)) %>% 
  filter(!(gia <= 10 & sophongngu == 3)) %>% 
  # Lay cac cot can dung
  select(matindang, quan, gia, sophongngu, dientich, date);

head(data, 4);
##   matindang      quan  gia sophongngu dientich       date
## 1   8340768 Hoàn Kiếm  6.5          1       45 25/07/2018
## 2  16959591 Hoàn Kiếm  7.0          1       50 25/07/2018
## 3  15184016 Hoàn Kiếm 10.0          1       50 26/07/2018
## 4  12533324 Hoàn Kiếm  8.0          1       55 29/07/2018

3 Phân Tích

3.1 Lợi nhuận

Để tính lợi nhuận, trước hết ta cần biết giá thuê AirBnb và tỷ suất đặt phòng cho mỗi căn hộ.

data <- data %>% 
  merge(airbnb_data, by=c("quan", "sophongngu"))

data %>% 
  select(matindang, quan, sophongngu, giaairbnb, tysuatdatphong) %>% 
  head(4)
##   matindang    quan sophongngu giaairbnb tysuatdatphong
## 1  13920778 Ba Đình          1      0.73           0.39
## 2  16102305 Ba Đình          1      0.73           0.39
## 3  15877394 Ba Đình          1      0.73           0.39
## 4  15265126 Ba Đình          1      0.73           0.39

Lợi nhuận của mỗi căn hộ được tính như sau:

Doanh thu = Giá AirBnb trung bình * 30 ngày/tháng * Tỷ suất đặt phòng trung bình
Chi phí = Chi phí duy trì + Số phòng ngủ * Chi phí điện nước +
Lợi nhuận = Doanh thu - Giá thuê - Chi phí
ROCE = Lợi nhuận / Giá thuê
# Tinh loi nhuan
data$loinhuan <- data$giaairbnb * 30 * data$tysuatdatphong -                     data$gia - data$sophongngu * chi_phi_dien_nuoc                  - chi_phi_dich_vu;

data$roce <- data$loinhuan/data$gia;

data %>% 
  select(matindang, quan, sophongngu, giaairbnb, tysuatdatphong,   loinhuan, roce) %>% 
  head(4);
##   matindang    quan sophongngu giaairbnb tysuatdatphong loinhuan
## 1  13920778 Ba Đình          1      0.73           0.39   -1.459
## 2  16102305 Ba Đình          1      0.73           0.39   -2.459
## 3  15877394 Ba Đình          1      0.73           0.39    2.541
## 4  15265126 Ba Đình          1      0.73           0.39   -6.459
##         roce
## 1 -0.1823750
## 2 -0.2732222
## 3  0.6352500
## 4 -0.4968462

Chúng ta không cần quan tâm tới các căn không có lãi (lợi nhuận không dương).

data <- data %>% filter(loinhuan > 0);

data %>% 
  select(matindang, quan, sophongngu, giaairbnb, tysuatdatphong, loinhuan, roce) %>% 
  head(4);
##   matindang    quan sophongngu giaairbnb tysuatdatphong loinhuan
## 1  15877394 Ba Đình          1     0.730           0.39   2.5410
## 2  17006426 Ba Đình          1     0.730           0.39   0.5410
## 3   9701025 Ba Đình          1     0.730           0.39   0.0410
## 4  16953482 Ba Đình          3     2.258           0.38   7.7412
##          roce
## 1 0.635250000
## 2 0.090166667
## 3 0.006307692
## 4 0.552942857

3.2 Danh sách căn hộ nên chọn thuê

3.2.1 Xét theo lợi nhuận tối đa

Bằng cách sắp xếp các tin đăng theo lợi nhuận giảm dần , chúng ta có thể đưa ra lựa chọn là các căn có lợi nhuận cao nhất.

data %>% 
  arrange(desc(loinhuan)) %>% 
  select(matindang, quan, sophongngu, dientich, gia, loinhuan, roce) %>% 
  head(10);
##    matindang         quan sophongngu dientich  gia loinhuan      roce
## 1   17006638 Hai Bà Trưng          3      100 11.0  15.3912 1.3992000
## 2   16957302 Hai Bà Trưng          3      114 14.0  12.3912 0.8850857
## 3   16802139 Hai Bà Trưng          3      114 14.0  12.3912 0.8850857
## 4   17005183 Hai Bà Trưng          3      120 14.0  12.3912 0.8850857
## 5   16840026 Hai Bà Trưng          3      173 14.0  12.3912 0.8850857
## 6   16953482      Ba Đình          3      112 14.0   7.7412 0.5529429
## 7   16954681      Ba Đình          3      115 14.0   7.7412 0.5529429
## 8   16958274 Hai Bà Trưng          2       70  7.5   5.7456 0.7660800
## 9   16973277 Hai Bà Trưng          2       70  7.5   5.7456 0.7660800
## 10   8340768    Hoàn Kiếm          1       45  6.5   5.4830 0.8435385

3.2.2 Xét theo ROCE tối đa

Bằng cách sắp xếp các tin đăng theo roce giảm dần , chúng ta có thể đưa ra lựa chọn là các căn có tỷ lệ sinh lời trên vốn bỏ ra cao nhất.

data %>% 
  arrange(desc(roce)) %>% 
  select(matindang, quan, sophongngu, dientich, gia, loinhuan, roce) %>% 
  head(10);
##    matindang         quan sophongngu dientich  gia loinhuan      roce
## 1   17006638 Hai Bà Trưng          3      100 11.0  15.3912 1.3992000
## 2   11557640      Đống Đa          1       35  4.0   4.0632 1.0158000
## 3   14522501      Đống Đa          1       35  4.0   4.0632 1.0158000
## 4   16957302 Hai Bà Trưng          3      114 14.0  12.3912 0.8850857
## 5   16802139 Hai Bà Trưng          3      114 14.0  12.3912 0.8850857
## 6   17005183 Hai Bà Trưng          3      120 14.0  12.3912 0.8850857
## 7   16840026 Hai Bà Trưng          3      173 14.0  12.3912 0.8850857
## 8    8340768    Hoàn Kiếm          1       45  6.5   5.4830 0.8435385
## 9   13257852      Đống Đa          1       35  4.5   3.5632 0.7918222
## 10  16958274 Hai Bà Trưng          2       70  7.5   5.7456 0.7660800

3.3 Tiêu chí tìm kiếm căn hộ

Một trang bất động sản thì không phải lúc nào cũng có tất cả các căn hộ và không phải tin đăng nào cũng chưa có người thuê. Do đó chúng ta cần đưa ra những tiêu chí khi tìm kiếm căn hộ.

3.3.1 Khu vực tìm kiếm

Bằng việc nhóm các tin đăng theo quận, chúng ta có thể thấy mặt bằng chung về lợi nhuận của các tin đăng trên mỗi khu vực quận tại Hà Nội.

3.3.1.1 Xét theo lợi nhuận

data %>% 
  group_by(quan) %>% 
  summarise_at(vars(loinhuan), funs(mean, median, min, max));
## # A tibble: 5 x 5
##   quan          mean median    min    max
##   <fct>        <dbl>  <dbl>  <dbl>  <dbl>
## 1 Ba Đình      3.72   2.54  0.041   7.74 
## 2 Đống Đa      1.73   1.50  0.0632  4.06 
## 3 Hai Bà Trưng 3.42   2.25  0.246  15.4  
## 4 Hoàn Kiếm    3.67   4.30  0.983   5.48 
## 5 Tây Hồ       0.433  0.233 0.233   0.733
anova <- data %>%
  select(quan, loinhuan)

model <- aov(loinhuan ~ quan, data = anova)
summary(model)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## quan         4   84.7  21.175   2.432 0.0532 .
## Residuals   90  783.5   8.706                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(model)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = loinhuan ~ quan, data = anova)
## 
## $quan
##                               diff        lwr       upr     p adj
## Đống Đa-Ba Đình        -1.98781333 -6.0257803 2.0501536 0.6480062
## Hai Bà Trưng-Ba Đình   -0.30296000 -4.1397114 3.5337914 0.9994718
## Hoàn Kiếm-Ba Đình      -0.04954667 -5.0233671 4.9242737 0.9999999
## Tây Hồ-Ba Đình         -3.28788000 -8.4828660 1.9071060 0.4021315
## Hai Bà Trưng-Đống Đa    1.68485333 -0.3246141 3.6943207 0.1437589
## Hoàn Kiếm-Đống Đa       1.93826667 -1.8108915 5.6874249 0.6042181
## Tây Hồ-Đống Đa         -1.30006667 -5.3380336 2.7379003 0.8975670
## Hoàn Kiếm-Hai Bà Trưng  0.25341333 -3.2781120 3.7849387 0.9996383
## Tây Hồ-Hai Bà Trưng    -2.98492000 -6.8216714 0.8518314 0.2022454
## Tây Hồ-Hoàn Kiếm       -3.23833333 -8.2121537 1.7354871 0.3728782

3.3.1.2 Xét theo ROCE

data %>% 
  group_by(quan) %>% 
  summarise_at(vars(roce), funs(mean, median, min, max));
## # A tibble: 5 x 5
##   quan           mean median     min    max
##   <fct>         <dbl>  <dbl>   <dbl>  <dbl>
## 1 Ba Đình      0.368  0.553  0.00631 0.635 
## 2 Đống Đa      0.290  0.196  0.0079  1.02  
## 3 Hai Bà Trưng 0.342  0.243  0.0189  1.40  
## 4 Hoàn Kiếm    0.467  0.480  0.0894  0.844 
## 5 Tây Hồ       0.0566 0.0292 0.0292  0.0978
anova <- data %>%
  select(quan, roce)

model <- aov(roce ~ quan, data = anova)
summary(model)
##             Df Sum Sq Mean Sq F value Pr(>F)
## quan         4  0.535 0.13376   1.541  0.197
## Residuals   90  7.810 0.08678
TukeyHSD(model)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = roce ~ quan, data = anova)
## 
## $quan
##                               diff        lwr        upr     p adj
## Đống Đa-Ba Đình        -0.07761466 -0.4807685 0.32553916 0.9833591
## Hai Bà Trưng-Ba Đình   -0.02570366 -0.4087680 0.35736064 0.9997228
## Hoàn Kiếm-Ba Đình       0.09953703 -0.3970532 0.59612720 0.9806689
## Tây Hồ-Ba Đình         -0.31092801 -0.8295995 0.20774351 0.4582702
## Hai Bà Trưng-Đống Đa    0.05191100 -0.1487158 0.25253782 0.9513066
## Hoàn Kiếm-Đống Đa       0.17715169 -0.1971672 0.55147062 0.6811097
## Tây Hồ-Đống Đa         -0.23331335 -0.6364672 0.16984047 0.4943304
## Hoàn Kiếm-Hai Bà Trưng  0.12524069 -0.2273496 0.47783099 0.8597045
## Tây Hồ-Hai Bà Trưng    -0.28522435 -0.6682887 0.09783996 0.2409262
## Tây Hồ-Hoàn Kiếm       -0.41046504 -0.9070552 0.08612514 0.1541129

3.3.1.3 Ý nghĩa thống kê

p-value xét theo lợi nhuận và tỷ lệ sinh lời đều > 0.05 nên ý nghĩa thống kê của việc lợi nhuận và tỷ lệ sinh lời của căn hộ phụ thuộc vào quận là không cao.

3.3.1.4 Biểu đồ

# Ve bieu do

quan_data <- data %>%
  select(quan, loinhuan, roce) %>% 
  melt(id.vars = c("quan"))

quan_boxplot <- quan_data %>% 
  ggplot(aes(quan, value)) +
  geom_boxplot(aes(fill = quan)) +
  facet_wrap(~variable, scales = "free", nrow = 2) +
  theme(legend.position = "none") +
  labs(x = "",
       y = "")

quan_density <- quan_data %>% 
  ggplot(aes(value)) +
  geom_density(aes(fill = quan),
               alpha = 0.7) +
  facet_wrap(~variable, scales = "free", nrow = 2) +
  coord_flip() +
  theme(legend.position = "none") +
  labs(x = "",
       y = "")

gridExtra::grid.arrange(quan_boxplot,
                        quan_density,
                        ncol=2,
                        bottom = textGrob("Phân phối lợi nhuận và tỷ lệ sinh lời trên từng quận"))

Nhìn vào biểu đồ ta có thể thấy, các căn hộ ở các quận Hoàn Kiếm có mặt bằng chung về lợi nhuận cũng như tỷ lệ sinh lời trên vốn cao hơn đáng kể các quận còn lại.

data %>%
  ggplot(aes(quan)) +
  geom_bar(aes(fill = quan), stat = "count") +
  labs(title="Số căn hộ trên từng quận",
       x = "Quận",
       y = "Số căn hộ")

Tuy nhiên, cần chú ý rằng, số căn hộ tại quận Hoàn Kiếm là ít hơn nhiều so với ở quận Hai Bà Trưng. Quận Hai Bà Trưng cũng có mặt bằng lợi nhuận không quá tệ, cao hơn đáng kể các quận khác, trừ quận Hoàn Kiếm, nhưng phần lớn các căn hộ ở quận này có tỷ lệ sinh lời trên vốn thấp.

Khi nhà đầu tư tìm kiếm căn hộ để thuê, nên ưu tiên tìm kiếm các căn hộ ở khu vực Hoàn Kiếm để có lợi nhất, hoặc Hai Bà Trưng để có nhiều lựa chọn nhất.

3.3.2 Số phòng ngủ

Bằng việc nhóm các tin đăng theo số phòng ngủ, chúng ta có thể sự tương quan giữa số phòng ngủ và lợi nhuận cũng như tỷ lệ sinh lời trên vốn.

3.3.2.1 Xét theo lợi nhuận

data %>% 
  group_by(sophongngu) %>% 
  summarise_at(vars(loinhuan), funs(mean, median, min, max));
## # A tibble: 3 x 5
##   sophongngu  mean median   min   max
##        <int> <dbl>  <dbl> <dbl> <dbl>
## 1          1  1.77   1.46 0.041  5.48
## 2          2  2.41   2.25 0.233  5.75
## 3          3 11.5   12.4  7.74  15.4
anova <- data %>%
  select(sophongngu, loinhuan) %>% 
  mutate(sophongngu = sophongngu %>% as.factor)

model <- aov(loinhuan ~ sophongngu, data = anova)
summary(model)
##             Df Sum Sq Mean Sq F value Pr(>F)    
## sophongngu   2  570.1  285.07   87.98 <2e-16 ***
## Residuals   92  298.1    3.24                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(model)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = loinhuan ~ sophongngu, data = anova)
## 
## $sophongngu
##         diff        lwr       upr     p adj
## 2-1 0.636204 -0.3207562  1.593164 0.2577756
## 3-1 9.721955  7.9274992 11.516411 0.0000000
## 3-2 9.085751  7.3683395 10.803162 0.0000000

3.3.2.2 Xét theo ROCE

data %>% 
  group_by(sophongngu) %>% 
  summarise_at(vars(roce), funs(mean, median, min, max));
## # A tibble: 3 x 5
##   sophongngu  mean median     min   max
##        <int> <dbl>  <dbl>   <dbl> <dbl>
## 1          1 0.303  0.198 0.00631 1.02 
## 2          2 0.267  0.204 0.0189  0.766
## 3          3 0.864  0.885 0.553   1.40
anova <- data %>%
  select(sophongngu, roce) %>% 
  mutate(sophongngu = as.factor(sophongngu))

model <- aov(roce ~ sophongngu, data = anova)
summary(model)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## sophongngu   2  2.235  1.1175   16.82 5.93e-07 ***
## Residuals   92  6.110  0.0664                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(model)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = roce ~ sophongngu, data = anova)
## 
## $sophongngu
##            diff        lwr       upr     p adj
## 2-1 -0.03590889 -0.1729185 0.1011007 0.8071520
## 3-1  0.56042699  0.3035117 0.8173422 0.0000036
## 3-2  0.59633588  0.3504512 0.8422206 0.0000003

3.3.2.3 Ý nghĩa thống kê

p-value xét theo lợi nhuận và tỷ lệ sinh lời đều < 0.001 nên ý nghĩa thống kê của việc lợi nhuận và tỷ lệ sinh lời của căn hộ phụ thuộc vào số phòng ngủ là rất cao.

3.3.2.4 Biểu đồ

# Ve bieu do
sophongngu_data <- data %>%
  select(sophongngu, loinhuan, roce) %>% 
  mutate(sophongngu = sophongngu %>% as.factor) %>%
  melt(id.vars = c("sophongngu"))
  
sophongngu_boxplot <- sophongngu_data %>% 
  ggplot(aes(sophongngu, value)) +
  geom_boxplot(aes(fill = sophongngu)) +
  facet_wrap(~variable, scales = "free", nrow = 2) +
  theme(legend.position = "none") +
  labs(x = "",
       y = "")

sophongngu_density <- sophongngu_data %>% 
  ggplot(aes(value)) +
  geom_density(aes(fill = sophongngu),
               alpha = 0.7) +
  facet_wrap(~variable, scales = "free", nrow = 2) +
  coord_flip() +
  theme(legend.position = "none") +
  labs(x = "",
       y = "")

gridExtra::grid.arrange(sophongngu_boxplot,
                        sophongngu_density,
                        ncol=2,
                        bottom = textGrob("Phân phối lợi nhuận và tỷ lệ sinh lời theo số phòng ngủ"))

Nhìn vào biểu đồ ta có thể thấy căn càng có nhiều phỏng ngủ thì lợi nhuận và tỷ lệ sinh lời trên vốn càng cao. Khi nhà đầu tư tìm kiếm căn hộ để thuê, nên nhắm đến các căn hộ có càng nhiều phỏng ngủ càng tốt, nhất là căn hộ có 3 phòng ngủ.

Việc thuê căn hộ 3 phòng ngủ để làm AirBnb có lợi hơn hết vì mặt bằng chung về lợi nhuận và tỷ lệ sinh lời trên vốn của các căn này cao hơn đáng kể các nhóm căn hộ còn lại. Trong khi đó, độ chênh về lợi nhuận giữa nhóm căn hộ 2 phòng ngủ và 1 phòng ngủ lại không cao, và hầu như không có khác biệt khi tính đến tỷ lệ sinh lời trên vốn.

data %>%
  mutate(sophongngu = sophongngu %>% as.factor) %>%
  ggplot(aes(sophongngu)) +
  geom_bar(aes(fill = sophongngu), stat = "count") +
  labs(title="Số căn hộ theo số phòng ngủ",
       x = "Số phòng ngủ",
       y = "Số căn hộ")

Tuy nhiên cũng cần chú ý rằng có rất ít căn hộ 3 phòng ngủ thỏa mãn các điều kiện được đưa ra, và nhà đầu tư có nhiều cơ hội thuê được căn hộ 2 phòng ngủ hơn.

3.3.3 Tương quan

Do số lượng các căn hộ 3 phòng ngủ là rất nhỏ (chưa đến 10 căn hộ), nhưng giá và diện tích lại chênh khá lớn so với các căn hộ khác, ta loại bỏ các căn hộ này ra khỏi mẫu để đảm bảo ý nghĩa cho tính tương quan. Đồng thời, ta không quan tâm tới sự tương quan với giá cho thuê AirBnb chỉ là giá trị được tính toán từ giá trị thống kê trung bình của AirDna, không phải số liệu thống kê.

data <- data %>% 
  filter(sophongngu < 3)

data %>% 
  select(quan, sophongngu, loinhuan, roce, gia) %>% 
  mutate(sophongngu = sophongngu %>% as.factor) %>%
  melt(id.vars = c("quan", "sophongngu", "gia")) %>%
  ggplot(aes(gia, value)) +
  geom_point(aes(col = sophongngu, shape = sophongngu, size = 1)) + 
  geom_line() +
  facet_wrap(~variable+quan, scales = "free", nrow = 2) +
  labs(title = "Tương quan giá căn hộ với lợi nhuận và tỷ lệ sinh lời trên từng quận",
       x = "Giá",
       y = "")

Biểu đồ cho thấy sự nổi bật rõ ràng của các căn hộ tại hai quận Hai Bà Trưng và Hoàn Kiếm như đã đề cập ở mục trước. Ta cũng có thể thây ở khoảng giá từ 6 đến 10 triệu/tháng có thể tìm kiếm các căn 1 phòng ngủ tại quận Hoàn Kiếm và 2 phòng ngủ tại quận Hai Bà Trưng để có mức lợi nhuận tốt.

3.3.3.1 Tương quan tuyến tính

cor_data <- data %>%
  select(quan, loinhuan, roce, gia, dientich) 

cor_data %>% 
  select(loinhuan, roce, gia, dientich) %>% 
  cor()
##            loinhuan       roce        gia   dientich
## loinhuan  1.0000000  0.9150242 -0.2907692  0.1217776
## roce      0.9150242  1.0000000 -0.5145234 -0.1005009
## gia      -0.2907692 -0.5145234  1.0000000  0.6662951
## dientich  0.1217776 -0.1005009  0.6662951  1.0000000
cor_data %>% 
  ggpairs(columns = 2:5, 
          mapping = aes(colour = quan),
          upper = list(continuous = "smooth"),
          lower = list(continuous = "cor"),
          title = "Tương quan giá, giá AirBnb, diện tích với lợi nhuận và tỷ lệ sinh lời")

tuongquan_loinhuan <- cor_data %>% 
  melt(id.vars = c("quan", "loinhuan", "roce")) %>%
  ggplot(aes(loinhuan, value)) +
  geom_point(aes(col = quan)) +
  facet_wrap(~variable, scales = "free", nrow = 1) +
  geom_smooth() +
  theme(legend.position = "none") +
  labs(x = "Lợi nhuận",
       y = "")

tuongquan_roce <- cor_data %>% 
  melt(id.vars = c("quan", "loinhuan", "roce")) %>%
  ggplot(aes(roce, value)) +
  geom_point(aes(col = quan)) +
  facet_wrap(~variable, scales = "free", nrow = 1) +
  geom_smooth() +
  theme(legend.position = "none") +
  labs(x = "Tỷ lệ sinh lời",
       y = "")

gridExtra::grid.arrange(tuongquan_loinhuan,
                        tuongquan_roce,
                        nrow=2,
                        bottom = textGrob("Lợi nhuận và tỷ lệ sinh lời theo giá, giá AirBnb và diện tích"))

Về tổng thể, giá cho thuê không có tương quan tuyến tính mạnh với lợi nhuận và và chỉ có tương quan tuyến tính trung bình với tỷ lệ sinh lời. Tuy nhiên, giá cho thuê lại có tương quan tuyến tính mạnh với hai giá trị đó nếu xét theo từng quận. Trong khi đó, diện tích không thể hiện mối quan hệ tuyến tính nào với lợi nhuận và tỷ lệ sinh lời.

3.3.3.2 Hồi quy tuyến tính cho lợi nhuận

Mô hình hồi quy lợi nhuận phụ thuộc và giá cho thuê.

model <- lm(loinhuan ~ gia, data = data)
model %>% summary
## 
## Call:
## lm(formula = loinhuan ~ gia, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.6408 -1.1186 -0.2963  1.2892  3.2711 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.02888    0.67910   5.933 6.08e-08 ***
## gia         -0.20725    0.07354  -2.818  0.00599 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.663 on 86 degrees of freedom
## Multiple R-squared:  0.08455,    Adjusted R-squared:  0.0739 
## F-statistic: 7.943 on 1 and 86 DF,  p-value: 0.00599

Mô hình này có ý nghĩa thống kê khá cao (p-value < 0.01). Kết quả mô hình là: \[loinhuan = 4.02888 - 0.20725 * gia\]

Tuy nhiên lợi nhuận không nhất thiết chỉ phụ thuộc vào giá, thử thiết lập với mô hình đa biến bao gồm biến giá và diện tích, ta có mô hình như sau:

model <- lm(loinhuan ~ gia + dientich, data = data)
model %>% summary
## 
## Call:
## lm(formula = loinhuan ~ gia + dientich, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.2383 -0.8355 -0.2399  1.0285  2.9828 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.560192   0.621274   5.730 1.49e-07 ***
## gia         -0.476717   0.088968  -5.358 7.08e-07 ***
## dientich     0.045303   0.009966   4.546 1.80e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.5 on 85 degrees of freedom
## Multiple R-squared:  0.2636, Adjusted R-squared:  0.2462 
## F-statistic: 15.21 on 2 and 85 DF,  p-value: 2.254e-06

Mô hình này có ý nghĩa thống kê cao hơn cả mô hình đơn biến (p-value < 0.001). Kết quả mô hình là:

\[loinhuan = 3.560192 - 0.476717 * gia + 0.045303 * dientich\]

3.3.3.3 Hồi quy tuyến tính cho tỷ lệ sinh lời

Mô hình hồi quy tỷ lệ sinh lời phụ thuộc và giá cho thuê.

model <- lm(roce ~ gia, data = data)
model %>% summary
## 
## Call:
## lm(formula = roce ~ gia, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.40432 -0.17014 -0.00918  0.10334  0.46987 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.762405   0.089814   8.489 5.40e-13 ***
## gia         -0.054119   0.009726  -5.565 2.93e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2199 on 86 degrees of freedom
## Multiple R-squared:  0.2647, Adjusted R-squared:  0.2562 
## F-statistic: 30.96 on 1 and 86 DF,  p-value: 2.926e-07

Mô hình này có ý nghĩa thống kê khá cao (p-value < 0.001). Kết quả mô hình là: \[roce = 0.762405 - 0.054119 * gia\]

Tuy nhiên tỷ lệ sinh lời không nhất thiết chỉ phụ thuộc vào giá, thử thiết lập với mô hình đa biến bao gồm biến giá và diện tích, ta có mô hình như sau:

model <- lm(roce ~ gia + dientich, data = data)
model %>% summary
## 
## Call:
## lm(formula = roce ~ gia + dientich, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.42841 -0.11497 -0.00057  0.11456  0.46545 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.709284   0.084778   8.366 1.03e-12 ***
## gia         -0.084661   0.012140  -6.973 6.26e-10 ***
## dientich     0.005135   0.001360   3.776 0.000295 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2047 on 85 degrees of freedom
## Multiple R-squared:  0.3703, Adjusted R-squared:  0.3555 
## F-statistic:    25 on 2 and 85 DF,  p-value: 2.898e-09

Mô hình này có ý nghĩa thống kê khá cao (p-value < 0.001). Kết quả mô hình là:

\[roce = 0.709284 - 0.084661 * gia + 0.005135 * dientich\]

4 Kết luận chung

Nhà đầu tư nên tìm kiếm các căn hộ 1 phòng ngủ tại quận Hoàn Kiếm hoặc 2 phòng ngủ tại quận Hai Bà Trưng trong khoảng giá từ 6 đến 10.5 triệu/tháng.