1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI TẬP LỚN SỐ 2 MÔN XÁC SUẤT THỐNG KÊ

16 76 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 591,48 KB

Nội dung

Dựa trên kết quả thu được, ta nhận thấy có các giá trị khuyết tại biến price.. Ta có các phương pháp xử lý các giá trị khuyết như sau: Phương pháp 01: Deletionxoá: phương p

Trang 1

ĐẠI HỌC QUỐC GIA ĐẠI HỌC BÁCH KHOA TP HỒ CHÍ MINH



BÀI TẬP LỚN SỐ 2 MÔN XÁC SUẤT THỐNG KÊ

ĐỀ TÀI:

L P L10 - NHÓM 1 - HK 202

Gi ng viên h ng d n: Nguy n ình Huy ả ướ ẫ ễ Đ

Thành phố Hồ Chí Minh – 2021

Trang 2

Bài tập 1 Tập tin "gia_nha.csv" chứa thông tin về giá bán ra thị trường (đơn vị đô la)

của 21613 ngôi nhà ở quân King nước Mỹ trong khoảng thời gian từ tháng 5/2014 đến 5/2015 Bên cạnh giá nhà, dữ liệu còn bao gồm các thuộc tính mô tả chất lượng ngôi nhà Dữ liệu gốc được cung cấp tại:

https://www.kaggle.com/harlfoxem/housesalesprediction

price: Giá nhà được bán ra

sqft_living15: Diện tích trung bình của 15 ngôi nhà gần nhất trong khu dân cư

floors: Số tầng của ngôi nhà được phân loại từ 1-3.5

condition: Điều kiện kiến trúc của ngôi nhà từ 1 − 5, 1: rất tệ và 5: rất tốt

sqft_above: Diện tích ngôi nhà

sqft_living: Diện tích khuôn viên nhà

1.Đọc dữ liệu (Import data): Hãy dùng lệnh read.csv() để đọc tệp tin

Thực hiện dòng lệnh:

>data= read.csv("D:/gia_nha.csv", header=T)

>attach(data)

Giải thích: Đọc tệp tin và lưu dữ liệu với tên là: “data”

Đưa dataframe “data” vào hệ thống

2.Làm sạch dữ liệu (Data cleaning):

a) Hãy trích ra một dữ liệu con đặt tên là new_DF chỉ bao gồm các biến chính mà ta

quan tâm như đã trình bày trong phần giới thiệu dữ liệu Từ câu hỏi này về sau, mọi

yêu cầu xử lý đều dựa trên tập dữ liệu con new_DF này

Thực hiện dòng lệnh:

>new_DF = data.frame(price,sqft_living15,floors,condition,sqft_above,sqft_living)

>detach(data)

>attach(new_DF)

b) Kiểm tra các dữ liệu bị khuyết trong tập tin (Các câu lênh tham khảo: is.na(), which(), apply()) Nếu có dữ liệu bị khuyết, hãy đề xuất phương pháp thay thế cho những dữ liệu bị khuyết này

Dữ liệu khuyết (missing data): Dữ liệu bị thiếu (missing values) đóng một vai trò quan trọng trong thống kê và phân tích dữ liệu Thông thường, missing values không nên bị bỏ qua mà cần được nghiên cứu cẩn thận để xem xét xem điều gì khiến cho các missing values này bị thiếu Trong R, NA được sử dụng để thể hiện các giá trị không tồn tại (not available) hay bị thiếu (missing) theo nghĩa thống kê Kí hiệu: TRUE Xác định các dữ liệu bị khuyết trong tập tin:

Thực hiện dòng lệnh:

>apply(is.na(new_DF), 2, which)

Kết quả thu được:

Trang 3

Dựa trên kết quả thu được, ta nhận thấy có các giá trị khuyết tại biến price Do đó, ta cần xử đưa ra các phương pháp cho các giá trị khuyết đó

Ta có các phương pháp xử lý các giá trị khuyết như sau:

Phương pháp 01: Deletion(xoá): phương pháp này được dùng khi khi xác suất thiếu

biến là như nhau cho tất cả các quan sát Phương pháp này được thực hiện bởi 2 cách: List Wise Deletion and Pair Wise Deletion

 List wise deletion: xóa các quan sát mà bất kỳ biến nào bị thiếu, nhưng phương pháp này có một lỗ hỗng bởi việc xoá quan sát cua bất cứ biến nào bị thiếu này sẽ làm giảm sức mạnh của mô hình vì nó xóa toàn bộ hàng quan sát trong đó dữ liệu bị thiếu

 Pair Wise Deletion: chúng ta sẽ thực hiện phân tích với tất cả các trường hợp có các biến quan tâm Ưu điểm của phương pháp này là, nó giữ được nhiều trường hợp có sẵn để phân tích Một trong những nhược điểm của phương pháp này, nó sử dụng cỡ mẫu khác nhau cho các biến khác nhau

