Bảng phân công nhiệm vụ
STT | Mã SV | Họ và tên | Nhiệm vụ |
---|---|---|---|
1 | 21133013 | Đỗ Ngọc Chí Công | - Tiền xử lý dữ liệu kiểm tra có giá trị na hay không; và chuyển
chuỗi thành số cho hai tập dữ liệu. - Vẽ biểu pie thể hiện tỷ trọng cho các giá trị cho các thuộc tính cho tập dữ liệu đầu tiên. Vẽ biểu đồ cột thể hiện giá trị M và B cho tập dữ liệu thứ hai, vẽ biểu đồ tương quan cho tập dữ liệu thứ hai. - Giải quyết bài toán: Xây dựng mô hình dự đoán khối u là lành tính hay ác tính thông qua các chỉ số được nhập vào sử dụng RandomForest - Tổng hợp file R Markdown. |
2 | 21133059 | Trần Sĩ Nguyên | - Vẽ các biểu đồ: Thống kế thời gian sống kể từ mắc bệnh theo tình trạng hôn nhân của những bênh nhân tử vong Thống kế thời gian sống kể từ mắc bệnh theo màu da của những bênh nhân tử vong . Giải quyết bài toán: Bài toán: Tạo mô hình để dự đoán Status(Dead or Alive) dựa trên Age, Estrogen.Status, X6th.Stage, Survival.Months sử dụng desicion tree. |
3 | 21133006 | Phan Cao Bằng | - Vẽ các biểu đồ: Biều đồ phân phối của trạng thái (Survived và Died) dưới sự ảnh hưởng của biến T.Stage và Age (Stacked Bar Chart). Biều đồ so sánh sự chệnh lệch của các trạng thái (Status) và thể hiện mối quan hệ giữa các biếnAge, Survival.Months, T.Stage, N.Stage, Status (Scatter Plot) .Giải quyết bài toán: Tạo ra mô hình để kiểm tra các thuộc tính: Dự đoán Sống hoặc Chết của người bệnh Ung thư vú dựa vào các nhân tố như Tuổi, Chủng tộc, Tình trạng Es/Pro và một số nhân tố khác có trong tệp dữ liệu sử dụng hồi quy Logarit. |
4 | 21133031 | Huỳnh Gia Hân | - Tìm hiểu dữ liệu - Vẽ biểu đồ thể hiện bán kính khối u, bán kinh sai số chuẩn khối u và bán kinh lớn nhất mà khối u có thể đạt được cho tập dữ liệu thứ hai (histogram). - Vẽ biểu đồ thể hiện sự tương quan giữa của compactness_mean, concavity_mean, fractal_dimension_mean của tập dữ liệu thứ hai (bubble chart). - Vẽ các biểu đồ cho kiểm định giả thuyết (Stacked bar) - Làm các bài kiểm định giả thuyết. - Tổng hợp file PowerPoint |
Phần 1. Tóm tắt:
- Kiểm định và xây dựng mô hình dự đoán trong các tập dữ liêu Ung Thư
Vú (Breast Cancer)
- Giới thiệu các tập dữ liệu được sử dụng: Ung thư vú của SEER và
Breast Cancer Wisconsin (Diagnostic)
- Trích xuất dữ liệu.
- Tiền xử lý dữ liệu:
- Kiểm tra giá trị NA.
- Ánh xạ và cập nhật dữ liệu thành số.
- Kiểm tra giá trị NA.
- Trực quan hóa dữ liệu: Vẽ các biểu đồ Box plot, Scatter plot,
Stacked Bar Chart, Bar chart, Heatmap, Pie chart, Histogram, Bubble
Chart.
- Thực hiện các bài toán kiểm định bằng ANOVA.
- Sử dụng các mô hình (Hồi quy Logarit, Decision Tree, Random Forest)
thực hiện bài toán dự đoán.
Phần 2. Giới thiệu:
- Ung thư vú là một trong những loại ung thư phổ biến nhất ở phụ nữ trên khắp thế giới. Nó xuất phát từ các tế bào trong vùng vú và có thể phát triển thành các khối u gọi là tuyến vú. Nếu không phát hiện và điều trị kịp thời, ung thư vú có thể lan rộ và gây hậu quả nặng nề cho sức khỏe. Đề tài nghiên cứu về ung thư vú là rất quan trọng vì nó đề cập đến nhiều khía cạnh quan trọng như nhận biết, chẩn đoán, và điều trị bệnh. Nghiên cứu trong lĩnh vực này có thể giúp cải thiện phương pháp chẩn đoán sớm, đề xuất các chiến lược điều trị hiệu quả hơn, và nâng cao chất lượng cuộc sống của những người mắc bệnh. Dữ liệu đồ án của chúng em chứa thông tin về nhiều yếu tố liên quan đến bệnh ung thư vú, bao gồm tuổi, chủng tộc, tình trạng hôn nhân, giai đoạn của bệnh, độ lợi tức (differentiation), kích thước u, tình trạng hormone (estrogen và progesterone), số nút cục bộ đã được kiểm tra, số nút cục bị nhiễm và thời gian sống. Việc phân tích dữ liệu này có thể mang lại thông tin quý báu về mối quan hệ giữa các yếu tố này và tỉ lệ sống sót, từ đó giúp cải thiện hiểu biết và phương pháp điều trị của bệnh ung thư vú. Mục tiêu của đề tài có thể bao gồm việc tìm kiếm mối liên quan giữa các biến số như tuổi, giai đoạn của bệnh, và các yếu tố khác với thời gian sống sót. Ngoài ra, nghiên cứu cũng có thể tập trung vào việc xây dựng mô hình dự đoán sống sót dựa trên các thông tin đặc trưng của bệnh nhân. Bằng cách áp dụng các kiến thức đã học ở môn lập trình R như kiểm định gải thuyết thống kê để tìm hiểu xem Estrogen status có ảnh hưởng đến Tumor size hay không? Cùng với đó Estrogen status có ảnh hưởng đến 6thStage? Hay 6thStage có ảnh hưởng đến Survival Months. Bên cạnh đó còn có các kiến thức như Kiểm định Logarit Dự đoán Sống hoặc Chết của người bệnh Ung thư vú dựa vào các nhân tố như Tuổi, Chủng tộc, Tình trạng Es/Pro và một số nhân tố khác có trong tệp dữ liệu. Chúng em còn xây dựng mô hình Cây Quyết Định để dự đoán Status(Dead or Alive) dựa trên Age,Estrogen.Status, X6th.Stage, Survival.Months. Ngoài ra, đồ án còn muốn bao quát thêm nhiều tác nhân khác ảnh hưởng đến ung thư vú nên chúng em đã đưa vào đồ án các thông tin khác như chuẩn đoán lành tính hay ác tính của tế bào ung thư, trung bình khoảng cách từ tâm đến các điểm trên chu vi, độ lệch chuẩn của giá trị mức xám, kích thước trung bình của tâm u, Diện tích trung bình của tâm u,….. Cùng với đó là xây dựng mô hình Random Forest dự đoán khối u là lành tính hay ác tính thông qua các chỉ số có trong tập dữ liệu, giúp phát hiện sớm u ác tính hay lành tính và phân loại các trường hợp ung thư vú. Thông qua việc nghiên cứu này, hy vọng sẽ có thêm thông tin quan trọng để hỗ trợ quá trình quyết định chẩn đoán và điều trị bệnh ung thư vú, từ đó cải thiện chất lượng cuộc sống của bệnh nhân và giảm thiểu tác động tiêu cực của bệnh lý này đối với xã hội.
Phần 3. Thông tin về các tập dữ liệu:
3.1. Ung thư vú của SEER.
https://www.kaggle.com/datasets/reihanenamdari/breast-cancer
- Tập dữ liệu về bệnh nhân ung thư vú này được lấy từ bản cập nhật tháng 11 năm 2017 của Chương trình SEER của NCI, nơi cung cấp thông tin về thống kê ung thư dựa trên dân số. Bộ dữ liệu liên quan đến các bệnh nhân nữ bị ung thư vú ung thư biểu mô ống xâm nhập và ung thư biểu mô tiểu thùy (SEER trích dẫn chính mã lại mã mô học NOS 8522/3) được chẩn đoán vào năm 2006-2010. Những bệnh nhân có kích thước khối u không rõ, LN khu vực được kiểm tra, LN khu vực dương tính và những bệnh nhân có tháng sống sót dưới 1 tháng đã bị loại trừ. Và, 4024 bệnh nhân cuối cùng đã được đưa vào.
- Age: Độ tuổi.
- Race: Chủng tộc.
- Marital State: Tình trạng kết hôn.
- T Stage:
- Giai đoạn T trong ung thư vú đề cập đến kích thước và mức độ lan rộng của khối u nguyên phát và là thành phần quan trọng của hệ thống phân giai đoạn TNM được sử dụng để xác định giai đoạn tổng thể của bệnh. T1 (Tumor size 1): Khối u có kích thước tối đa là 2 centimet (cm) trong chiều lớn nhất. T2 (Tumor size 2): Khối u có kích thước từ 2 cm đến 5 cm trong chiều lớn nhất. T3 (Tumor size 3): Khối u có kích thước lớn hơn 5 cm trong chiều lớn nhất. T4 (Tumor size 4): Có thể được chia thành các phụ giai đoạn T4a, T4b, T4c, và T4d: T4a: Khối u lan ra ngoài vú, nhưng không tác động lên cơ bắp hoặc da. T4b: Khối u lan ra ngoài vú và tác động lên cơ bắp. T4c: Khối u lan ra ngoài vú và tác động lên da, có thể bao gồm sưng, đau, và vẻ ngoại hình bất thường của da. T4d: Mọi giai đoạn của T4 có thể bao gồm sự lan truyền đến nút lymph cục.
- N Stage:
- Giai đoạn N trong ung thư vú đề cập đến sự liên quan của các hạch bạch huyết ở nách (nách) và các khu vực khác gần vú, đồng thời đóng vai trò quan trọng trong việc xác định giai đoạn tổng thể và tiên lượng của bệnh. Trong hệ thống phân loại giai đoạn ung thư vú theo AJCC 6th, giá trị N (Node) chỉ ra mức độ lan truyền của ung thư đến các nút lymph cục xung quanh. Dưới đây là mô tả tổng quan về các giá trị N: N1 (Node 1): Sự lan truyền đến một hoặc nhiều nút lymph cục cục bộ. N2 (Node 2): Sự lan truyền có thể bao gồm một trong các điều kiện sau: Sự lan truyền đến 4-9 nút lymph cục cục bộ. Sự lan truyền đến nút lymph cục xa cách vú, nhưng không phải là nút lymph cục bên đối diện. N3 (Node 3): Sự lan truyền có thể bao gồm một trong các điều kiện sau: Sự lan truyền đến 10 nút lymph cục cục bộ trở lên. Sự lan truyền đến nút lymph cục bên đối diện của vú.
- 6th Stage:
- Giai đoạn của ung thư vú theo hệ thống AJCC 6th được biểu diễn bằng các pha từ I đến IV, với mỗi giai đoạn được chia thành các phụ giai đoạn A, B, C, v.v., tùy thuộc vào một số yếu tố như kích thước của khối u, sự lan truyền đến nút lymph, và sự lan truyền đến các bộ phận khác của cơ thể. Các giá trị: IIA (Stage IIA): Đây là một giai đoạn trong hệ thống AJCC 6th và thường ám chỉ một mức độ lan truyền ở mức độ trung bình. Các yếu tố như kích thước của khối u và sự lan truyền đến nút lymph có thể đặc trưng cho giai đoạn này. IIB (Stage IIB): Giai đoạn này thường ám chỉ một mức độ lan truyền ở mức độ cao hơn so với IIA. Điều này có thể bao gồm các yếu tố như kích thước lớn hơn của khối u hoặc sự lan truyền đến nút lymph xa hơn. IIIA (Stage IIIA): Đây là một giai đoạn trong đó ung thư vú đã có mức độ lan truyền mạnh mẽ. Thông thường, các yếu tố như kích thước của khối u, sự lan truyền đến nút lymph cục, và vị trí của nút lymph cục bị ảnh hưởng đến việc xác định giai đoạn này. Ví dụ, giai đoạn IIIA có thể ám chỉ khối u lớn, có sự lan truyền đến nút lymph cục, nhưng không có sự lan truyền đến các cơ bản khác. IIIB (Stage IIIB): Giai đoạn IIIB thường ám chỉ một mức độ lan truyền mạnh mẽ hơn so với giai đoạn IIIA, nhưng không đạt đến mức độ lan truyền của giai đoạn IIIC. Các yếu tố như kích thước của khối u, sự lan truyền đến nút lymph cục, và vị trí của nút lymph cục có thể được xem xét để xác định giai đoạn này. IIIC (Stage IIIC): Đây là một giai đoạn nâng cao, trong đó sự lan truyền của ung thư đã mở rộng đến nút lymph cục xa và có thể liên quan đến các cơ bản lân cận khác. Giai đoạn IIIC thường là một giai đoạn nâng cao, chỉ ra một mức độ lan truyền rất mạnh mẽ của ung thư.
- Differentiate: Điều này đề cập đến mức độ trưởng thành của các tế bào khối u. Các tế bào biệt hóa tốt giống với tế bào vú bình thường và có tiên lượng tốt hơn, trong khi các tế bào kém biệt hóa thì bất thường và hung hãn hơn.
- Grade: Trong ung thư vú, thuật ngữ “độ” dùng để chỉ mức độ trưởng thành hoặc sự biệt hóa của các tế bào khối u. Về cơ bản, nó là thước đo mức độ giống nhau của các tế bào ung thư với các tế bào vú bình thường. Đánh giá tốc độ tế bào ung thư đang phân chia. Điểm số cụ thể từ mỗi đặc điểm này sau đó được cộng lại để xác định bậc độ tổng thể, theo các phân loại thông thường như Bậc độ 1 (tốt), Bậc độ 2 (trung bình), và Bậc độ 3 (kém). (Và nó có phân chia các trường hợp, mình sẽ tìm hiểu thêm.)
- A Stage: Có 2 giá trị: Regional - Một khối u đã lan rộng Distant - Một khối u đã lan đến các bộ phận của cơ thể ở xa
- Tumor Size: Kích thước khối u là yếu tố quan trọng quyết định giai đoạn và tiên lượng của bệnh ung thư vú. Nó được đo ở điểm rộng nhất và thường được báo cáo bằng milimét (mm) hoặc centimét (cm). (Nó cũng được chia ra các thành phần nhỏ hơn mình sẽ tìm hiểu sau.)
- Estrogren Status: Estrogen đóng một vai trò quan trọng trong sự phát triển và tiến triển của ung thư vú. Hiểu được tình trạng thụ thể estrogen (ER) của khối u là rất quan trọng để xác định các chiến lược điều trị hiệu quả nhất. Các thụ thể estrogen là các protein được tìm thấy trong tế bào vú. Khi estrogen liên kết với các thụ thể này, nó sẽ báo hiệu cho các tế bào phát triển và phân chia. Các khối u có số lượng thụ thể estrogen cao được gọi là dương tính với thụ thể estrogen (ER+). Những khối u này dựa vào estrogen để phát triển và có khả năng đáp ứng với các loại thuốc trị liệu bằng hormone ngăn chặn tác dụng của estrogen.
- Progesterone Status: Các thụ thể progesterone là các protein được tìm thấy trong một số tế bào vú. Khi progesterone liên kết với các thụ thể này, nó có thể thúc đẩy sự phát triển và phân chia tế bào. Các khối u có số lượng thụ thể progesterone cao được gọi là dương tính với thụ thể progesterone (PR+). Những khối u này có thể bị ảnh hưởng bởi progesterone và có khả năng đáp ứng với liệu pháp hormone nhắm vào cả estrogen và progesterone.
- Regional Node Examined: Trong ung thư vú, việc kiểm tra hạch vùng tùy thuộc vào giai đoạn và vị trí của khối u
- Reginol Node Positive
- Survival Months Status
3.2. Breast Cancer Wisconsin (Diagnostic).
https://www.kaggle.com/datasets/uciml/breast-cancer-wisconsin-data
- Các đặc điểm được tính toán từ hình ảnh số hóa của chọc hút bằng kim nhỏ (FNA) của khối vú. Chúng mô tả đặc điểm của nhân tế bào có trong hình ảnh. n không gian 3 chiều được mô tả trong: [K. P. Bennett và O. L. Mangasarian: “Phân biệt lập trình tuyến tính mạnh mẽ của hai tập hợp tuyến tính không thể tách rời”, Phương pháp tối ưu hóa và phần mềm 1, 1992, 23-34].
Attribute Information:
- ID number
- Diagnosis (M = malignant, B = benign) 3-32) Mười tính năng có giá trị thực được tính toán cho mỗi nhân tế bào:
- radius (mean of distances from center to points on the perimeter) - bán kính (trung bình khoảng cách từ tâm đến các điểm trên chu vi)
- texture (standard deviation of gray-scale values) - kết cấu (độ lệch chuẩn của các giá trị thang độ xám) Texture trong ung thư vú là một đặc trưng được sử dụng để phân tích biến đổi của các mẫu hình ảnh y tế. Để hiểu rõ hơn về texture, chúng ta có thể nói về độ lệch chuẩn (standard deviation) của các giá trị xám (gray-scale values). Trong hình ảnh y tế, các giá trị xám thường biểu thị mức độ sáng tối của các pixel. Độ lệch chuẩn là một chỉ số thống kê dùng để đo sự phân tán của dữ liệu. Trong trường hợp này, độ lệch chuẩn của các giá trị xám trong hình ảnh ung thư vú được sử dụng để đánh giá sự biến đổi trong mức độ sáng tối của các khu vực khác nhau trên hình ảnh. Thông thường, các vùng ung thư có xu hướng có texture không đều, không đồng nhất và thay đổi nhiều so với các vùng bình thường trong hình ảnh. Điều này có thể được phản ánh bằng độ lệch chuẩn lớn hơn của các giá trị xám trong các khu vực ung thư so với các khu vực bình thường.
- perimeter – Chu vi
- area – diện tích
- smoothness (local variation in radius lengths) - độ mịn (thay đổi cục bộ về độ dài bán kính) Smoothness (độ mịn) trong ung thư vú là một đặc trưng hình học được sử dụng để đánh giá sự biến thiên cục bộ trong độ dài bán kính của các vùng trong hình ảnh y tế của ung thư vú.
Để hiểu rõ hơn về smoothness, chúng ta có thể nói về sự biến thiên cục bộ trong độ dài bán kính của các vùng trong hình ảnh ung thư vú. Thông thường, trong ung thư vú, các vùng bất thường hoặc ung thư thường có xu hướng có độ biến thiên cục bộ cao hơn so với các vùng bình thường.
Smoothness được đo bằng cách xác định sự khác biệt giữa các bán kính của các vùng lân cận nhau. Nếu sự khác biệt này nhỏ, tức là các vùng có độ mịn cao, có xu hướng ít biến đổi và liền mạch hơn. Ngược lại, nếu sự khác biệt lớn, tức là các vùng có độ mịn thấp, có xu hướng biến đổi đột ngột và không liền mạch.
compactness (perimeter^2 / area - 1.0) - nhỏ gọn (chu vi ^ 2 / diện tích - 1.0) Nếu một vùng có compactness gần với 0, điều đó cho thấy chu vi bình phương và diện tích của vùng tương đối tương đồng, tức là vùng đó có hình dạng gần như là một hình tròn hoặc hình vuông. Tuy nhiên, trong trường hợp ung thư vú, các vùng bất thường thường có compactness cao hơn. Điều này có nghĩa là chu vi bình phương của vùng lớn hơn đáng kể so với diện tích, cho thấy hình dạng của vùng không gọn gàng và có nhiều biến đổi.
concavity (severity of concave portions of the contour) - lõm (mức độ nghiêm trọng của các phần lõm của đường viền) Concavity (độ lõm) trong ung thư vú là một đặc trưng hình học được sử dụng để đánh giá mức độ lõm của các phần lõm trên đường viền của một vùng trong hình ảnh y tế.
Để hiểu rõ hơn về concavity, chúng ta có thể xem xét cách đo lường mức độ lõm của các phần trên đường viền. Trong trường hợp ung thư vú, các phần lõm thường là các vùng không đều và không liền mạch trên đường viền của khối u. Concavity được sử dụng để đo lường mức độ lõm này, và thường được đánh giá dựa trên các đặc trưng hình học của đường viền của vùng.
- concave points (number of concave portions of the contour) - điểm lõm (số phần lõm của đường viền) Concave points (số lõm) trong ung thư vú là một đặc trưng hình học được sử dụng để đếm số lượng điểm lõm trên đường viền của một vùng trong hình ảnh y tế.
Để hiểu rõ hơn về concave points, chúng ta có thể xem xét cách đếm số lượng điểm lõm trên đường viền của một vùng. Trong trường hợp ung thư vú, các điểm lõm thường là các điểm trên đường viền của khối u mà có hình dạng lõm vào bên trong.
Số lượng concave points được sử dụng để đo lường mức độ lõm của đường viền và có thể cho thấy sự không đều và không liền mạch của vùng ung thư.
- symmetry – sự đối xứng
- fractal dimension (“coastline approximation” - 1) - kích thước fractal (“xấp xỉ đường bờ” - 1)
Fractal dimension (kích thước fraktal) trong ung thư vú là một đặc trưng hình học được tính dựa trên khái niệm “xấp xỉ đường bờ” của một vùng trong hình ảnh y tế.
Để hiểu rõ hơn về fractal dimension, chúng ta có thể xem xét cách xấp xỉ đường bờ của vùng. Trong trường hợp ung thư vú, đường bờ của vùng thường có hình dạng không đều, rối ren, và có nhiều chi tiết phức tạp.
Fractal dimension được tính bằng cách áp dụng khái niệm “xấp xỉ đường bờ” vào vùng. Đầu tiên, đường bờ của vùng được xem như đường bờ của một hình fraktal, trong đó các chi tiết nhỏ hơn được lặp lại trên các tỷ lệ khác nhau. Sau đó, fractal dimension được tính bằng cách áp dụng phương pháp tính toán kích thước fraktal vào đường bờ của vùng.
Phần 4. Ung thư vú của SEER.
4.1. Trích xuất và đọc dữ liệu
- Trích xuất dữ liệu
data <- read.csv("./Data/1_Breast_Cancer.csv")
datatable(data,filter = 'top', options = list(pageLength = 5, autoWidth = TRUE))
- Tóm tắt dữ liệu
4.2. Tiền xử lý dữ liệu
- Sao chép dữ liệu để xử lý dữ liệu trên bản sao không gây ảnh hưởng đến dữ liệu gốc.
- Kiểm tra xem có tồn tại giá trị na không?
if(length(data[is.na(data)])==0){
print("Không tồn tại gía trị na")
}else{
print("Tồn tại giá trị na")
}
## [1] "Không tồn tại gía trị na"
- Tiến hành lưu từng loại giá trị với cột giá trị tương ứng.
Race_t<-c(sqldf("select distinct Race from data"))
Marital_Status_t<-c(sqldf("select distinct `Marital.Status` from data"))
T_Stage_t<-c(sqldf("select distinct `T.Stage` from data"))
N_Stage_t<-c(sqldf("select distinct `N.Stage` from data"))
X6th_Stage_t<-c(sqldf("select distinct `X6th.Stage` from data"))
differentiate_t<-c(sqldf("select distinct differentiate from data"))
Grade_t<-c(sqldf("select distinct Grade from data"))
A_Stage_t<-c(sqldf("select distinct `A.Stage` from data"))
Estrogen_Status_t<-c(sqldf("select distinct `Estrogen.Status` from data"))
Progesterone_Status_t<-c(sqldf("select distinct `Progesterone.Status` from data"))
Status_t<-c(sqldf("select distinct Status from data"))
list_data<- list(Race_t,Marital_Status_t,T_Stage_t,N_Stage_t,X6th_Stage_t,differentiate_t,Grade_t,A_Stage_t,Estrogen_Status_t,Progesterone_Status_t,Status_t)
- Tiến hành in ra các loại giá trị có trong từng cột.
## $Race
## [1] "White" "Black" "Other"
##
## $Marital.Status
## [1] "Married" "Divorced" "Single " "Widowed" "Separated"
##
## $T.Stage
## [1] "T1" "T2" "T3" "T4"
##
## $N.Stage
## [1] "N1" "N2" "N3"
##
## $X6th.Stage
## [1] "IIA" "IIIA" "IIIC" "IIB" "IIIB"
##
## $differentiate
## [1] "Poorly differentiated" "Moderately differentiated"
## [3] "Well differentiated" "Undifferentiated"
##
## $Grade
## [1] "3" "2" "1"
## [4] " anaplastic; Grade IV"
##
## $A.Stage
## [1] "Regional" "Distant"
##
## $Estrogen.Status
## [1] "Positive" "Negative"
##
## $Progesterone.Status
## [1] "Positive" "Negative"
##
## $Status
## [1] "Alive" "Dead"
- Ánh xạ và cập nhật dữ liệu chữ thành số.
- Ánh xạ dữ liệu
data_copy <- data
AnhXa<-function (object,dk=""){
name_c<-names(object)
object_sp <- str_split(object[[1]]," ")
for(i in 1:length(object_sp)){
if(length(object_sp[[i]])>1){
object_sp[i]<-str_remove(object_sp[[i]],"\" ")
object_sp[i]<-paste(object_sp[i],"")
}
object_sp[i]<-paste(object_sp[i],dk,sep='')
}
len <- length(object_sp)
print(paste("Cập nhật giá trị cột",name_c))
print(object[[1]])
print("Các giá trị tương ứng")
print(1:len)
print("------------------------------------")
#update
for(i in 1:len){
query <- paste("update data_copy set ",paste("`",name_c,"`",sep=''),"=",i,"where ",paste("`",name_c,"`",sep=''),"=",str_replace(paste("'",object_sp[i],"'",sep=''),"\"c",""))
data_copy <- sqldf(c(query, "select * from data_copy"))
}
data_copy
}
for(i in 1:length(list_data)){
if(i!=6){
data_copy<-AnhXa(list_data[[i]])
}else{
data_copy<-AnhXa(list_data[[i]],"differentiated")
}
}
## [1] "Cập nhật giá trị cột Race"
## [1] "White" "Black" "Other"
## [1] "Các giá trị tương ứng"
## [1] 1 2 3
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột Marital.Status"
## [1] "Married" "Divorced" "Single " "Widowed" "Separated"
## [1] "Các giá trị tương ứng"
## [1] 1 2 3 4 5
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột T.Stage"
## [1] "T1" "T2" "T3" "T4"
## [1] "Các giá trị tương ứng"
## [1] 1 2 3 4
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột N.Stage"
## [1] "N1" "N2" "N3"
## [1] "Các giá trị tương ứng"
## [1] 1 2 3
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột X6th.Stage"
## [1] "IIA" "IIIA" "IIIC" "IIB" "IIIB"
## [1] "Các giá trị tương ứng"
## [1] 1 2 3 4 5
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột differentiate"
## [1] "Poorly differentiated" "Moderately differentiated"
## [3] "Well differentiated" "Undifferentiated"
## [1] "Các giá trị tương ứng"
## [1] 1 2 3 4
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột Grade"
## [1] "3" "2" "1"
## [4] " anaplastic; Grade IV"
## [1] "Các giá trị tương ứng"
## [1] 1 2 3 4
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột A.Stage"
## [1] "Regional" "Distant"
## [1] "Các giá trị tương ứng"
## [1] 1 2
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột Estrogen.Status"
## [1] "Positive" "Negative"
## [1] "Các giá trị tương ứng"
## [1] 1 2
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột Progesterone.Status"
## [1] "Positive" "Negative"
## [1] "Các giá trị tương ứng"
## [1] 1 2
## [1] "------------------------------------"
## [1] "Cập nhật giá trị cột Status"
## [1] "Alive" "Dead"
## [1] "Các giá trị tương ứng"
## [1] 1 2
## [1] "------------------------------------"
- Cập nhật dữ liệu chữ số thành số.
name_c<-colnames(data_copy)
for(i in 1:length(name_c)){
data_copy[name_c[i]]<-list(as.integer(unlist(data_copy[name_c[i]])))
}
datatable(data_copy,filter = 'top', options = list(pageLength = 5, autoWidth = TRUE))
- Lưu biến dữ liệu:
4.3. Hiển thị dữ liệu lên biểu đồ
- Thống kế thời gian sống kể từ mắc bệnh theo tình trạng hôn nhân của những bênh nhân tử vong
ggplot(data_dead,aes(x=Marital.Status,y=Survival.Months,fill=Marital.Status))+
geom_boxplot(outlier.colour="red")
- Thống kế thời gian sống kể từ mắc bệnh theo màu da của những bênh nhân tử vong
# Scatter plot giữa Age và Survival.Months
ggplot(df, aes(x = Age, y = Survival.Months, color = Status)) +
geom_point() +
labs(title = "Scatter plot giữa Age và Survival.Months",
x = "Age",
y = "Survival.Months",
color = "Status")
# Scatter plot giữa T.Stage và Survival.Months
ggplot(df, aes(x = T.Stage, y = Survival.Months, color = Status)) +
geom_point(position = position_jitterdodge()) +
labs(title = "Scatter plot giữa T.Stage và Survival.Months",
x = "T.Stage",
y = "Survival.Months",
color = "Status")
# Scatter plot giữa N.Stage và Survival.Months
ggplot(df, aes(x = N.Stage, y = Survival.Months, color = Status)) +
geom_point(position = position_jitterdodge()) +
labs(title = "Scatter plot giữa N.Stage và Survival.Months",
x = "N.Stage",
y = "Survival.Months",
color = "Status")
plot1: Scatter Plot thể hiện mối quan hệ của 2 biến Age, Survival.Months
đồng thời thể hiện tình trạng Status giữa độ tuổi và thời gian sống.
plot2,3: Mục đích của 2 đồ thị này có thể là để khám phá mối quan hệ
giữa T.Stage/N.Stage và thời gian sống, cũng như so sánh sự chênh lệch
giữa trạng thái.
# Biểu đồ stacked bar chart cho biến T.Stage và Status
ggplot(df, aes(x = T.Stage, fill = Status)) +
geom_bar(position = "fill", color = "white") +
labs(title = "Stacked Bar Chart cho biến T.Stage và Status",
x = "T.Stage",
y = "Tỉ lệ") +
scale_fill_manual(values = c("#66c2a5", "#fc8d62"), name = "Status") +
theme_minimal()
# Biểu đồ stacked bar chart cho biến Age và Status
ggplot(df, aes(x = Age, fill = Status)) +
geom_bar(position = "fill", color = "white") +
labs(title = "Stacked Bar Chart cho biến Age và Status",
x = "Age",
y = "Tỉ lệ") +
scale_fill_manual(values = c("#66c2a5", "#fc8d62"), name = "Status") +
theme_minimal()
Cả hai biểu đồ stacked bar chart này giúp thấy rõ phân phối của trạng
thái (Survived và Died) dưới sự ảnh hưởng của biến T.Stage và Age. Mỗi
thanh bar biểu diễn một mức độ trạng thái, và màu sắc phản ánh trạng
thái tương ứng.
ggplot(data, aes(x = X6th.Stage, fill = differentiate)) +
geom_bar(position = "stack") +
labs(title = "Distribution of Differentiate by 6th Stage",
x = "6th Stage", y = "Count") +
theme_minimal()
correlation_matrix <- cor(data[, c("Age", "Tumor.Size", "Regional.Node.Examined")])
heatmap(correlation_matrix,
col = colorRampPalette(c("blue", "black","yellow"))(20),
main = "Correlation Heatmap")
- Biểu đồ Pie:
4.4. Bài toán.
4.4.1. Kiểm định giả thuyết:
a)Estrogen status có ảnh hưởng đến Tumor size?
- H0: Estrogen status không ảnh hưởng đến Tumor
size
- H1: Estrogen status ảnh hưởng đến Tumor size
# Vẽ biểu đồ ANOVA
ggplot(data, aes(x = Estrogen.Status, y = Tumor.Size, fill= Tumor.Size)) +
geom_bar(stat = "identity") +
labs(title = "Biểu đồ Stacked Bar",
x = "Estrogen.Status",
y = "Tumor.Size",
fill = "Tumor.Size")
## Df Sum Sq Mean Sq F value Pr(>F)
## Estrogen.Status 1 6371 6371 14.33 0.000156 ***
## Residuals 4022 1788054 445
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
* Df: Số bậc tự do.
* Sum Sq: Tổng bình phương. Tổng bình phương cho biết mức độ phân tán
của dữ liệu trong mỗi nhóm. Trong trường hợp này, tổng bình phương của
nhóm estrogen dương tính (4022) lớn hơn tổng bình phương của nhóm
estrogen âm tính (2349). Điều này cho thấy dữ liệu trong nhóm estrogen
dương tính có sự phân tán lớn hơn.
* Mean Sq: Bình phương trung bình. Bình phương trung bình là tổng bình
phương chia cho số bậc tự do. Trong trường hợp này, bình phương trung
bình của nhóm estrogen dương tính (2011) lớn hơn bình phương trung bình
của nhóm estrogen âm tính (1788). Điều này cho thấy mức độ phân tán của
dữ liệu trong nhóm estrogen dương tính lớn hơn mức độ phân tán của dữ
liệu trong nhóm estrogen âm tính.
* F value: Giá trị F. Giá trị F là tỷ lệ giữa bình phương trung bình của
các nhóm. Trong trường hợp này, giá trị F là 14,33. Do đó, chúng ta có
thể bác bỏ giả thuyết H0 và chấp nhận giả thuyết H1.
* Pr(>F): P-value. P-value là xác suất thu được kết quả phân tích
ANOVA tương tự hoặc lớn hơn khi giả thuyết H0 là đúng. Trong trường hợp
này, P-value là 0,000156. P-value này rất nhỏ, do đó chúng ta có thể bác
bỏ giả thuyết H0 với mức ý nghĩa 0,05.
* Ta có Giá trị p của biến Estrogen.Status (0.000156 < 0.01), do đó
ta bác bỏ H0, Chấp nhận H1 - Estrogen status ảnh hưởng đến Tumor
size
* Giả thuyết rằng trạng thái estrogen ảnh hưởng đến kích thước của khối
u ung thư vú có cơ sở từ các nghiên cứu và quan sát về vai trò của
hormone estrogen trong phát triển và tiến triển của ung thư vú. Dưới đây
là một số giả thuyết có thể giải thích vấn đề này:
- Estrogen và tác động lên tế bào ung thư vú: Estrogen là một hormone
nữ có vai trò quan trọng trong phát triển và duy trì tế bào trong vú.
Khi có sự tăng cường hoạt động estrogen, nó có thể kích thích tế bào ung
thư vú phát triển nhanh hơn và tăng kích thước của khối u.
- Estrogen và tác động lên tế bào ung thư vú: Estrogen là một hormone
nữ có vai trò quan trọng trong phát triển và duy trì tế bào trong vú.
Khi có sự tăng cường hoạt động estrogen, nó có thể kích thích tế bào ung
thư vú phát triển nhanh hơn và tăng kích thước của khối u.
- Hormone estrogen và tăng trưởng mạch máu: Hormone estrogen có thể
tác động đến quá trình tạo mạch máu và cung cấp dưỡng chất cho khối u
ung thư vú. Khi estrogen được sản xuất hoặc tăng lên, nó có thể kích
thích sự phát triển mạch máu xung quanh khối u, làm tăng cung cấp dưỡng
chất và oxy cho tế bào ung thư vú, dẫn đến tăng kích thước của khối
u.
- Hormone estrogen và tăng trưởng mạch máu: Hormone estrogen có thể
tác động đến quá trình tạo mạch máu và cung cấp dưỡng chất cho khối u
ung thư vú. Khi estrogen được sản xuất hoặc tăng lên, nó có thể kích
thích sự phát triển mạch máu xung quanh khối u, làm tăng cung cấp dưỡng
chất và oxy cho tế bào ung thư vú, dẫn đến tăng kích thước của khối
u.
- Tác động của hormone estrogen trong điều trị: Hormone estrogen có
thể ảnh hưởng đến hiệu quả của một số liệu trình điều trị trong ung thư
vú, chẳng hạn như điều trị hormonal dựa trên estrogen (như tamoxifen)
hoặc điều trị tiêu diệt hormone (như hormonotherapy). Nếu khối u ung thư
vú phụ thuộc vào estrogen để phát triển, việc kiểm soát hoặc giảm hoạt
động estrogen có thể ảnh hưởng đến kích thước của khối u.
- Tác động của hormone estrogen trong điều trị: Hormone estrogen có
thể ảnh hưởng đến hiệu quả của một số liệu trình điều trị trong ung thư
vú, chẳng hạn như điều trị hormonal dựa trên estrogen (như tamoxifen)
hoặc điều trị tiêu diệt hormone (như hormonotherapy). Nếu khối u ung thư
vú phụ thuộc vào estrogen để phát triển, việc kiểm soát hoặc giảm hoạt
động estrogen có thể ảnh hưởng đến kích thước của khối u.
b) Estrogen status có ảnh hưởng đến 6thStage?
- H0: Estrogen status không ảnh hưởng đến
6thStage
- H1: Estrogen status ảnh hưởng đến 6thStage
# Vẽ biểu đồ ANOVA
ggplot(data, aes(x = X6th.Stage, y = Estrogen.Status, fill= Estrogen.Status)) +
geom_bar(stat = "identity") +
labs(title = "Biểu đồ Stacked Bar",
x = "X6th.Stage",
y = "Estrogen.Status",
fill = "Estrogen.Status")
## Df Sum Sq Mean Sq F value Pr(>F)
## Estrogen.Status 1 11 10.843 6.999 0.00819 **
## Residuals 4022 6231 1.549
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
* Trong trường hợp này, F value là khá cao (6.999) và
p-value là rất thấp (0.00819 < 0.01). Điều này cho thấy có sự khác
biệt có ý nghĩa thống kê giữa estrogen status và 6thStage. Nói cách
khác, estrogen status có ảnh hưởng đến 6thStage. Do đó ta bác bỏ H0,
Chấp nhận H1 - Estrogen status ảnh hưởng đến X6th.Stage
Estrogen có tác động quan trọng đến sự phát triển và tiến triển của ung thư vú. Nó được biết đến là một yếu tố quan trọng trong việc tạo ra môi trường thuận lợi cho tế bào ung thư vú phát triển.
Trong môi trường estrogen giàu, estrogen tương tác với các receptor estrogen trên tế bào ung thư vú, gây kích thích tế bào và thúc đẩy sự phân chia tế bào. Điều này có thể dẫn đến tăng tốc độ phát triển của khối u và sự lan truyền của tế bào ung thư vú. Trạng thái estrogen dương tính, nghĩa là có mức độ estrogen cao hoặc hoạt động của receptor estrogen tăng, có thể làm gia tăng nguy cơ ung thư vú phát triển và tiến triển đến các giai đoạn nâng cao như giai đoạn IIIB và IIIC trong hệ thống AJCC 6th.
c) 6thStage có ảnh hưởng đến Survival Months?
- H0: 6thStage không ảnh hưởng đến Survival
Months
- H1: 6thStage ảnh hưởng đến Survival Months
# Vẽ biểu đồ ANOVA
ggplot(data, aes(x = Survival.Months, y = X6th.Stage, fill= X6th.Stage)) +
geom_bar(stat = "identity") +
labs(title = "Biểu đồ Stacked Bar",
x = "Survival.Months",
y = "X6th.Stage",
fill = "X6th.Stage")
## Df Sum Sq Mean Sq F value Pr(>F)
## X6th.Stage 1 6080 6080 11.6 0.000665 ***
## Residuals 4022 2107572 524
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
* Ta có Giá trị p của biến Estrogen.Status (0.000665
< 0.01), do đó ta bác bỏ H0, Chấp nhận H1 - 6thStage ảnh hưởng đến
Survival Months
* Giai đoạn của ung thư vú theo hệ thống AJCC 6th có tác động đáng kể
đến dự đoán về sống sót của bệnh nhân. Mỗi giai đoạn và phụ giai đoạn
của ung thư vú có các đặc điểm riêng và ảnh hưởng đến kết quả điều trị
và sống sót của bệnh nhân.
* Thường thì, các giai đoạn sớm hơn có dự đoán sống sót tốt hơn so với
các giai đoạn tiến triển. Điều này là do giai đoạn sớm hơn thường có
khối u nhỏ hơn, không lan truyền xa và ít ảnh hưởng đến các cơ quan khác
trong cơ thể.
* Giai đoạn và phụ giai đoạn của ung thư vú cũng có thể ảnh hưởng đến
phương pháp điều trị được lựa chọn. Ví dụ, trong các giai đoạn sớm, có
thể sử dụng phẫu thuật để loại bỏ khối u và/hoặc xạ trị để tiêu diệt tế
bào ung thư còn lại. Trong các giai đoạn tiến triển hơn, điều trị có thể
bao gồm cả hóa trị và/hoặc điều trị hormone.
4.4.2. Bài toán: Tạo ra mô hình để kiểm tra các thuộc tính: Dự đoán Sống hoặc Chết của người bệnh Ung thư vú dựa vào các nhân tố như Tuổi, Chủng tộc, Tình trạng Es/Pro và một số nhân tố khác có trong tệp dữ liệu sử dụng hồi quy logistic.
- Đầu vào:Một số biến trong tệp dữ liệu
- Đầu ra:Sống hoặc Chết
- Lý do chọn mô hình:
Biến phụ thuộc là một biến nhị phân: Bạn đang quan tâm đến việc dự đoán liệu một bệnh nhân sẽ sống sót hay không (1 - Alive, 0 - Dead). Mô hình hồi quy logistic là lựa chọn phù hợp cho bài toán phân loại nhị phân này.
Khả năng xử lý các biến độc lập liên tục và rời rạc: Mô hình hồi quy logistic có thể xử lý cả biến liên tục và biến rời rạc, nên nó phù hợp với nhiều loại dữ liệu.
- Hiểu cấu trúc của dataset
# Đọc dữ liệu từ dataframe (hoặc tạo dataframe từ dữ liệu)
df <- read.csv("./Data/1_Breast_Cancer.csv")
str(df)
## 'data.frame': 4024 obs. of 16 variables:
## $ Age : int 68 50 58 58 47 51 51 40 40 69 ...
## $ Race : chr "White" "White" "White" "White" ...
## $ Marital.Status : chr "Married" "Married" "Divorced" "Married" ...
## $ T.Stage : chr "T1" "T2" "T3" "T1" ...
## $ N.Stage : chr "N1" "N2" "N3" "N1" ...
## $ X6th.Stage : chr "IIA" "IIIA" "IIIC" "IIA" ...
## $ differentiate : chr "Poorly differentiated" "Moderately differentiated" "Moderately differentiated" "Poorly differentiated" ...
## $ Grade : chr "3" "2" "2" "3" ...
## $ A.Stage : chr "Regional" "Regional" "Regional" "Regional" ...
## $ Tumor.Size : int 4 35 63 18 41 20 8 30 103 32 ...
## $ Estrogen.Status : chr "Positive" "Positive" "Positive" "Positive" ...
## $ Progesterone.Status : chr "Positive" "Positive" "Positive" "Positive" ...
## $ Regional.Node.Examined: int 24 14 14 2 3 18 11 9 20 21 ...
## $ Reginol.Node.Positive : int 1 5 7 1 1 2 1 1 18 12 ...
## $ Survival.Months : int 60 62 75 84 50 89 54 14 70 92 ...
## $ Status : chr "Alive" "Alive" "Alive" "Alive" ...
- Hiển thị 6 dòng dữ liệu đầu tiên và cuối
- Một số thống kê mô tả về tập dữ liệu
## Age Race Marital.Status T.Stage
## Min. :30.00 Length:4024 Length:4024 Length:4024
## 1st Qu.:47.00 Class :character Class :character Class :character
## Median :54.00 Mode :character Mode :character Mode :character
## Mean :53.97
## 3rd Qu.:61.00
## Max. :69.00
## N.Stage X6th.Stage differentiate Grade
## Length:4024 Length:4024 Length:4024 Length:4024
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## A.Stage Tumor.Size Estrogen.Status Progesterone.Status
## Length:4024 Min. : 1.00 Length:4024 Length:4024
## Class :character 1st Qu.: 16.00 Class :character Class :character
## Mode :character Median : 25.00 Mode :character Mode :character
## Mean : 30.47
## 3rd Qu.: 38.00
## Max. :140.00
## Regional.Node.Examined Reginol.Node.Positive Survival.Months
## Min. : 1.00 Min. : 1.000 Min. : 1.0
## 1st Qu.: 9.00 1st Qu.: 1.000 1st Qu.: 56.0
## Median :14.00 Median : 2.000 Median : 73.0
## Mean :14.36 Mean : 4.158 Mean : 71.3
## 3rd Qu.:19.00 3rd Qu.: 5.000 3rd Qu.: 90.0
## Max. :61.00 Max. :46.000 Max. :107.0
## Status
## Length:4024
## Class :character
## Mode :character
##
##
##
Trong ma trận trên:
Các hàng và cột trong ma trận biểu thị các biến số hoặc thuộc tính trong dataframe.
Giá trị trong ma trận là các hệ số tương quan tuyến tính Pearson (Pearson correlation coefficients) giữa các cặp biến số. Giá trị nằm trong khoảng từ -1 đến 1:
Nếu giá trị gần 1, nó biểu thị mối tương quan dương mạnh, tức là khi một biến tăng, biến kia cũng tăng.
Nếu giá trị gần -1, nó biểu thị mối tương quan âm mạnh, tức là khi một biến tăng, biến kia giảm.
Nếu giá trị gần 0, nó biểu thị mối tương quan yếu hoặc không tương quan tuyến tính giữa các biến.
Từ biểu đồ trên, không có mối tương quan mạnh mẽ được quan sát giữa các biến.
- Độ chính xác cơ bản
##
## Alive Dead
## 3408 616
baseline <- round(3408/nrow(df),2) # tính toán giá trị cơ sở dựa trên số lượng đối tượng xác định là còn sống
baseline
## [1] 0.85
Không chọn mô hình có độ chính xác thấp hơn mô hình cơ sở. Trong trường hợp này là 0,85
Chuẩn bị dữ liệu
# Đọc dữ liệu từ dataframe (hoặc tạo dataframe từ dữ liệu)
#df <- read.csv("./data/1_Breast_Cancer.csv")
# Chuyển thành factor
df$Race <- as.factor(df$Race)
df$Marital.Status <- as.factor(df$Marital.Status)
df$T.Stage <- as.factor(df$T.Stage)
df$N.Stage <- as.factor(df$N.Stage)
df$differentiate <- as.factor(df$differentiate)
df$Estrogen.Status <- as.factor(df$Estrogen.Status)
df$Progesterone.Status <- as.factor(df$Progesterone.Status)
df$X6th.Stage <- as.factor(df$X6th.Stage)
df$differentiate <- as.factor(df$differentiate)
df$Status <- as.factor(df$Status)
- Chia tập train và test
# Chuyển thành số(1 for Dead, 0 for Alive)
df$Status <- ifelse(df$Status == "Dead", 1, 0)
set.seed(123)
splitIndex <- createDataPartition(df$Status, p = 0.75, list = FALSE)
train_data <- df[splitIndex, ]
test_data <- df[-splitIndex, ]
- Fit Model
# Fit logistic regression model
model <- glm(Status ~ . -X6th.Stage - Grade , data = train_data, family = "binomial")
# Hiển thị model
summary(model)
##
## Call:
## glm(formula = Status ~ . - X6th.Stage - Grade, family = "binomial",
## data = train_data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.348216 0.691827 1.949 0.051322 .
## Age 0.031413 0.007764 4.046 5.21e-05 ***
## RaceOther -0.890832 0.338443 -2.632 0.008485 **
## RaceWhite -0.462963 0.219824 -2.106 0.035199 *
## Marital.StatusMarried -0.251065 0.192313 -1.305 0.191723
## Marital.StatusSeparated 0.337963 0.575832 0.587 0.557263
## Marital.StatusSingle -0.164070 0.239656 -0.685 0.493594
## Marital.StatusWidowed -0.026971 0.297436 -0.091 0.927749
## T.StageT2 0.479479 0.176931 2.710 0.006729 **
## T.StageT3 0.628506 0.363835 1.727 0.084087 .
## T.StageT4 1.697288 0.441095 3.848 0.000119 ***
## N.StageN2 0.262332 0.174991 1.499 0.133843
## N.StageN3 0.170038 0.332478 0.511 0.609053
## differentiatePoorly differentiated 0.440036 0.143671 3.063 0.002193 **
## differentiateUndifferentiated 1.204651 0.920314 1.309 0.190549
## differentiateWell differentiated -0.713124 0.246960 -2.888 0.003882 **
## A.StageRegional 0.219423 0.380480 0.577 0.564142
## Tumor.Size -0.002560 0.005489 -0.466 0.640906
## Estrogen.StatusPositive -0.454747 0.266438 -1.707 0.087866 .
## Progesterone.StatusPositive -0.540311 0.177891 -3.037 0.002387 **
## Regional.Node.Examined -0.029171 0.009214 -3.166 0.001546 **
## Reginol.Node.Positive 0.088340 0.020935 4.220 2.45e-05 ***
## Survival.Months -0.064780 0.003315 -19.543 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2576.7 on 3017 degrees of freedom
## Residual deviance: 1642.5 on 2995 degrees of freedom
## AIC: 1688.5
##
## Number of Fisher Scoring iterations: 6
- Dự đoán kết quả dữ liệu trên tập Training
PredictTrain <- predict(model, type = "response") # dự đoán xác suất xảy ra sự kiện cho mỗi quan sát trong tập Train
summary(PredictTrain)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00130 0.01948 0.05953 0.15242 0.17458 0.99617
- Tính toán dự đoán trung bình cho mỗi kết quả trong số hai kết quả
# tính giá trị trung bình của dự đoán (xác suất dự đoán) dựa trên biến mục tiêu "Status" trong tập dữ liệu "Train"
tapply(PredictTrain, train_data$Status, mean)
## 0 1
## 0.09377671 0.47851992
- Xây dựng Confusion Matrix
Confusion Matrix: So sánh kết quả thực tế với kết quả dự đoán.
Predicted = 0 | Predicted = 1 | |
---|---|---|
Actual = 0 | True Negatives (TN) | False Positives (FP) |
Actual = 1 | False Negatives (FN) | True Positives (TP) |
Trong đó:
True Negatives (TN): Số lượng trường hợp thực tế là một lớp âm (chẳng hạn không mắc bệnh) và mô hình cũng dự đoán là một lớp âm.
False Positives (FP): Số lượng trường hợp thực tế là một lớp âm nhưng mô hình dự đoán là một lớp dương (không mắc bệnh nhưng mô hình dự đoán mắc bệnh).
False Negatives (FN): Số lượng trường hợp thực tế là một lớp dương nhưng mô hình dự đoán là một lớp âm (chẳng hạn, mắc bệnh nhưng mô hình dự đoán không mắc bệnh).
True Positives (TP): Số lượng trường hợp thực tế là một lớp dương và mô hình cũng dự đoán là một lớp dương (chẳng hạn, mắc bệnh và mô hình dự đoán mắc bệnh).
Sensitivity (True Positive Rate): tỷ lệ các trường hợp dương thực tế mà mô hình đã dự đoán đúng = TP / (TP + FN)
Specificity (True Negative Rate): tỷ lệ các trường hợp âm thực tế mà mô hình đã dự đoán đúng = TN / (TN + FP)
Khi sử dụng một ngưỡng cao (high threshold) để quyết định lớp dương và lớp âm => Specificity cao (ít False Positives) nhưng Sensitivity thấp (nhiều False Negatives) => chỉ xác định một trường hợp dương khi nó rất tự tin về dự đoán đó.
Khi sử dụng một ngưỡng thấp (low threshold) => Sensitivity cao (ít False Negatives) nhưng Specificity thấp (nhiều False Positives) => xác định nhiều trường hợp dương, bao gồm cả những trường hợp mà nó không tự tin lắm.
- Ngưỡng 0.7
##
## FALSE TRUE
## 0 2532 26
## 1 314 146
# Độ chính xác
accuracy_0.7 <- round(sum(diag(threshold_0.7))/sum(threshold_0.7),2)
sprintf('Accuracy is %s', accuracy_0.7)
## [1] "Accuracy is 0.89"
## [1] "Mis-classification error is 0.11"
sensitivity0.7 <- round(133/(292+133),2)
specificity0.7 <- round(2368/(2368+24),2)
sprintf("Sensitivity at 0.7 threshold: %s", sensitivity0.7)
## [1] "Sensitivity at 0.7 threshold: 0.31"
## [1] "Specificity at 0.7 threshold: 0.99"
- 0.5
##
## FALSE TRUE
## 0 2504 54
## 1 245 215
# Độ chính xác
accuracy_0.5 <- round(sum(diag(threshold_0.5))/sum(threshold_0.5),2)
sprintf('Accuracy is %s', accuracy_0.5)
## [1] "Accuracy is 0.9"
## [1] "Mis-classification error is 0.1"
sensitivity0.5 <- round(197/(228+197),2)
specificity0.5 <- round(2341/(2341+51),2)
sprintf("Sensitivity at 0.5 threshold: %s", sensitivity0.5)
## [1] "Sensitivity at 0.5 threshold: 0.46"
## [1] "Specificity at 0.5 threshold: 0.98"
- 0.2
##
## FALSE TRUE
## 0 2210 348
## 1 126 334
# Độ chính xác
accuracy_0.2 <- round(sum(diag(threshold_0.2))/sum(threshold_0.2),2)
sprintf('Accuracy is %s', accuracy_0.2)
## [1] "Accuracy is 0.84"
## [1] "Mis-classification error is 0.16"
sensitivity0.2 <- round(308/(308+117),2)
specificity0.2 <- round(2065/(2065+327),2)
sprintf("Sensitivity at 0.2 threshold: %s", sensitivity0.2)
## [1] "Sensitivity at 0.2 threshold: 0.72"
## [1] "Specificity at 0.2 threshold: 0.86"
- Đường cong ROC
Đường cong ROC sẽ giúp chúng ta quyết định ngưỡng nào là tốt nhất.
Ngưỡng cao:
Độ đặc hiệu cao
Độ nhạy thấp
Ngưỡng thấp:
Độ đặc hiệu thấp
Độ nhạy cao
# Tạo đường cong ROC
ROCRpred = prediction(PredictTrain, train_data$Status) # chuẩn bị dữ liệu để tính hiệu suất và vẽ ROC curve.
ROCRperf = performance(ROCRpred, "tpr", "fpr") # chỉ định "tpr" và "fpr" tính True Positive Rate (tpr) và False Positive Rate (fpr) để vẽ ROC curve
# Thêm nhãn ngưỡng
plot(ROCRperf, colorize=TRUE, print.cutoffs.at = seq(0,1,0.1), text.adj = c(-0.2, 1.7))
abline(a=0, b=1) # vẽ đường thẳng từ gốc tọa độ (a = 0) với độ dốc 45 độ (b = 1)
# tính giá trị AUC (Area Under the Curve) của mô hình dựa trên dữ liệu Train, sau đó thêm nó vào đồ thị ROC curve.
auc_train <- round(as.numeric(performance(ROCRpred, "auc")@y.values),2)
legend(.8, .2, auc_train, title = "AUC", cex=1)
- Giải thích mô hình
AUC (Vùng diện tích dưới đường cong ROC): Giá trị tuyệt đối của chất lượng dự đoán.
AUC = Maximum of 1 (Dự đoán hoàn hảo)
AUC = minimum of 0.5 (chỉ đoán thôi)
Dự đoán trên tập Test
# Đưa ra dự đoán trên tập kiểm tra
PredictTest <- predict(model, type = "response", newdata = test_data) # sử dụng mô hình model để dự đoán kết quả trên tập dữ liệu kiểm tra (test).
# Chuyển đổi xác suất thành giá trị
## Dựa vào đường cong ROC ở trên, chọn ngưỡng t = 0,5
test_tab <- table(test_data$Status, PredictTest > 0.5)
test_tab
##
## FALSE TRUE
## 0 825 25
## 1 87 69
accuracy_test <- round(sum(diag(test_tab))/sum(test_tab),2)
sprintf("Accuracy on test set is %s", accuracy_test)
## [1] "Accuracy on test set is 0.89"
- Tính toán AUC trên bộ Test
ROCRPredTest = prediction(PredictTest, test_data$Status)
auc = round(as.numeric(performance(ROCRPredTest, "auc")@y.values),2)
auc
## [1] 0.86
AUC là một thước đo của khả năng phân loại của mô hình, nằm trong khoảng từ 0 đến 1. AUC càng gần 1, mô hình càng tốt.0,86, Điều này cho thấy mô hình có khả năng tốt trong việc phân loại các trạng thái dự đoán và thực tế trên dữ liệu kiểm thử.
Ý nghĩa bài toán:
Dự đoán Xác suất Sống sót hoặc Tử vong: Mô hình có thể được sử dụng để dự đoán xác suất sống sót hoặc tử vong của bệnh nhân dựa trên thông tin đầu vào như tuổi, tình trạng hôn nhân, tình trạng của tuyến vú, mức độ phân biệt tế bào, và các yếu tố khác.
Đánh giá Ảnh hưởng của Các Nhân Tố: Bạn có thể đánh giá tác động của từng biến độc lập lên khả năng sống sót của bệnh nhân. Điều này có thể giúp hiểu rõ hơn về yếu tố nào có ảnh hưởng lớn đến kết quả và có thể trở thành đối tượng can thiệp trong quá trình điều trị.
Lựa chọn Bệnh nhân cho Can thiệp Chăm sóc Đặc biệt: Dựa trên xác suất dự đoán của mô hình, bạn có thể xác định nhóm bệnh nhân có rủi ro cao hơn và tập trung các biện pháp can thiệp chăm sóc và điều trị cho nhóm này.
Tư vấn Quyết định Chăm sóc: Mô hình có thể hỗ trợ quyết định về lịch trình chăm sóc, chế độ điều trị, và theo dõi bệnh nhân theo thời gian để cải thiện kết quả sống sót.
Nghiên cứu và Phát triển: Mô hình có thể làm cơ sở cho các nghiên cứu thêm sâu về yếu tố ảnh hưởng đến sống sót của bệnh nhân ung thư vú, giúp phát triển kiến thức và phương pháp điều trị mới.
Trước khi áp dụng mô hình vào thực tế, hãy đảm bảo rằng nó đã được đánh giá đầy đủ, kiểm tra độ chính xác và độ tin cậy trên tập kiểm tra, và được xác minh trong ngữ cảnh của ứng dụng cụ thể trong lĩnh vực chăm sóc sức khỏe.
4.4.3. Bài toán: Tạo mô hình để dự đoán Status(Dead or Alive) dựa trên Age, Estrogen.Status, X6th.Stage, Survival.Months sử dụng desicion tree.
- Đầu vào là tập dữ liệu train với các thuộc tính Age, Estrogen.Status, X6th.Stage, Survival.Months, Status để tiến hành train, và tập dữ liệu test để dự đoán
- Đầu ra là kết quả dự đoán trên tập train
# Tạo tập dữ liệu huấn luyện và tập dữ liệu kiểm tra
create_train_test <- function(data, size = 0.8, train = TRUE) {
n_row <- nrow(data)
total_row <- size * n_row
train_sample <- sample(1:n_row, size = total_row, replace = FALSE)
if (train == TRUE) {
return(data[train_sample, ])
} else {
return(data[-train_sample, ])
}
}
#lấy các thuộc tính cần thiết
selected_data <- data[, c("Age", "Estrogen.Status", "X6th.Stage","Survival.Months","Status")]
#Sử dụng hàm để tạo các tập train và test
data_train <- create_train_test(selected_data, 0.8, train = TRUE)
data_test <- create_train_test(selected_data, 0.8, train = FALSE)
datatable(data_train,filter = 'top', options = list(pageLength = 5, autoWidth = TRUE))
#Xây dựng mô hình cây quyết định với "Status" là biến target variable
model <- rpart(Status~ ., data = data_train, method = "class")
#Vẽ cây quyết định
rpart.plot(model,extra = 106)
- Kiểm tra độ chính xác
## predictions
## Alive Dead
## Alive 673 9
## Dead 55 68
#Tính độ chính xác
accuracy <- sum(data_test$Status == predictions) / nrow(data_test)
print(paste("Accuracy:", accuracy))
## [1] "Accuracy: 0.920496894409938"
Phần 5. Breast Cancer Wisconsin (Diagnostic).
5.1. Trích xuất và đọc dữ liệu
- Trích xuất dữ liệu
data <- read.csv("./Data/2_ Breast_Cancer.csv")
datatable(data,filter = 'top', options = list(pageLength = 5, autoWidth = TRUE))
- Tóm tắt dữ liệu
## id diagnosis radius_mean texture_mean
## Min. : 8670 Length:569 Min. : 6.981 Min. : 9.71
## 1st Qu.: 869218 Class :character 1st Qu.:11.700 1st Qu.:16.17
## Median : 906024 Mode :character Median :13.370 Median :18.84
## Mean : 30371831 Mean :14.127 Mean :19.29
## 3rd Qu.: 8813129 3rd Qu.:15.780 3rd Qu.:21.80
## Max. :911320502 Max. :28.110 Max. :39.28
## perimeter_mean area_mean smoothness_mean compactness_mean
## Min. : 43.79 Min. : 143.5 Min. :0.05263 Min. :0.01938
## 1st Qu.: 75.17 1st Qu.: 420.3 1st Qu.:0.08637 1st Qu.:0.06492
## Median : 86.24 Median : 551.1 Median :0.09587 Median :0.09263
## Mean : 91.97 Mean : 654.9 Mean :0.09636 Mean :0.10434
## 3rd Qu.:104.10 3rd Qu.: 782.7 3rd Qu.:0.10530 3rd Qu.:0.13040
## Max. :188.50 Max. :2501.0 Max. :0.16340 Max. :0.34540
## concavity_mean concave.points_mean symmetry_mean fractal_dimension_mean
## Min. :0.00000 Min. :0.00000 Min. :0.1060 Min. :0.04996
## 1st Qu.:0.02956 1st Qu.:0.02031 1st Qu.:0.1619 1st Qu.:0.05770
## Median :0.06154 Median :0.03350 Median :0.1792 Median :0.06154
## Mean :0.08880 Mean :0.04892 Mean :0.1812 Mean :0.06280
## 3rd Qu.:0.13070 3rd Qu.:0.07400 3rd Qu.:0.1957 3rd Qu.:0.06612
## Max. :0.42680 Max. :0.20120 Max. :0.3040 Max. :0.09744
## radius_se texture_se perimeter_se area_se
## Min. :0.1115 Min. :0.3602 Min. : 0.757 Min. : 6.802
## 1st Qu.:0.2324 1st Qu.:0.8339 1st Qu.: 1.606 1st Qu.: 17.850
## Median :0.3242 Median :1.1080 Median : 2.287 Median : 24.530
## Mean :0.4052 Mean :1.2169 Mean : 2.866 Mean : 40.337
## 3rd Qu.:0.4789 3rd Qu.:1.4740 3rd Qu.: 3.357 3rd Qu.: 45.190
## Max. :2.8730 Max. :4.8850 Max. :21.980 Max. :542.200
## smoothness_se compactness_se concavity_se concave.points_se
## Min. :0.001713 Min. :0.002252 Min. :0.00000 Min. :0.000000
## 1st Qu.:0.005169 1st Qu.:0.013080 1st Qu.:0.01509 1st Qu.:0.007638
## Median :0.006380 Median :0.020450 Median :0.02589 Median :0.010930
## Mean :0.007041 Mean :0.025478 Mean :0.03189 Mean :0.011796
## 3rd Qu.:0.008146 3rd Qu.:0.032450 3rd Qu.:0.04205 3rd Qu.:0.014710
## Max. :0.031130 Max. :0.135400 Max. :0.39600 Max. :0.052790
## symmetry_se fractal_dimension_se radius_worst texture_worst
## Min. :0.007882 Min. :0.0008948 Min. : 7.93 Min. :12.02
## 1st Qu.:0.015160 1st Qu.:0.0022480 1st Qu.:13.01 1st Qu.:21.08
## Median :0.018730 Median :0.0031870 Median :14.97 Median :25.41
## Mean :0.020542 Mean :0.0037949 Mean :16.27 Mean :25.68
## 3rd Qu.:0.023480 3rd Qu.:0.0045580 3rd Qu.:18.79 3rd Qu.:29.72
## Max. :0.078950 Max. :0.0298400 Max. :36.04 Max. :49.54
## perimeter_worst area_worst smoothness_worst compactness_worst
## Min. : 50.41 Min. : 185.2 Min. :0.07117 Min. :0.02729
## 1st Qu.: 84.11 1st Qu.: 515.3 1st Qu.:0.11660 1st Qu.:0.14720
## Median : 97.66 Median : 686.5 Median :0.13130 Median :0.21190
## Mean :107.26 Mean : 880.6 Mean :0.13237 Mean :0.25427
## 3rd Qu.:125.40 3rd Qu.:1084.0 3rd Qu.:0.14600 3rd Qu.:0.33910
## Max. :251.20 Max. :4254.0 Max. :0.22260 Max. :1.05800
## concavity_worst concave.points_worst symmetry_worst fractal_dimension_worst
## Min. :0.0000 Min. :0.00000 Min. :0.1565 Min. :0.05504
## 1st Qu.:0.1145 1st Qu.:0.06493 1st Qu.:0.2504 1st Qu.:0.07146
## Median :0.2267 Median :0.09993 Median :0.2822 Median :0.08004
## Mean :0.2722 Mean :0.11461 Mean :0.2901 Mean :0.08395
## 3rd Qu.:0.3829 3rd Qu.:0.16140 3rd Qu.:0.3179 3rd Qu.:0.09208
## Max. :1.2520 Max. :0.29100 Max. :0.6638 Max. :0.20750
5.2. Tiền xử lý dữ liệu
- Sao chép dữ liệu để xử lý dữ liệu trên bản sao không gây ảnh hưởng đến dữ liệu gốc.
- Kiểm tra xem có tồn tại giá trị na không?
if(length(data_copy[is.na(data_copy)])==0){
print("Không tồn tại giá trị na")
}else{
print("Tồn tại gái trị na")
}
## [1] "Không tồn tại giá trị na"
- Loại bỏ cột id
data_copy<-data_copy[,-c(1)]
datatable(data_copy,filter = 'top', options = list(pageLength = 5, autoWidth = TRUE))
- Tiến hành chuyển chữ thành số trong diagnosis, với 0 là M, 1 là B
query <- paste("update data_copy set diagnosis=1 where diagnosis='M'")
data_copy <- sqldf(c(query, "select * from data_copy"))
query <- paste("update data_copy set diagnosis=0 where diagnosis='B'")
data_copy <- sqldf(c(query, "select * from data_copy"))
data_copy["diagnosis"]<-list(as.numeric(unlist(data_copy["diagnosis"])))
datatable(data_copy,filter = 'top', options = list(pageLength = 5, autoWidth = TRUE))
5.3. Hiển thị dữ liệu lên biểu đồ
- Biểu đồ bar hiển thị số lượng khối u ác tính (M) và số lượng khối u lành tính (B)
M_B_tg<-data.frame(c(sqldf("select `diagnosis`,count(*) as sl from data group by `diagnosis`")))
ggplot(data=M_B_tg, aes(x=diagnosis, y=sl)) + geom_bar(stat="identity",color="steelblue",fill="steelblue")+ ggtitle("M_B")
- Biểu đồ histogram thể hiện kết quả bán kính khối u, bán kính sai số chuẩn của khối u và bán kính lớn nhất của khối u có thể đạt được trong tập dữ liệu.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
- Biểu đồ bubble chart thể hiện sự tương quan của compactness_mean, concavity_mean, fractal_dimension_mean
ggplot(data_copy,aes(x=compactness_mean, y=concavity_mean,size=fractal_dimension_mean,color=fractal_dimension_mean))+ geom_point(alpha=0.5) + labs(title = "Bubble Chart")
- Tính tương quan giữa các thuộc tính của dữ liệu
- Nhìn vào biểu đồ ta thấy diagnosis bị ảnh hưởng nhiều bởi các thuộc tính: radius_mean, perimeter_mean, area_mean, concavity_mean, concave points_mean, fractal_dimension_se, texture_worst, perimeter_worst, concavity_worst
5.4. Bài Toán: Xây dựng mô hình dự đoán khối u là lành tính hay ác tính thông qua các chỉ số được nhập vào xử dụng Random Forest
- Đầu vào là các chỉ số
- Đầu ra là xác định đây là khối u lành tính hay ác tính với: 0 là M(malignant), 1 là B(benign)
- Sử dụng Random Forest.
- Chia dữ liệu thành huấn luyện và kiểm tra. 70% dành cho đào tạo, 30% dành cho kiểm tra.
set.seed(123)
samp <- sample(nrow(data_copy), 0.7 * nrow(data_copy))
train <- data_copy[samp, ]
test <- data_copy[-samp, ]
- Mô hình sử dụng random forest:
- Lý do lựa chọn mô hình là: Bởi vì bài toán thuộc dạng phân lớp 0 ~ M và 1 ~ B. Ngoài ra em thấy có nhiều thuộc tính để training thì em thấy có một vài môt hình sử dụng được như là: decision tree, random forest,… Và cuối cùng em chọn radom forest để training bởi vì tính chất rất khó có khả năng gây ra overfitting. (Ngoại trừ khi tập dữ liệu bị sai.)
# Check Something
ames_dt1 <- randomForest(diagnosis ~ `radius_mean`+`perimeter_mean`+`area_mean`+`concavity_mean`+`concave.points_mean`+ `fractal_dimension_se`+`texture_worst`+`perimeter_worst`+ `concavity_worst`,data = train,ntree = 800
)
ames_dt1
##
## Call:
## randomForest(formula = diagnosis ~ radius_mean + perimeter_mean + area_mean + concavity_mean + concave.points_mean + fractal_dimension_se + texture_worst + perimeter_worst + concavity_worst, data = train, ntree = 800)
## Type of random forest: regression
## Number of trees: 800
## No. of variables tried at each split: 3
##
## Mean of squared residuals: 0.03764961
## % Var explained: 83.43
- Chọn ngưỡng cây(n=800) Làm sao để kiếm được ngưỡng tối ưu nhất: ntree = 800 ? (Dựa vào biểu đồ)
- Predicting the Test set results
## 1 2 9 15 17 18
## 0.8646875 0.9922500 0.9881042 0.9507917 0.7162292 1.0000000
- Trình bày biểu đồ dữ liệu ở đây trước khi làm tròn:
- Làm tròn dữ liệu
## 1 2 9 15 17 18
## 1 1 1 1 1 1
- Kiểm tra lỗi
- Sử dụng Confusion matrix
## y_pred
## 0 1
## 0 95 3
## 1 4 69
Ta có:
Giá trị dự doán đúng cho 0 ~ M là: 95
Giá trị dự đoán sai cho 0 ~ M là: 3
Giá trị dự doán đúng cho 1 ~ B là: 69
Giá trị dự đoán sai cho 1 ~ B là: 4
calculate sensitivity ~ true positive rate
## [1] 0.959596
- calculate specificity ~ true negative rate
## [1] 0.9583333
- Kiểm tra lỗi
- Kiểm tra lỗi thông qua mean: ~ Mean percentage error
## [1] 0.03225806
- Kiểm tra lỗi thông qua mean: ~ Abs Mean percentage error
## [1] 0.2258065
- Cách mà RandomForest hoạt động đối với tập dữ liệu:
** Cách mà RandomForest hoạt động:
- Các giai đoạn bao
gồm: * Bagging: Tạo ra những tập con khác biệt với dữ liệu được train.
Kết quả cuối cùng dựa trên biểu quyết đa số * Aggregation : Các mô hình
được đào tạo riêng lẻ, mang lại các kết quả khác nhau * Voting: Dựa vào
số lượng đầu ra, quyết định nào có trọng lượng hơn hay nhiều hơn thì sẽ
chọn kết quả đó.
- Thông tin thêm về Random Forest:
- Entropy: Nó là thước đo tính ngẫu nhiên hoặc không thể đoán trước trong tập dữ liệu.
Information Gain: Thước đo mức độ giảm entropy sau khi tập dữ liệu được phân chia là mức tăng thông tin.
Leaf Node: Nút lá là nút mang sự phân loại hoặc quyết định.
Decision Node: Một nút có hai hoặc nhiều nhánh.
Root Node: Nút gốc là nút quyết định trên cùng, là nơi bạn có tất cả dữ liệu của mình.
In ra hình ảnh rừng.(mang tính tương đối.)
png(file="./Image/saving_plot2.png",
width=4000, height=900)
reprtree:::plot.getTree(ames_dt1)
dev.off()
## png
## 2
- Hiển thị ảnh:
Phần 6. Kết luận.
- Trong quá trình thực hiện bài tập,nhóm tiến hành tiền xử lý dữ liệu, kiểm tra và chuyển đổi chuỗi thành số, đồng thời xử lý giá trị NaN nếu có. Điều này giúp đảm bảo rằng dữ liệu đầu vào cho các mô hình học máy là chính xác và đầy đủ. Tiếp theo, nhóm đã trực quan hóa dữ liệu để hiểu rõ hơn về phân bố các giá trị. Biểu đồ pie đã thể hiện tỷ lệ giữa các giá trị cho các thuộc tính trong tập dữ liệu đầu tiên. Đối với tập dữ liệu thứ hai, nhóm đã sử dụng biểu đồ cột để thể hiện giá trị của hai nhãn M và B. Ngoài ra, biểu đồ tương quan đã giúp nhóm khám phá mối quan hệ giữa các biến. Nhóm đã đưa ra các giả thuyết để kiểm định từ đó có cái nhìn bao quát hơn về ung thư vú. Không những thế nhóm cũng áp dụng mô hình Random Forest để dự đoán tính lành tính hoặc ác tính của khối u dựa trên các chỉ số đầu vào. Mô hình này cung cấp cái nhìn chi tiết về sự quan trọng của các biến đầu vào và đưa ra dự đoán đáng tin cậy với độ chính xác cao. Ngoài ra, nhóm đã xây dựng mô hình Decision Tree để dự đoán trạng thái (Sống hoặc Chết) của bệnh nhân dựa trên các biến Age, Estrogen.Status, X6th.Stage và Survival.Months. Mô hình này giúp nhóm hiểu sâu hơn về quy luật quyết định trong dữ liệu. Nhóm cũng đã thực hiện nhiều biểu đồ thống kê để thấy rõ sự phân phối và tương quan trong dữ liệu. Các biểu đồ như stacked bar chart và scatter plot đã giúp hiểu rõ hơn về ảnh hưởng của các biến lên trạng thái của bệnh nhân. Cuối cùng, sử dụng hồi quy logarit để dự đoán trạng thái Sống hoặc Chết của bệnh nhân ung thư vú dựa trên nhiều thuộc tính khác nhau. Mô hình này cung cấp cái nhìn tổng quan về mức độ ảnh hưởng của các biến đến kết quả. Tóm lại, các kết quả mang lại hiệu quả những quá trình làm bài toán đã cung cấp thông tin chi tiết, hiệu quả để hiểu, phân tích và đưa ra quyết định trong lĩnh vực y học và nghiên cứu về ung thư vú.
Phần 7. Đánh Giá.
Đỗ Ngọc Chí Công
Huỳnh Gia Hân:
Công việc:
Tìm hiểu dữ liệu
- Vẽ biểu đồ thể hiện bán kính khối u, bán kinh sai số chuẩn khối u và
bán kinh lớn nhất mà khối u có thể đạt được cho tập dữ liệu thứ hai
(histogram).
- Vẽ biểu đồ thể hiện sự tương quan giữa của compactness_mean,
concavity_mean, fractal_dimension_mean của tập dữ liệu thứ hai bubble
chart).
- Vẽ các biểu đồ cho kiểm định giả thuyết (Stacked bar)
- Làm các bài kiểm định giả thuyết.
- Tổng hợp file PowerPoint
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu
cầu.
- Điểm: 10
- Mức độ hoàn thành: 100%
- Vẽ biểu đồ thể hiện bán kính khối u, bán kinh sai số chuẩn khối u và
bán kinh lớn nhất mà khối u có thể đạt được cho tập dữ liệu thứ hai
(histogram).
Phan Cao Bằng:
- Công việc:
- Biều đồ phân phối của trạng thái (Survived và Died) dưới sự ảnh hưởng của biến T.Stage và Age (Stacked Bar Chart).
- Biều đồ so sánh sự chệnh lệch của các trạng thái (Status) và thể hiện mối quan hệ giữa các biếnAge, Survival.Months, T.Stage, N.Stage, Status (Scatter Plot).
- Giải quyết bài toán: Tạo ra mô hình để kiểm tra các thuộc tính: Dự đoán Sống hoặc Chết của người bệnh Ung thư vú dựa vào các nhân tố như Tuổi, Chủng tộc, Tình trạng Es/Pro và một số nhân tố khác có trong tệp dữ liệu sử dụng hồi quy Logarit.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu cầu.
- Điểm: 10
Trần Sĩ Nguyên:
- Công việc:
- Vẽ các biểu đồ:
+ Thống kế thời gian sống kể từ mắc bệnh theo tình trạng hôn nhân của những bênh nhân tử vong.
+ Thống kế thời gian sống kể từ mắc bệnh theo màu da của những bênh nhân tử vong.
- Giải quyết bài toán: Bài toán: Tạo mô hình để dự đoán Status(Dead or Alive) dựa trên Age, Estrogen.Status, X6th.Stage, Survival.Months sử dụng desicion tree.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu cầu.
- Điểm: 10
Trần Sĩ Nguyên
Đỗ Ngọc Chí Công:
- Công việc:
- Tiền xử lý dữ liệu kiểm tra có giá trị na hay không; và chuyển chuỗi
thành số cho hai tập dữ liệu.
- Vẽ biểu pie thể hiện tỷ trọng cho các giá trị cho các thuộc tính cho
tập dữ liệu đầu tiên.
- Vẽ biểu đồ cột thể hiện giá trị M và B cho tập dữ liệu thứ hai, vẽ
biểu đồ tương quan cho tập dữ liệu thứ hai
- Giải quyết bài toán: Xây dựng mô hình dự đoán khối u là lành tính
hay ác tính thông qua các chỉ số được nhập vào xử dựng
RandomForest
- Tổng hợp file R Markdown.
- Tiền xử lý dữ liệu kiểm tra có giá trị na hay không; và chuyển chuỗi
thành số cho hai tập dữ liệu.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu
cầu.
- Điểm: 10
- Công việc:
Phan Cao Bằng:
- Công việc:
- Biều đồ phân phối của trạng thái (Survived và Died) dưới sự ảnh hưởng của biến T.Stage và Age (Stacked Bar Chart).
- Biều đồ so sánh sự chệnh lệch của các trạng thái (Status) và thể hiện mối quan hệ giữa các biếnAge, Survival.Months, T.Stage, N.Stage, Status (Scatter Plot).
- Giải quyết bài toán: Tạo ra mô hình để kiểm tra các thuộc tính: Dự đoán Sống hoặc Chết của người bệnh Ung thư vú dựa vào các nhân tố như Tuổi, Chủng tộc, Tình trạng Es/Pro và một số nhân tố khác có trong tệp dữ liệu sử dụng hồi quy Logarit.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu cầu.
- Điểm: 10
Huỳnh Gia Hân:
- Công việc:
- Tìm hiểu dữ liệu
- Vẽ biểu đồ thể hiện bán kính khối u, bán kinh sai số chuẩn khối u và
bán kinh lớn nhất mà khối u có thể đạt được cho tập dữ liệu thứ hai
(histogram).
- Vẽ biểu đồ thể hiện sự tương quan giữa của compactness_mean,
concavity_mean, fractal_dimension_mean của tập dữ liệu thứ hai bubble
chart).
- Vẽ các biểu đồ cho kiểm định giả thuyết (Stacked bar)
- Làm các bài kiểm định giả thuyết.
- Tổng hợp file PowerPoint
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu
cầu.
- Điểm: 10
- Mức độ hoàn thành: 100%
- Vẽ biểu đồ thể hiện bán kính khối u, bán kinh sai số chuẩn khối u và
bán kinh lớn nhất mà khối u có thể đạt được cho tập dữ liệu thứ hai
(histogram).
Phan Cao Bằng
- Đỗ Ngọc Chí Công:
- Công việc:
- Tiền xử lý dữ liệu kiểm tra có giá trị na hay không; và chuyển chuỗi
thành số cho hai tập dữ liệu.
- Vẽ biểu pie thể hiện tỷ trọng cho các giá trị cho các thuộc tính cho
tập dữ liệu đầu tiên.
- Vẽ biểu đồ cột thể hiện giá trị M và B cho tập dữ liệu thứ hai, vẽ
biểu đồ tương quan cho tập dữ liệu thứ hai
- Giải quyết bài toán: Xây dựng mô hình dự đoán khối u là lành tính
hay ác tính thông qua các chỉ số được nhập vào xử dựng
RandomForest
- Tổng hợp file R Markdown.
- Tiền xử lý dữ liệu kiểm tra có giá trị na hay không; và chuyển chuỗi
thành số cho hai tập dữ liệu.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu
cầu.
- Điểm: 10
- Công việc:
- Trần Sĩ Nguyên:
- Công việc:
- Vẽ các biểu đồ:
+ Thống kế thời gian sống kể từ mắc bệnh theo tình trạng hôn nhân của những bênh nhân tử vong.
+ Thống kế thời gian sống kể từ mắc bệnh theo màu da của những bênh nhân tử vong.
- Giải quyết bài toán: Bài toán: Tạo mô hình để dự đoán Status(Dead or Alive) dựa trên Age, Estrogen.Status, X6th.Stage, Survival.Months sử dụng desicion tree.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu cầu.
- Điểm: 10
- Huỳnh Gia Hân:
- Công việc:
- Tìm hiểu dữ liệu
- Vẽ biểu đồ thể hiện bán kính khối u, bán kinh sai số chuẩn khối u và
bán kinh lớn nhất mà khối u có thể đạt được cho tập dữ liệu thứ hai
(histogram).
- Vẽ biểu đồ thể hiện sự tương quan giữa của compactness_mean,
concavity_mean, fractal_dimension_mean của tập dữ liệu thứ hai bubble
chart).
- Vẽ các biểu đồ cho kiểm định giả thuyết (Stacked bar)
- Làm các bài kiểm định giả thuyết.
- Tổng hợp file PowerPoint
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu
cầu.
- Điểm: 10
- Mức độ hoàn thành: 100%
- Vẽ biểu đồ thể hiện bán kính khối u, bán kinh sai số chuẩn khối u và
bán kinh lớn nhất mà khối u có thể đạt được cho tập dữ liệu thứ hai
(histogram).
Huỳnh Gia Hân
Đỗ Ngọc Chí Công:
- Công việc:
- Tiền xử lý dữ liệu kiểm tra có giá trị na hay không; và chuyển chuỗi
thành số cho hai tập dữ liệu.
- Vẽ biểu pie thể hiện tỷ trọng cho các giá trị cho các thuộc tính cho
tập dữ liệu đầu tiên.
- Vẽ biểu đồ cột thể hiện giá trị M và B cho tập dữ liệu thứ hai, vẽ
biểu đồ tương quan cho tập dữ liệu thứ hai
- Giải quyết bài toán: Xây dựng mô hình dự đoán khối u là lành tính
hay ác tính thông qua các chỉ số được nhập vào xử dựng
RandomForest
- Tổng hợp file R Markdown.
- Tiền xử lý dữ liệu kiểm tra có giá trị na hay không; và chuyển chuỗi
thành số cho hai tập dữ liệu.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu
cầu.
- Điểm: 10
- Công việc:
Phan Cao Bằng:
- Công việc:
- Biều đồ phân phối của trạng thái (Survived và Died) dưới sự ảnh hưởng của biến T.Stage và Age (Stacked Bar Chart).
- Biều đồ so sánh sự chệnh lệch của các trạng thái (Status) và thể hiện mối quan hệ giữa các biếnAge, Survival.Months, T.Stage, N.Stage, Status (Scatter Plot).
- Giải quyết bài toán: Tạo ra mô hình để kiểm tra các thuộc tính: Dự đoán Sống hoặc Chết của người bệnh Ung thư vú dựa vào các nhân tố như Tuổi, Chủng tộc, Tình trạng Es/Pro và một số nhân tố khác có trong tệp dữ liệu sử dụng hồi quy Logarit.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu cầu.
- Điểm: 10
Trần Sĩ Nguyên:
- Công việc:
- Vẽ các biểu đồ:
+ Thống kế thời gian sống kể từ mắc bệnh theo tình trạng hôn nhân của những bênh nhân tử vong.
+ Thống kế thời gian sống kể từ mắc bệnh theo màu da của những bênh nhân tử vong.
- Giải quyết bài toán: Bài toán: Tạo mô hình để dự đoán Status(Dead or Alive) dựa trên Age, Estrogen.Status, X6th.Stage, Survival.Months sử dụng desicion tree.
- Mức độ hoàn thành: 100%
- Nhận xét: Hoàn thành đúng tiến độ được giao và đầy đủ nội dung yêu cầu.
- Điểm: 10
Phần 8. Tham khảo.
- Anova trong R: https://www.scribbr.com/statistics/anova-in-r/
- Trực quan hóa dữ liệu (Data Visualization) trong R: https://www.geeksforgeeks.org/data-visualization-in-r/
- Logistic regression: https://www.geeksforgeeks.org/logistic-regression-in-r-programming/
- Decision Tree: https://www.datacamp.com/tutorial/decision-trees-R
- Random Forest: https://www.r-bloggers.com/2021/04/random-forest-in-r/