You are on page 1of 14

PHẦN RIÊNG

ĐỀ BÀI:

Tập tin "toxicity.csv" chứa dữ liệu được sử dụng để phát triển các mô hình QSAR hồi quy
định lượng để dự đoán độc tính thủy sinh cấp tính đối với cá Pimephales promelas (cá mập
minnow) trên một bộ 908 hóa chất. Để dự đoán độc tính thủy sinh cấp tính đối với Daphnia
Magna. Dữ liệu LC50, là nồng độ gây tử vong trong 50% thử nghiệm D. magna trong thời
gian thử nghiệm là 48 giờ, được sử dụng làm phản ứng mô hình. Dự đoán độc tính thủy sinh
cấp tính đối với daphnia magna bằng phương pháp GA-kNN, lựa chọn thay thế cho động vật
trong phòng thí nghiệm (ATLA), 42,31:41; doi: 10.1177/026119291404200106. Chi tiết có
thể được tìm thấy trong tài liệu tham khảo được trích dẫn: M. Cassotti, D. Ballabio, V.
Consonni, A. Mauri, I. V. Tetko, R. Todeschini (2014). Dữ liệu gốc được cung cấp tại:
https://archive.ics.uci.edu/ml/datasets/QSAR+aquatic+toxicity?
fbclid=IwAR13LE8_fQrDBhR3zfq_6cqnC VXIfI1F1R9CJfsooiGPkgmE72lB5MYh1v4

Mô hình này bao gồm 8 mô tả phân tử và 1 phản ứng thử:

1. TPSA (Tot): Tính chất phân tử.

2. SAacc: Tính chất phân tử.

3. H-050: Phân đoạn lấy nguyên tử làm trung tâm.

4. MLOGP: Thuộc tính phân tử.

5. RDCHI: Chỉ số kết nối.

6. GATS1p: Quan hệ tự động 2D.

7. nN: Chỉ số hiến pháp.

8. C-040: Phân đoạn lấy nguyên tử làm trung tâm.

9. LC50: Phản ứng định lượng. [-LOG (mol / L)]


1. Đọc dữ liệu

Dùng lệnh read.csv() để đọc dữ liệu.

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

Kiểm tra giá trị khuyết trong tập tin. Nếu có giá trị khuyết thì đề xuất xử lí.

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

o Đối với các biến liên tục, tính các giá trị thống kê của tất cả các biến. Xuất kết
quả dưới dạng bảng.
o Đố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
chủng loại.
o Dùng hàm hist() để vẽ đồ thị phân phối của biến LC50.
o Hãy dùng hàm boxplot() vẽ phân phối của biến LC50 cho từng nhóm phân
loại của biến: H050, nN, C040
o Dùng lệnh pairs() vẽ các phân phối của biến LC50 lần lượt theo các biến
MLOGP, Saacc.

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

Xét mô hình hồi quy tuyến tính bao gồm biến LC50 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 3 mô hình tuyến tính cùng bao gồm biến LC50 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 N từ M1.


Sử dụng Anova đề xuất mô hình hợp lí nhất. Từ mô hình hồi quy hợp lý nhất từ câu (a) hãy
suy luận sự tác

động của các biến LC50.

5. Dự báo (Predict)


1. Trong dữ liệu của bạn, hãy tạo thêm biến đặt tên là evaluate, biến này biểu diễn tỷ lệ
đạt (LC50 >= 4.5) hoặc không đạt (LC50 < 4.5) của sinh viên trong trong phản ứng
định lượng. Hãy thống kê tỷ lệ đạt/không đạt (Hàm gợi ý: cbind() ).
2. Xét mô hình hồi quy hợp lý nhất mà bạn đã chọn trong câu 4(c). Hãy lập một bảng số
liệu mới đặt tên là new_X bao gồm toàn bộ các biến độc lập trong mô hình này, và
dùng lệnh predict() để đưa ra số liệu dự báo cho biến LC50 phụ thuộc vào new_X.
Gọi kết quả dự báo này là biến pred_LC50.

