Tải bản đầy đủ (.docx) (58 trang)

BÁO cáo bài tập lớn 2 môn xác SUẤT THỐNG kê

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.48 MB, 58 trang )

HO CHI MINH
CITY
UNIVERSITY
OF

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

GVHD: TS. Nguyễn Bá Thi
Thực hiện: Nguyễn Việt Ngân - 1914289
(Lớp: L11 – Nhóm: 04)

TIEU LUAN MOI download : moi nhat


Mục lục
PHẦN CHUNG.........................................................................................................................3
BÀI 1..........................................................................................................................................3
BÀI 2........................................................................................................................................16
PHẦN RIÊNG.........................................................................................................................33

TIEU LUAN MOI download : moi nhat


PHẦN CHUNG
BÀI 1

Câu hỏi:
1. Đọc dữ liệu (Import data):
gia_nha <- read.csv("C:/Users/DELL/Desktop/gia_nha.csv")


Liệt kê các biến có trong giá nhà
names(gia_nha)
##
##

[1] "X.2"
[5] "date"

"bathrooms"
##

[9] "sqft_living

"waterfront"
## [13] "view"
"sqft_above"

## [17] "sqft_baseme
"zipcode"

TIEU LUAN MOI download : moi nhat


## [21] "lat"
"sqft_lot15"

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.
new_DF=data.frame(gia_nha[,c(6,23,11,14,16,9)])
head(new_DF)

#

price sqft_living15 floors condition sqft_above
sqft_living
## 1
1180
## 2
2570
## 3
770
## 4
1960
## 5
1680
## 6 1225000
5420

b) Kiểm tra các dữ liệu bị khuyết trong tập tin và đề xuất phương pháp
thay thế cho những dữ liệu bị khuyết này nếu có dữ liệu bị khuyết:

Kiểm tra và xuất ra vị trí dịng có giá trị khuyết:
apply(is.na(new_DF),2,which)

#


$price

#
[1] 26 54 151 174 236 352 375 419 544 557 561 585 594 638
702 718 749 823 939
#

[20] 995

##
## $sqft_living15

TIEU LUAN MOI download : moi nhat


#

integer(0)

#

$floors

#

integer(0)

#

$condition


#

integer(0)

#

$sqft_above

#

integer(0)

#

$sqft_living

#

integer(0)

#

#

#

#

Thống kê các giá trị khuyết của new_DF:

colSums(is.na(new_DF))
## price sqft_living15 floors condition sqft_above
##
0

#
##

sqft_living
0

 Nhận xét: Dựa vào kết quả thu được ta nhận thấy có 20 giá trị khuyết

ở biến price. Do đó ta sẽ đưa ra phương pháp xử lý số liệu là như sau:
Do số quan sát chỉ chứa 20 giá trị khuyết chiếm rất thấp số với tổng
quan sát trên toàn bộ dữ liệu (20/2163 < 10%) vì vậy ta chọn phương
pháp xóa dữ liệu khuyết:
new_DF=na.omit(new_DF)

3. Làm rõ dữ liệu (Data visualization)
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 tốn với các biến trên được hiểu là đã qua biến đổi dạng log.
new_DF[,c(1,2,5,6)]=log10(new_DF[,c(1,2,5,6)])


TIEU LUAN MOI download : moi nhat


a) Tính các giá trị thống kê mơ tả đối với các biến liên tục:


 Trung bình (mean)
mean=apply(new_DF[,c(1,2,5,6)],2,mean)

 Trung vị (median)
median=apply(new_DF[,c(1,2,5,6)],2,median)

 Độ lệch chuẩn (sd)
sd=apply(new_DF[,c(1,2,5,6)],2,sd)

 Giá trị lớn nhất (max)
max=apply(new_DF[,c(1,2,5,6)],2,max)

 Giá trị nhỏ nhất (min)
min=apply(new_DF[,c(1,2,5,6)],2,min)

 Xuất các giá trị vừa tìm được dưới dạng bảng
descriptive = data.frame(mean,median,sd,max,min)
descriptive
##
## price
## sqft_living15 3.274340 3.264818
## sqft_above
## sqft_living

Bảng thông kê số lượng cho từng chủng loại đối với các biến phân loại
Bảng thống kê số lượng cho biến floors
table(new_DF$floors)
##
##

##

Bảng thống kê số lượng cho biến condition
table(new_DF$condition)

TIEU LUAN MOI download : moi nhat


##
##

#

1
30

2

3

4

5

172 14016

5677

1698