Phương pháp 02: Mean/ Mode/ Median Imputation: là một phương pháp để điền vào

các giá trị còn thiếu với các giá trị ước tính Mục tiêu là sử dụng các mối quan hệ đã biết có thể được xác định trong các giá trị hợp lệ của tập dữ liệu để hỗ trợ ước tính cho các giá trị còn thiếu Mean/ Mode/ Median Imputation là một trong những phương pháp được sử dụng thường xuyên nhất Ta có hai cách sử dụng:

 Generalized Imputation: Trong trường hợp này, ta tính giá trị trung bình hoặc trung vị cho tất cả các giá trị không bị thiếu của biến đó sau đó thay thế giá trị bị thiếu bằng giá trị trung bình hoặc trung vị

 Similar case Imputation: trong trường hợp này, ta cũng tính các giá trị trung bình nhưng các giá trị này sẽ được tính riêng lẻ theo từng đối tượng của các giá trị không bị thiếu , sau đó thay các giá trị trung bình đã được tính theo từng đối tượng trước đó

Phương pháp 03: Prediction Model (mô hình dự đoán): tạo mô hình dự đoán để ước

tính các giá trị sẽ thay thế dữ liệu bị thiếu Trong trường hợp này, chia tập dữ liệu của mình thành hai tập: Một tập không có giá trị bị thiếu cho biến và một tập khác có giá trị bị thiếu Tập dữ liệu đầu tiên trở thành tập dữ liệu huấn luyện của mô hình trong khi

Trang 4

thiếu được coi là biến mục tiêu Tiếp theo, chúng tôi tạo một mô hình để dự đoán biến mục tiêu dựa trên các thuộc tính khác của tập dữ liệu huấn luyện và điền các giá trị còn thiếu của tập dữ liệu thử nghiệm

Phương pháp 4: KNN Imputation: Trong phương pháp này gán giá trị , các giá trị bị

thiếu của một thuộc tính được gán bằng cách sử dụng một số thuộc tính đã cho giống nhất với thuộc tính có giá trị bị thiếu Sự giống nhau của hai thuộc tính được xác định bằng cách sử dụng hàm khoảng cách

Tóm lại, mặc dù R có nhiều cách khác nhau để thay các dữ liệu khuyết Nhưng, với những ưu nhược điểm của từng phương pháp thì trong trường hợp này, ta sẽ chọn thay giá trị trung bình của của tất cả giá trị không bị khuyết của biến price vào các giá trị khuyết

3 Làm rõ dữ liệu (Data Visualization)

a) Chuyển đổi các biến price, sqft_living15, sqft_above, sqft_living lần lượt thành

log(price), log(sqft_living15), log(sqft_above), log(sqft_living) Từ đây mọi sự tính toán với các biến trên được hiểu là đã qua đổi biến dạng log

Ý tưởng: Áp dụng hàm log() cho các cột 1, 2, 5, 6 (tương ứng với các biến liên tục

price, sqft_living15, sqft_above, sqft_living) và lưu lại vào new_DF để tiếp tục sử dụng cho những câu sau

Thứ tự thực hiện:

> new_DF[, c(1,2,5,6)] = log(new_DF[, c(1,2,5,6)])

Kết quả:

b) Đối với các biến liên tục, biến các giá trị thông kê mô tả bao gồm: trung bình, trung

vị, độ lệch chuẩn, giá trị lớn nhất và giá trị nhỏ nhất Xuất kết quả dưới dạng bảng

(hàm gợi ý: mean(), median(), sd(), min(), max(), apply(), as.data.frame(),

rownames()).

Ý tưởng: Dùng các hàm mean(), median(), sd(), min(), max() để tính các giá trị trung

bình, trung vị, độ lệch chuẩn, giá trị lớn nhất và giá trị nhỏ nhất theo cột, sau đó ghép các giá trị này với nhau

Trang 5

Thứ tự thực hiện:

> mean = apply(new_DF[, c(1,2,5,6)], 2, mean)

> median = apply(new_DF[, c(1,2,5,6)], 2, median)

> sd = apply(new_DF[, c(1,2,5,6)], 2, sd)

> max = apply(new_DF[, c(1,2,5,6)], 2, max)

> min = apply(new_DF[, c(1,2,5,6)], 2, min)

Ta lần lượt dùng hàm apply() để tính các hàm mean(), median(), sd(), min(), max()