Khảo sát độ chính xác trong kết quả dự báo của câu trên bằng cách lập một bảng so sánh kết
quả dự báo pred_LC50 với kết quả thực tế của biến LC50.

CÁCH GIẢI

.Nhập: dinh_luong<-read.csv("~/Desktop/dinh_luong.csv",header = T)

.Nhập: attach(dinh_luong)

.Nhập: apply(is.na(dinh_luong),2,which)
.Xuất:
integer(0)
.Nhập: mean = apply(dinh_luong[,c(1,2,4,5,6)],2, mean,na.rm = T)
.Nhập: median = apply(dinh_luong[,c(1,2,4,5,6)],2, median,na.rm = T)
.Nhập: sd = apply(dinh_luong[,c(1,2,4,5,6)],2,sd,na.rm = T)
.Nhập: max = apply(dinh_luong[,c(1,2,4,5,6)],2, max,na.rm = T)
.Nhập: min = apply(dinh_luong[,c(1,2,4,5,6)],2, min,na.rm = T)
.Nhập: des = cbind(mean,median,sd,max,min)
.Nhập: as.data.frame(des)
.Xuất:
mean median sd max min
TPSA 48.472930 40.4600 46.7639831 347.320 0.000
Saacc 58.869018 42.6830 68.1665538 571.952 0.000
MLOGP 2.313493 2.2735 1.7417973 9.148 -6.446
RDCHI 2.492299 2.3440 0.8110039 6.439 1.000
GATS1p 1.046264 1.0205 0.4036771 2.500 0.281
.Nhập: table(H050)
.Xuẩt:
H050
0 1 2 3 4 5 6 7 8 16 18
296 121 76 23 15 6 4 2 1 1 1
.Nhập: table(nN)
.Xuất:
nN
0 1 2 3 4 5 6 7 11
271 131 79 35 11 12 3 3 1
.Nhập: table(C040)
.Xuất:
C040
0 1 2 3 4 11
412 92 36 2 3 1
.Nhập: hist(LC50)
.Xuất:
.Nhập boxplot(LC50 ~ H050)
.Xuất:
.Nhập: boxplot(LC50 ~ nN)
.Xuất:
.Nhập: boxplot(LC50 ~ C040)
.Xuất:
.Nhập: pairs(LC50 ~ MLOGP)
.Xuất:
.Nhập: pairs(LC50 ~ Saacc)
.Xuất:
.Nhập: attach(dinh_luong)
.Nhập: H050=as.factor(H050)
.Nhập: NN=as.factor(nN)
.Nhập: C040=as.factor(C040)
.Nhập: m1=lm(LC50~TPSA+Saacc+H050+MLOGP+RDCHI+GATS1p+nN+C040)
.Nhập: summary(m1)
.Xuất:
Call:
lm(formula = LC50 ~ TPSA + Saacc + H050 + MLOGP + RDCHI + GATS1p +
nN + C040)

Residuals:
Min 1Q Median 3Q Max
-4.5857 -0.7583 -0.0903 0.5666 4.9498

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.683993 0.256912 10.447 < 2e-16 ***
TPSA 0.027695 0.002754 10.056 < 2e-16 ***
Saacc -0.015979 0.002183 -7.321 9.33e-13 ***
H0501 0.099899 0.145248 0.688 0.491892
H0502 -0.031417 0.183155 -0.172 0.863873
H0503 -0.164923 0.313245 -0.526 0.598764
H0504 0.409770 0.369728 1.108 0.268241
H0505 -0.140668 0.646502 -0.218 0.827838
H0506 -0.122249 0.708846 -0.172 0.863140
H0507 1.924969 0.971852 1.981 0.048145 *
H0508 -2.383806 1.264972 -1.884 0.060054 .
H05016 2.205953 1.486474 1.484 0.138406
H05018 2.253095 1.512004 1.490 0.136790
MLOGP 0.453491 0.064675 7.012 7.28e-12 ***
RDCHI 0.511180 0.137166 3.727 0.000215 ***
GATS1p -0.545027 0.155249 -3.511 0.000486 ***
nN -0.202320 0.051169 -3.954 8.74e-05 ***
C0401 -0.107919 0.153206 -0.704 0.481491
C0402 0.144467 0.230323 0.627 0.530778
C0403 -0.734026 0.870296 -0.843 0.399378
C0404 0.318414 0.769466 0.414 0.679181
C04011 1.045042 1.399934 0.746 0.455704
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.197 on 524 degrees of freedom