Dùng ham hist() đê ve đô thi phan phôi cua biên price.
hist(new_DF$price,main="Histogram of
price",labels=T,col="pink")

 Nhận xét: Dựa vào đồ thị trên ta thấy với mức giá nhà phân bố tập

trung trong khoảng giữa của đồ thị. Và đồ thị cũng có dạng giống với
dạng phân phối chuẩn.

Dùng ham boxplot() ve phan phôi cua biên price cho tưng nhom phan loai cua
biên floor và biến condition.
boxplot(price~floors,main="Boxplot of house price for each
category of floor",data=new_DF,col="cyan")

TIEU LUAN MOI download : moi nhat


boxplot(price~condition,main="Boxplot of house price for each
category of condition",data=new_DF,col="orange")

 Nhận xét: Dựa vào các biểu đồ boxplot ta nhận thấy có nhiều ngoại lai

của biến price theo biến floors và condition.

TIEU LUAN MOI download : moi nhat


Dùng lẹnh pairs() ve cac phan phôi cua biên price lân luơt theo cac biên
sqft_living15, sqft_above va sqft_living.
* Vẽ phân phối biến price theo sqft_living15:

pairs(price~sqft_living15, main="price of house price for
sqft_living15", data=new_DF,col="violet")

* Vẽ phân phối biến price theo sqft_above:
pairs(price~sqft_above, main="price of house price for
sqft_above", data=new_DF,col="violet")

TIEU LUAN MOI download : moi nhat


* Vẽ phân phối biến price theo sqft_living:
pairs(price~sqft_living, main="price of house price for
sqft_living", data=new_DF,col="violet")

Nhận xét: Từ các đồ thị phân tán của biến price theo sqft_living15,
sqft_above, sqft_living, ta nhận thấy các biến sqft_living15, sqft_above,
sqft_living có quan hệ tuyến tính với price, nói rõ hơn là quan hệ đồng biến.
Có thể nhận thấy khi các biến sqft_living15, sqft_above, sqft_living tăng lên
thì biến price có xu hướng tăng theo.

TIEU LUAN MOI download : moi nhat


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.
Ta cần xét các biến chính trong việc xây dựng mơ hình hồi quy.
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.
* Thay các biến phân loại thành biến nhân tố.
new_DF$floors=as.factor(new_DF$floors)
new_DF$condition=as.factor(new_DF$condition)

Price là một hàm số phụ thuộc vào năm biến cịn lại. Các thơng tin về mơ
hình hồi quy tuyến tính sẽ được đưa vào một object có tên là m1.
m1=lm(price~sqft_living15 + sqft_above + sqft_living + floors +
condition, data=new_DF)
summary(m1)
##

#

Call:

#

lm(formula = price ~ sqft_living15 + sqft_above +
sqft_living +

#

floors + condition, data = new_DF)

##
## Residuals:
##


Min

#

-0.55193 -0.11785

#

Coefficients:

0.00346

0.10477

0.65127

#

##
## (Intercept)
## sqft_living15
## sqft_above
## sqft_living
## floors1.5
## floors2

TIEU LUAN MOI download : moi nhat



## floors2.5
## floors3
## floors3.5
## condition2
## condition3
## condition4
## condition5
## --## Signif. codes:
1
##
## Residual standard error: 0.1601 on
## Multiple R-squared:

0.51,

Adjusted R-squared:

0.5097

## F-statistic:

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 tin cậy 5%?
Với mức tin cậy α = 0.05
Giả thiết:
H: biến khơng có ý nghĩa thống kê.
H: biến có ý nghĩa thống kê.
Xét giá trị kiểm định t (Pr) của các biến độc lập:
Pr (sqft_living15) < 2e-16 = 2*10-16 < 0.05 → bác bỏ giả thuyết H Pr

(floors) có các giá trị đều nhỏ hơn 0.05 → bác bỏ giả thuyết H
Pr (condition 2) có các giá trị lớn hơn 0.05 → chấp nhận giả thuyết H
Pr (condition 3, condition 4, condition 5) < 0.05 → bác bỏ giả thuyết
H Pr (sqft_above) = 2e-16 < 0.05 → bác bỏ giả thuyết H
Pr (sqft_living) = 2e-16 < 0.05 → bác bỏ giả thuyết H
 Như vậy, với mức tin cậy 5%, ta sẽ loại bỏ biến “condition 2” khỏi mơ
hình hồi quy tuyến tính trên.

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:

TIEU LUAN MOI download : moi nhat


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
m2=lm(price~sqft_living15 + sqft_above + sqft_living + floors,
data=new_DF)
summary(m2)
##

#

Call:

#

lm(formula = price ~ sqft_living15 + sqft_above +
sqft_living +


#

floors, data = new_DF)

##
## Residuals:
##

Min

#

-0.5583 -0.1188

#

Coefficients:

0.0035

0.1066

0.6410

#

##
## (Intercept)
## sqft_living15

## sqft_above
## sqft_living
## floors1.5
## floors2
## floors2.5
## floors3
## floors3.5

#

---

#

Signif. codes:

0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' '

1
##

#

Residual standard error: 0.1614 on 21584 degrees of freedom

#

Multiple R-squared:

#


F-statistic:

0.5019, Adjusted R-squared:

2718 on 8 and 21584 DF,

p-value: < 2.2e-16

Dùùng lệnh anova() để đề xuất mơ hình hồi quy hợp lý hơn.
anova(m1,m2)
## Analysis of Variance Table

0.5017


TIEU LUAN MOI download : moi nhat


##

#

Model 1: price ~ sqft_living15 + sqft_above + sqft_living +
floors + condition

#

Model 2: price ~ sqft_living15 + sqft_above + sqft_living +
floors

##

Res.Df

RSS Df Sum of Sq

#

1

21580 553.32

#

2

21584 562.49 -4

#

---

#

Signif. codes:

F

Pr(>F)


-9.1665 89.376 < 2.2e-16 ***

0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' '

1

Giả thuyết
H: Hai mơ hình tuyến tính như nhau
H: Hai mơ hình tuyến tính khác nhau
Nhận xét: Vì kết quả thu được trong bảng Anova cho 2 mô hình m1 và m2 là
Pr(>F) = 2,2e- 16 nhỏ hơn 0.05 nên ta bác bỏ H. Điều đó chỉ ra rằng 2 mơ
hình là khác nhau.
 Do đó ta sẽ cân nhắc việc chọn mơ hình m1 hay mơ hình m2. Đối với

mơ hình m2, biến loại bỏ đi từ mơ hình m1 là condition, mà biến
condition ta khơng loại bỏ khỏi mơ hình (đã xét ở câu b) do đó ta sẽ
có chọn mơ hình m1 sẽ hợp lý hơn.
 Mặt khác, ta có thể xét hệ số Multiple R-squared (hệ số xác định) ở
mơ hình m1 = 0,51 > hệ số Multiple R-squared (hệ số xác định) ở mơ
hình m2 = 0,5019. Tức có nghĩa là mơ hình m1 cho ta biết sự thay đổi
của biến price được giải thích bởi các biến độc lập tốt hơn so với mơ
hình m2. Hoặc ta so sánh RSS (tổng bình phương sai lệch giữa thực tế
và dự báo) của m1 < m2
Theo kết quả trên, mơ hình M1 hợp lý hơn.

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à.
Từ câu c, ta chọn mơ hình m1 là mơ hình hợp lý hơn.
Biến price là một biến phụ thuộc vào 5 biến độc lập: sqft_living15, floors,
condition, sqft_above, sqft_living. Dựa trên thơng tin của mơ hình m1, ta

có đường hồi quy tuyến tính mẫu như sau:


TIEU LUAN MOI download : moi nhat


price = 2.308027 + 0.462153 (sqft_living15) + 0.078713 (floors1.5) +
0.029366 (floors2) + 0.162118 (floors2.5) + 0.165894 (floors3) +
0.215827 (floors3.5) + 0.008113 (condition2) + 0.070449 (condition3) +
0.090356 (condition4) + 0.144105 (condition5) -0.142451 (sqft_above) +
0.670249 (sqft_living)
Các giá trị β của bốn biến độc lập đều khác 0, cho thấy chúng đều có tác động
đến price. Mối liên hệ này có ý nghĩa thống kê.
Xét đạo hàm theo từng biến độc lập, ta thấy mức độ ảnh hưởng như sau:
sqft_living15 tăng 1 đơn vị, price tăng 0.462153 đơn vị.
sqft_above tăng 1 đơn vị, price giảm 0.142451 đơn vị.
sqft_living tăng 1 đơn vị, price tăng 0.670249 đơn vị.

e) Từ mơ hình hồi quy hợp lý nhất từ 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ị.
plot(m1,which=1)

TIEU LUAN MOI download : moi nhat


Ý nghĩa: đồ thị trên biểu thị sai số hồi quy và giá trị dự báo cho biến
phụ thuộc price.


Nhận xét: Các giá trị residuals và fitted values chủ yếu tập trung ở góc phần tư
thứ nhất và phần tư thứ tư, dao động đối xứng quanh đường y = 0.
- Đường thẳng chính giữa chính là đường 0 => sai số hồi quy (XSHQ)= 0
- Đường XSHQ đỏ càng gần đường 0 càng chính xác

Kết luận: Giá nhà khi đó được dự báo chính xác nhất do khoảng cách gần
đường 0 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.
Khai báo biến
X1=data.frame(sqft_living15=mean(new_DF$sqft_living15),sqft_abo
ve=mean(new_DF$sqft_above),sqft_living=mean(new_DF$sqft_living) ,floors="2",condition="3")

X2=data.frame(sqft_living15=max(new_DF$sqft_living15),sqft_abov
e=max(new_DF$sqft_above),sqft_living=max(new_DF$sqft_living),fl
oors="2",condition="3")

Dự báo giá nhà tại thuộc tính X1:
predict_X1=predict(m1,X1,interval = "confidence")
predict_X1
##


fit

lwr

upr

## 1 5.66139 5.657203 5.665577

Dự báo giá nhà tại thuộc tính X2:

TIEU LUAN MOI download : moi nhat


predict_X2=predict(m1,X2,interval = "confidence")
predict_X2
##

fit

lwr

upr

## 1 6.364003 6.353382 6.374624

So sánh khoảng tin cậy của hai dự báo của X1 và X2:
*Tạo bảng thể hiện dự báo giá nhà(có thể hiện độ dài khoảng tin cậy) của hai
biến X1 và X2:
pred=data.frame(rbind(predict_X1,predict_X2))
pred=data.frame(rbind(predict_X1,predict_X2))

row.names(pred)=c("X1","X2")
pred$range=pred$upr-pred$lwr
pred
##

fit

lwr

upr

range

#

X1 5.661390 5.657203 5.665577 0.008374017

#

X2 6.364003 6.353382 6.374624 0.021242160

Nhận xét: Với khoảng tin cậy 95%, ta thấy được độ dài khoảng tin cậy giá trị
dự báo của X1 < X2 nên ta có thể kết luận với tập liệu từ X1, ta có thể thu
được một giá trị dự báo chính xác hơn so với X2.

TIEU LUAN MOI download : moi nhat


BÀI 2


Câu hỏi:
1. Đọc dữ liệu (Import data):
diem_so <- read.csv("C:/Users/DELL/Desktop/gia_nha.csv")
names(diem_so)
##

[1] "X"

"address"
##

[6] "famsize"

"Mjob"
## [11] "Fjob"
"studytime"

# [16] "failures" "schoolsup" "famsup" "paid"
"activities"
#

[21] "nursery" "higher" "internet" "romantic" "famrel"

#

[26] "freetime" "goout" "Dalc" "Walc" "health"

## [31] "absences"

"G1"


"G2"

"G3"

TIEU LUAN MOI download : moi nhat


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. 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.
new_DF=data.frame(diem_so[,c(32,33,34,15,16,31,22,4)])
head(new_DF)

#

G1 G2 G3 studytime failures absences higher age
## 1

5

## 2

5 NA

## 3


7
##415

## 5

6
##615 NA 15

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 này.
Kiểm tra và xuất ra vị trí dịng có giá trị khuyết:
apply(is.na(new_DF),2,which)

#

$G1

#

integer(0)

#

$G2

#

##

##

#

$G3

#

integer(0)

#

$studytime

#

integer(0)

#

$failures

#

integer(0)

#

#



TIEU LUAN MOI download : moi nhat


##

#

$absences

#

integer(0)

#

$higher

#

integer(0)

#

$age

#

integer(0)


#

#

Thống kê các giá trị khuyết của new_DF:
colSums(is.na(new_DF))
##
higher
##
0

Nhận xét: Dựa vào kết quả thu được ta nhận thấy có 5 giá trị khuyết ở biến
G2.Do đó ta sẽ đưa ra phương pháp xử lý số liệu là như sau: Do số quan sát
chỉ chứa 20 giá trị khuyết chiếm rất thấp số với tổng quan sát trên toàn bộ dữ
liệu (5/395 < 10%) vì vậy ta chọn phương pháp xóa dữ liệu khuyết:
new_DF=na.omit(new_DF)

3. Làm rõ dữ liệu (Data visualization)
a) Đôi vơi cac biên lien tuc, hay tinh cac gia tri thông ke mo ta bao gôm:

trung binh, trung vi, đọ lẹch chuân, gia tri lơn nhât va gia tri nho nhât.
Xuât kêt qua duơi dang bang. (Ham gơi y: mean(), median(), sd(),
min(), max() , apply(), as.data.frame(), rownames())
mean=apply(new_DF[,c(1,2,3,6,8)],2,mean)
median=apply(new_DF[,c(1,2,3,6,8)],2,median)
sd=apply(new_DF[,c(1,2,3,6,8)],2,sd)
max=apply(new_DF[,c(1,2,3,6,8)],2,max)
min=apply(new_DF[,c(1,2,3,6,8)],2,min)
descriptive = data.frame(mean,median,sd,max,min)
descriptive



TIEU LUAN MOI download : moi nhat


×