theo cột (tham số 2 truyền vào), áp dụng với các cột thứ 1, 2, 5, 6 (tương ứng với các thuộc tính price, sqft_living15, sqft_above, sqft_living) và lưu các vector trả về vào các biến tương ứng mean, median, sd, max, min

> describe = cbind(mean, median, sd, max, min)

> as.data.frame(describe)

Khi đã có các giá trị cần thiết, ta ghép các vector thành một bảng bằng hàm cbind(), rồi ép kiểu sang kiểu data frame bằng hàm as.data.frame().

Kết quả:

c) Đối với các biến phân loại, hãy lập một bảng thống kê số lượng cho từng loại.

Ý tưởng: Sử dụng hàm table() cho các biến phân loại floors, condition.

Thứ tự thực hiện:

> table(floors)

>table(condition)

Kết quả:

d) Hãy dùng hàm hist() để vẽ đồ thị phân phối cho biến price.

Trang 6

Thứ tự thực hiện:

> hist(price,breaks=100,main="Biểu đồ phân phối Price")

Ta truyền vào các tham số breaks = 100 để chia biểu đồ thành nhiều cột hơn, và các tham số còn lại là các nhãn cho trục x, y và tên biểu đồ

Kết quả:

f) Hãy dùng hàm boxplot() vẽ phân phối của biến price cho từng nhóm phân loại của

biến floors và biến condition

Vẽ biểu đồ Boxplot của biến price cho từng nhóm phân loại của biến floors

Thực hiện dòng lệnh:

>boxplot(price~floors)

Kết quả:

Trang 7

Vẽ biểu đồ Boxplot cho biến price cho từng nhóm phân loại của biến condition Thực hiện dòng lệnh:

>boxplot(price~condition)

Kết quả:

Trang 8

g) Dùng lệnh pairs() vẽ các phân phối của biến price lần lượt theo các biến

sqft_living15, sqft_above, và sqft_living

Vẽ các phân phối của biến price theo biến sqft_living15

Thực hiện dòng lệnh:

>pairs(price~sqft_living15)

Kết quả:

Trang 9

Vẽ các phân phối của biến price theo biến sqft_above Thực hiện dòng lệnh:

>pairs(price~sqft_above)

Kết quả:

Vẽ các phân phối của biến price theo biến sqft_living Thực hiện dòng lênh:

>pairs(price~sqft_living)

Kết quả:

Trang 10

4 Xây dựng các mô hình hồi quy tuyến tính (Fitting linear regression models):

Chúng ta muốn khám phá rằng có những nhân tố nào và tác động như thế nào đến giá nhà ở quận King

a) Xét mô hình hồi quy tuyến tính bao gồm biến price là một biến phụ thuộc, và tất cả các biến còn lại đều là biến độc lập Hãy dùng lệnh lm() để thực thi mô hình hồi quy tuyến tính bội

Xét mô hình:

 price: biến liên tục

 sqft_living15: biến liên tục

 floors: biến phân loại

 condition: biến phân loại

 sqft_above: biến liên tục

 sqft_living: biến liên tục

Thực hiện các dòng lệnh:

>floors=as.factor(floors)

>condition=as.factor(condition)

Ý nghĩa: thay các biến floors và condition thành biến nhân tố

Xây dựng mô hình 1:

>M1=lm(price ~ sqft_living15 + floors + condition + sqft_above + sqft_living)

>summary(M1)

Kết quả:

Trang 11

b).Dựa vào kết quả của mô hình hồi quy tuyến tính trên, những biến nào bạn sẽ loại khỏi mô hình tương ứng với mức ý nghĩa 5% và 1%?

Giả thiết: H0 Các hệ số hồi quy đều không có ý nghĩa thống kê

 Với mức tin cậy 5% : Các biến Condition2, condition3, condition4, condition5 có Pr(>|t|>0,05) nên ta chấp nhận giả thuyết H0 Các biến condition2, condition3, conditon4, condition5 bị loại khỏi mô hình với mức tin cậy 5%

 Với mức tin cậy 1%: Các biến Condition2, condition3, condition4, condition5 có Pr(>|t|>0,01) nên ta chấp nhận giả thuyết H0 Các biến condition2, condition3, conditon4, condition5 bị loại khỏi mô hình với mức tin cậy 1%

c).Xét 2 mô hình tuyến tính cùng bao gồm biến price là biến phụ thuộc nhưng:

 Mô hình M1 chứa tất cả các biến còn lại là biến độc lập

 Mô hình M2 là loại bỏ biến condition từ mô hình M1

Hãy dùng lệnhh anova() để đề xuất mô hình hồi quy hợp lý hơn

Xây dựng mô hình 2:

Thực hiện dòng lệnh:

