Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
1,12 MB
Nội dung
BÁO CÁO BÀI TẬP LỚN XÁC SUẤT VÀ THỐNG KÊ GVHD: Nguyễn Bá Thi Sinh viên: Trần Lê Trọng Nghĩa MSSV: 1914327 Nhóm: 05 Lớp: L11 Thành phố Hồ Chí Minh - 2021 HỒI QUY TUYẾN TÍNH BỘI Mơ hình biến phụ thuộc với hai nhiều biến độc lập gọi hồi quy bội Phương trình hồi quy tuyến tính bội Y = β0 + β1*X1 + β2*X2 + … + βk*Xk + ε • Với Y : biến phụ thuộc • Xi ( i = 1, …, k) : biến độc lập • β0 : giá trị ước lượng Y Y không phụ thuộc vào Xi ( tức X1 = X2 = … = Xk= 0) • βi ( i = 1, …, k) : hệ số hồi quy riêng, cho thấy ảnh hưởng riêng biến Xi đến Y • ε: sai số ngẫu nhiên thể ảnh hưởng yếu tố khác đến Y Nguồn sai số Bậc tự Tổng số bình Bình Giá trị thống phương phương kê trung bình Hồi quy k SSR MSR=SSR/ k Sai số N-k-1 SSE MSE= SSE/(N-k-1) Tổng cộng N-1 SST = SSR + SSE Giá trị thống kê SSR kF Giá trị R2 hiệu chỉnh 𝑹2 = SST = ( N −k −1 )+ kF Độ lệch chuẩn: 𝑺 = √ SSE N −k −1 F=MSR/MSE Phần chung Bài tập 1: Tập tin”gia_nha.csv” chứa thông tin giá bán thị trường (đơn vị đô la) 21613 nhà quận King nước Mỹ khoảng thời gian từ 5/2014 đến 5/2015 Bên cạnh giá nhà, liệu cịn bao gồm thuộc tính mơ tả chất lượng nhà Dữ liệu gốc cung cấp tại: https://www.kaggle.com/harlfoxem/housesalesprediction Các biến liệu: Price: giá nhà bán Sqft_living15: Diện tích trung bình 15 nhà gần khu dân cư Floors: Số tầng nhà, phân loại từ 1- 3.5 Condition: Điều kiện kiến trúc nhà từ 1-5, 1: tệ 5: tốt Sqft_above: Diện tích ngơi nhà Sqft_living: Diện tích khn viên Câu hỏi: Đọc liệu (Import data) Input: setwd (/Users/trongnghia/Documents/XSTK/BTL2) d=read csv (gia_nha.csv ,header =TRUE) Giải thích: - Tìm thư mục hành chứa file lệnh setwd - Đọc liêu từ tệp “gia_nha.csv” lệnh read.csv() - “header = True” giữ lại tên biến Làm liệu (Data cleaning): (a) Hãy trích liệu đặt tên new_DF bao gồm biến mà ta quan tâm trình bày phần giới thiệu liệu Từ câu hỏi sau, yêu cầu xử lý dựa tập liệu new_DF Input: new DF =d [, c (price , sqft_living15 , floors ,condition , sqft_above , sqft_living)] Giải thích: Dữ liệu đặt tên new_DF bao gồm biến chính: price, sqft_living115, floors, condition, sqft_above, sqft_living (b) Kiểm tra liệu bị khuyết tật tập tin (Các câu lệnh tham khảo: is.na(), which(), apply()) Nếu có liệu bị khuyết tật, đề xuất phương pháp thay cho liệu bị khuyết tật Input: apply (is na(new DF ), , which) colSums (is na (new DF )) Giải thích: - Kiểm tra xuất giá trị khuyết tật biến liệu new_DF (apply) - Xuất số giá trị bị khuyết theo cột (colsums) Output: Theo kết thu được, ta nhận thấy có 20 giá trị bị khuyết biến price ta cần sử lý dựa phương pháp sau: + Phương pháp 1: Delete(xóa): phương pháp sử dụng số giá trị bị khuyết không đáng kể + Phương pháp 2: Mean/ Mode/ Median Imputation: phương pháp để điền vào giá trị thiếu với ước tính định Ta chọn phương pháp xóa quan sát mà biến bị khiếm khuyết Input: new DF =na omit( new DF ) apply (is na(new DF ), , which) Output: “interger(0)”: khơng có giá trị bị khuyết tật Làm rõ liệu (Data visualization) (a) Chuyển đổi biến price, sqft_living15, sqft_above, sqft_living thành log(price), log(sqft_living15), log(sqft_above), log(sqft_living) Từ tính tốn với biến hiểu qua đổi biến dạng log Input: new DF [,1]=log 10(new DF [,1]) new DF [,2]=log 10(new DF [,2]) new DF [,5]=log 10(new DF [ ,5 ]) new DF [,6 ]=log10( new DF [, 6]) Giải thích: dùng hàm log10 để chuyển tất cột có số thứ tự 1,2,5,6 (Tương ứng với biến price, sqft_living15, sqft_above, sqft_living) (b) Đối với biến liên tục, tính giá trị thống kê mơ tả bao gồm: trung bình, trung vị, độ lệch chuẩn, giá trị lớn giá trị nhỏ Xuất kết dạng bảng (Hàm gợi ý: mean(), median(), sd(), min(), max(), apply(), as.data.frame(), rownames()) Input: attach(new_DF) 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) = apply(new_DF[, c(1,2,5,6)], 2, min) descriptive=data.frame(mean,median,sd,max,min) descriptive Output: Giải thích: - Lấy liệu từ tập new_DF - Tính trung bình, trung vị, độ lệch chuẩn, giá trị lớn nhất, nhỏ biến price, sqft_living15, sqft_above, sqft_living - Dùng lệnh data.frame để đưa kết vừa tính dạng bảng xuất kết (c) Đối với biến phân loại lập bảng thống kê số lượng cho chủng loại Input: tb_floors=as.data.frame(table(new_DF$floors)) tb_condition=as.data.frame(table(new_DF$condition)) Output: (floors) (condition) (d) Dùng hàm hist() để vẽ đồ thị phân phối biến price Input: hist(new_DF$price, xlab ="price", main = "Histogram of price") Output: Nhận xét: Giá nhà tập trung nhiều khoảng 5.4 – 5.9 Đồ thị có dạng phân phối chuẩn (e) Vẽ phân phối biến price theo biến phân loại floors condition Input: boxplot(price ~ floors,main="Boxplot of house price for each category of floor",data= new_DF) boxplot(price ~ condition, main="Boxplot of house price for each category of condition", data = new_DF) Output: Nhận xét: - Ta nhận thấy biểu đồ hộp vng nhỏ phân tán ít, đường màu đen đường trung vị - Biểu đồ biến price theo biến floors condition có nhiều ngoại lai (e) Dùng lệnh pairs vẽ phân phối iến price theo biến sqft_living15, sqft_above, sqft living Input: pairs( price sqft living 15 , main=pairs of house price for sqft_living15 , data=new DF ) pairs( price sqft above , main=pairs of house price for sqft_above , data=new DF ) pairs( price sqft living , main=pairs of house price for sqft_living , data=new DF ) Output: Nhận xét: Dựa kết thu được, ta nhận thấy khơng có giá trị khuyết biến quality Làm rõ liệu (Data visualization) a Đối với biến liên tục, tính giá trị thống kê mơ tả bao gồm: trung bình, trung vị, độ lệch chuẩn, giá trị lớn giá trị nhỏ Xuất kết dạng bảng (Hàm gợi ý: mean(), median(), sd(), min(), max() , apply(),as.data.frame(), rownames()) Input: gttk ¿ =new DF %> % select (−quality)% >% apply (2 , function(x ){c (mean=mean( x ), median=median(x ), sd=sd (x) , min=min ( x), max=max( x))}) as data frame () Output: b Đối với biến phân loại, lập bảng thống kê số lượng cho chủng loại Input: tk quality=as data frame (table( quality)) Output: c Hãy dùng hàm hist() để vẽ đồ thị phân phối biến quality Input: hist (quality ) Output: Nhận xét: - Phần lớn quality tập trung nhiều từ đến - Nhiều quality = - Ít quality = 0, 1, 2, 9, 10 d Hãy dùng hàm boxplot() vẽ phân phối biến quality với biến lại Input: boxplot (¿ acidity quality ) boxplot ( volatile acidity quality ) boxplot ( citric acid quality) boxplot (residual sugar quality) boxplot ( chlorides quality ) boxplot ( free sulfur dioxide quality ) boxplot (total sulfur dioxide quality ) boxplot ( density quality ) boxplot ( pH quality ) boxplot ( sulphates quality ) boxplot ( alcohol quality ) Output: Xây dựng mơ hình hồi quy tuyến tính (Fitting linear regression models): a Xét mơ hình hồi quy tuyến tính bao gồm biến quality biến phụ thuộc, tất biến lại 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 Input: M 1=select (new DF ,−quality ) Mohinh1=lm(quality , data=M 1) summary (Mohinh1) Output: b Dựa vào kết mô hình hồi quy tuyến tính trên, loại biến với mức tin cậy 5% khỏi mơ hình tương ứng Giả thiết: - H: Hệ số hồi quy khơng có ý nghĩa thống kê - H´ : Hệ số hồi quy có ý nghĩa thống kê Biện luận: - Pv < α bác bỏ H chấp nhận H̅ tức biến có ý nghĩa thống kê - Từ ta đưa kết luận với mức tin cậy α = 0.05 ta loại biến: fixed.acidity, citric.acid, chlorides, free.sulfur.dioxide, total.sulfur.dioxide, alcohol c Xét mơ hình tuyến tính bao gồm biến quality biến phụ thuộc nhưng: Mơ hình M1 chứa tất biến cịn lại biến độc lập Mơ hình M2 loại bỏ fixed.acidity, citric.acid, chlorides, free.sulfur.dioxide, total.sulfur.dioxide, alcohol từ M1 Hãy dùng anova() để đề xuất mơ hình hợp lí Input: M 2=select ( M ,−¿ acidity ,−citric acid ,−chlorides ,−free sulfur dioxide ,−total sulfur dioxide ,−alcoho Mohinh2=lm(quality , data=M 2) summary (Mohinh2) Output: Input: anova (Mohinh1, Mohinh2) Output: Giải thích: Ta đặt giả thuyết H: Hai mơ hình tuyến tính H̅ : Hai mơ hình tuyến tính khác Nhận xét: Vì kết thu bảng Anova cho mơ hình Mohinh1 Mohinh2 Pr(>F) = 0.3259 lớn 0.05 nên ta chấp nhận H Hai mơ hình Mohinh1 có Adjusted R-squared: 0.2801 > Mohinh2 Adjusted Rsquared: 0.2787 Nên chọn Mohinh1 hợp lý d Từ mơ hình hồi quy hợp lý từ câu (c) suy luận tác động biến đến chất lượng rượu Từ Mohinh1, ta xây dựng phương trình hồi quy tuyến tính sau: Y(quality) = 2.578e+02 - 1.327e+00X1(volatile.acidity) + 7.940e02X2(residual.sugar) -2.586e+02X3(density) + 1.060e+00X4(pH) + 1.320e+00X5(sulphates) Nghĩa là: Khi axit bay tăng chất lượng giảm 1.327e+00, lượng đường dư tăng chất lượng tăng 7.940e-02, tỉ trọng tăng chất lượng giảm 2.586e+02, nồng độ pH tăng chất lượng tăng 1.060e+00 nồng độ SO42- tăng chất lượng tăng 1.44710 (sự thay đổi tăng hay giảm đơn vị đo lường) e Từ mơ hình hồi quy hợp lý từ câu (c) dùng lệnh plot() để vẽ đồ thị biểu thị sai số hồi quy giá trị dự báo Nêu ý nghĩa nhận xét Input: plot(fitted(Mohinh2), resid(Mohinh2), xlab ="gia tri du bao", ylab = "sai so hoi quy", main = "do thi bieu thi sai so hoi quy va gia tri du bao") plot(Mohinh2, which = 1) Output: Nhận xét: mối liên hợp âm (mối tương quan chúng tỉ lệ nghịch) Dự báo (Predictions): a Trong liệu bạn, tạo thêm biến đặt tên evaluate, biến biểu diễn tỷ lệ đạt (quality >= 5) không đạt (quality < ) Hãy thống kê tỷ lệ đạt/không đạt (Hàm gợi ý: cbind()) Input: evaluate = as.data.frame(prop.table(table(new_DF$quality >= 5))) names(evaluate) = c("Dat", "Ti le") Output: b Xét mơ hình hồi quy hợp lý mà bạn chọn câu 4(c) Hãy lập bảng số liệu đặt tên New_X bao gồm toàn biến độc lập mơ hình này, dùng lênh predict() để đưa số liệu dự báo cho biến quality phụ thuộc vào New_dX Gọi kết dự báo biến pred_quality Input: new_X = select(new_DF, volatile.acidity, residual.sugar, density, pH, sulphates) new_X$pred_quality = predict(Mohinh2, new_X) Output: c Khảo sát độ xác kết dự báo câu cách lập bảng so sánh kết dự báo pred_quality với kết thực tế biến quality Input: evaluate_table = as.data.frame(prop.table(rbind(table(new_DF$quality >= 5), table(new_X$pred_quality >= 5)), 1)) colnames(evaluate_table) = c("Khong dat", "Dat") rownames(evaluate_table) = c("Quan sat", "Du bao") evaluate_table Output: ... câu (c) hãy dùng lệnh plot() để vẽ đồ thị biểu thị sai số hồi quy và giá trị dự báo Nêu ý nghĩa và nhận xét Input: plot(fitted(M2),resid(M2),xlab = "fittedvalues",ylab =