Multiple R-squared: 0.5031, Adjusted R-squared: 0.4832
F-statistic: 25.26 on 21 and 524 DF, p-value: < 2.2e-16
.Nhập: m2=lm(LC50~TPSA+Saacc+H050+MLOGP+RDCHI+GATS1p+C040)
.Nhập: summary(m2)
.Xuất:
Call:
lm(formula = LC50 ~ TPSA + Saacc + H050 + MLOGP + RDCHI + GATS1p +
C040)

Residuals:
Min 1Q Median 3Q Max
-4.4467 -0.8204 -0.0885 0.5729 5.1352

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.745854 0.259985 10.562 < 2e-16 ***
TPSA 0.024088 0.002635 9.143 < 2e-16 ***
Saacc -0.014719 0.002189 -6.724 4.63e-11 ***
H0501 0.062974 0.146953 0.429 0.668442
H0502 -0.212167 0.179813 -1.180 0.238562
H0503 -0.366174 0.313360 -1.169 0.243119
H0504 0.275676 0.373265 0.739 0.460509
H0505 -0.067434 0.655182 -0.103 0.918063
H0506 -0.388674 0.715403 -0.543 0.587158
H0507 1.925264 0.985304 1.954 0.051234 .
H0508 -3.095205 1.269442 -2.438 0.015090 *
H05016 1.561976 1.497976 1.043 0.297556
H05018 2.061428 1.532144 1.345 0.179060
MLOGP 0.465954 0.065492 7.115 3.70e-12 ***
RDCHI 0.451986 0.138234 3.270 0.001147 **
GATS1p -0.541890 0.157395 -3.443 0.000622 ***
C0401 -0.110093 0.155325 -0.709 0.478768
C0402 0.179608 0.233337 0.770 0.441802
C0403 -0.552482 0.881113 -0.627 0.530914
C0404 0.456896 0.779308 0.586 0.557936
C04011 -0.450312 1.366539 -0.330 0.741889
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.214 on 525 degrees of freedom
Multiple R-squared: 0.4883, Adjusted R-squared: 0.4688
F-statistic: 25.05 on 20 and 525 DF, p-value: < 2.2e-16
.Nhập: anova(m1,m2)
.Xuất:
Analysis of Variance Table

Model 1: LC50 ~ TPSA + Saacc + H050 + MLOGP + RDCHI + GATS1p + nN + C040


Model 2: LC50 ~ TPSA + Saacc + H050 + MLOGP + RDCHI + GATS1p + C040
Res.Df RSS Df Sum of Sq F Pr(>F)
1 524 750.97
2 525 773.37 -1 -22.406 15.634 8.742e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
.Nhập: evaluate=prop.table(table(LC50>=4.5))
.Nhập: evaluate
.Xuất:
FALSE TRUE
0.496337 0.503663
.Nhập: new_X=data.frame(TPSA,Saacc,H050,MLOGP,RDCHI,GATS1p,C040)
.Nhập: new_X$pred_LC50=predict(m2,new_X)
.Nhập: attach(new_X)
.Nhập: evaluate_2=prop.table(table(pred_LC50>=4.5))
.Nhập: evaluate_2
.Xuất:
FALSE TRUE
0.4322344 0.5677656
.Nhập: Ket_qua=cbind(evaluate, evaluate_2)
.Nhập: colnames(Ket_qua)=c("Quan_sat","Du_bao")
.Nhập: rownames(Ket_qua)=c("Khong_datt","dat")
.Nhập: t(Ket_qua)
Khong_datt dat
Quan_sat 0.4963370 0.5036630
Du_bao 0.4322344 0.5677656

You might also like