>M2= lm(price~sqft_living15 +floors+ sqrt_above+sqft_living)

>summary(M2)

Kết quả:

Trang 12

Phân tích ANOVA:

Xét mô hình M1 và M2:

thực hiện dòng lệnh:

>anova(M1,M2)

Kết quả:

Nhận xét: sau khi phân tích ANOVA 2 mô hình M1, M2 theo kết quả thu được thì Pr(>|t|)=2.2e-16 Chọn mức ý nghĩa 0.05 thì PR(>|t|)< 0,05 Vậy mô hình M1, M2 khác nhau Nhưng biến loại bỏ đi từ mô hình M1 là biến “ condition” không có ý nghĩa thống kê nên ta chọn mô hình M1 tốt hơn M2

 Chọn mô hình M1 là tốt nhất

d) Chọn mô hình hợp lý hơn từ câu (c) hãy suy luận sự tác động của các biến lên giá nhà

Mô hình hồi quy tuyến tính hợp lý nhất là mô hình M1

Kết quả của mô hình M1:

Trang 13

Nhận xét: Các biến sqft_living15, floors1.5, floors2, floors2.5, floors3, floors 3.5, sqft_above, sqft_living có ý nghĩa thống kê cao đối với biến price (giá cả), có nghĩa

là những sự thay đổi của các biến này có ảnh hưởng nhiều đến sự thay đổi đến giá nhà

Còn các biến condition1, condition2, condition3 không có ảnh hưởng đến giá nhà.

e) Từ mô hình mà bạn chọn ở câu (c) hãy dùng lệnh plot() để vẽ đồ thị biểu thị sai số hồi quy (residuals) và giá trị dự báo (fitted values) Nêu ý nghĩa và nhận xét đồ thị Thực hiện dòng lệnh:

>plot(fitted(M1),resid(M1))

>plot(M1,which=1)

Kết quả:

Trang 14

Nhận xét: Đường hồi quy màu đỏ trên mô hình vẽ gần sát với đường Residuals = 0e+00

Ý nghĩa: Đường hồi quy gần với đường sai số hồi quy Residuals = 0 chứng tỏ mô hình M1 ta chọn ở câu (c) là mô hình hợp lý nhất

5.Dự báo (Predictions):

Từ mô hình bạn chọn trong câu (c), hãy dùng lệnh predict() để dự báo giá nhà tại 2 thuộc tính như sau:

x1: sqft_living15 = mean(sqft_living15), sqft_above = mean(sqft_above), sqft_living

= mean(sqft_living), floor = 2, condition = 3

x2: sqft_living15 = max(sqft_living15), sqft_above = max(sqft_above), sqft_living = max(sqft_living), floor = 2, condition = 3

 So sánh khoảng tin cậy cho 2 giá trị dự báo này

Nhập:

X1 = data.frame(sqft_living15 = mean(sqft_living15), sqft_above =

mean(sqft_above), sqft_living = mean(sqft_living), floors = “2”, condition =

“3”)

Mục đích: tạo thuộc tính X1.

predict(m1,X1, “interval=confidence”)

Mục đích: Dự báo giá nhà tại thuộc tính X1.

Trang 15

Nhập:

X2 = data.frame(sqft_living15 = max(sqft_living15), sqft_above = max(sqft_above), sqft_living = max(sqft_living), floors = "2", condition =

"3")

Mục đích: tạo thuộc tính X2.

predict(m1,X2, “interval=confidence”)

Mục đích: Dự báo giá nhà tại thuộc tính X2.

Kết quả:

 Dựa vào kết quả, ta thấy độ tin cậy của X1 rộng hơn X2.

Trang 16

TÀI LIỆU THAM KHẢO

1 Nguyễn Đình Huy Đậu Thế Cấp, Lê Xuân Đại (2019) Giáo trình Xác suất và thống kê, NXB Đại học Quốc gia TP Hồ Chí Minh

2 Hossein Pishro-Nik ( 2016) Introduction to probability, statistics, and random processes

3 Rstudio pubs static (12/07/2019) Predict House sale prices using Multiple Linear Regression Truy cập từ

http://rstudio-pubs-static.s3.amazonaws.com/492324_a794047954284fdbbb5efd06 31be458c.html

4 Ngyễn Văn Tuấn (2013) Phân tích số liệu và biểu đồ bằng R Truy cập từ

https://cran.r-project.org/doc/contrib/Intro_to_R_Vietnamese.pdf

5 Long's blog (2019) Mô hình hồi quy ứng dụng trong bài toán dự đoán giá bất động sản – Machine Learning Truy cập từ https://bitly.com.vn/qxji22

Ngày đăng: 11/04/2022, 21:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w