Upload tập tin “birthwt.csv”
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
data <- read.csv("C:\\Thach\\VN trips\\2024_4Dec\\TDT Uni\\Datasets\\birthwt.csv")
# Kiểm tra số biến số (cột) và quan sát (dòng)
num_variables <- ncol(data)
num_observations <- nrow(data)
# In kết quả
cat("Số biến số (cột):", num_variables, "\n")
## Số biến số (cột): 11
cat("Số quan sát (dòng):", num_observations, "\n")
## Số quan sát (dòng): 189
Giải thích: • read.csv() để đọc tập tin CSV. • ncol() trả về số lượng cột (biến số). • nrow() trả về số lượng hàng (quan sát). • cat() dùng để in kết quả ra màn hình.
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Liệt kê 6 quan sát đầu tiên
head(data, 6)
## id low age lwt race smoke ptl ht ui ftv bwt
## 1 85 0 19 182 2 0 0 0 1 0 2523
## 2 86 0 33 155 3 0 0 0 0 3 2551
## 3 87 0 20 105 1 1 0 0 0 1 2557
## 4 88 0 21 108 1 1 0 0 1 2 2594
## 5 89 0 18 107 1 1 0 0 1 0 2600
## 6 91 0 21 124 3 0 0 0 0 0 2622
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Tạo biến 'ethnicity' từ 'race'
data$ethnicity <- factor(ifelse(data$race == 1, "White",
ifelse(data$race == 2, "Black", "Other")))
# Kiểm tra kết quả
table(data$ethnicity)
##
## Black Other White
## 26 67 96
Giải thích: • ifelse() giúp gán giá trị theo điều kiện. • factor() biến đổi thành biến phân loại (categorical variable). • table() kiểm tra tần số các giá trị trong biến ethnicity.
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Tạo tập dữ liệu bw1 với 3 biến số id, low và bwt
bw1 <- data[, c("id", "low", "bwt")]
# Kiểm tra số biến số và quan sát trong bw1
num_variables_bw1 <- ncol(bw1)
num_observations_bw1 <- nrow(bw1)
# In kết quả
cat("Số biến số (cột) trong bw1:", num_variables_bw1, "\n")
## Số biến số (cột) trong bw1: 3
cat("Số quan sát (dòng) trong bw1:", num_observations_bw1, "\n")
## Số quan sát (dòng) trong bw1: 189
# Cài đặt và tải gói table1 nếu chưa có
# if (!require("table1")) install.packages("table1")
library(table1)
##
## Attaching package: 'table1'
## The following objects are masked from 'package:base':
##
## units, units<-
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Chuyển biến 'low' thành dạng factor để sử dụng trong table1
data$low <- factor(data$low, labels = c("Không thiếu cân", "Thiếu cân"))
# Tạo bảng mô tả đặc điểm age, lwt và bwt theo low
table1(~ age + lwt + bwt | low, data = data)
Không thiếu cân (N=130) |
Thiếu cân (N=59) |
Overall (N=189) |
|
---|---|---|---|
age | |||
Mean (SD) | 23.7 (5.58) | 22.3 (4.51) | 23.2 (5.30) |
Median [Min, Max] | 23.0 [14.0, 45.0] | 22.0 [14.0, 34.0] | 23.0 [14.0, 45.0] |
lwt | |||
Mean (SD) | 133 (31.7) | 122 (26.6) | 130 (30.6) |
Median [Min, Max] | 124 [85.0, 250] | 120 [80.0, 200] | 121 [80.0, 250] |
bwt | |||
Mean (SD) | 3330 (478) | 2100 (391) | 2940 (729) |
Median [Min, Max] | 3270 [2520, 4990] | 2210 [709, 2500] | 2980 [709, 4990] |
Giải thích: • if (!require(“table1”)) install.packages(“table1”): Cài đặt và nạp gói table1 nếu chưa có. • factor(): Chuyển đổi biến low thành dạng phân loại (factor) với nhãn dễ hiểu. • table1(~ age + lwt + bwt | low, data = data): Tạo bảng tóm tắt các biến theo nhóm được phân loại bởi low. Bảng sẽ hiển thị số liệu thống kê (trung bình, độ lệch chuẩn,…) cho các biến age, lwt, và bwt theo từng nhóm Không thiếu cân và Thiếu cân.
# Cài đặt và tải gói ggplot2 nếu chưa có
# if (!require("ggplot2")) install.packages("ggplot2")
library(ggplot2)
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Vẽ biểu đồ phân bố của bwt (cân nặng của con)
ggplot(data, aes(x = bwt)) +
geom_histogram(binwidth = 250, fill = "skyblue", color = "black") +
labs(title = "Phân bố cân nặng của trẻ sơ sinh",
x = "Cân nặng (gram)",
y = "Tần suất") +
theme_minimal()
# Cài đặt và tải gói ggplot2 nếu chưa có
# if (!require("ggplot2")) install.packages("ggplot2")
library(ggplot2)
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Chuyển biến 'low' thành factor để ggplot phân biệt các nhóm
data$low <- factor(data$low, labels = c("Không thiếu cân", "Thiếu cân"))
# Vẽ biểu đồ phân bố bwt theo low (histogram xếp lớp)
ggplot(data, aes(x = bwt, fill = low)) +
geom_histogram(binwidth = 250, alpha = 0.6, position = "dodge", color = "black") +
labs(title = "Phân bố cân nặng của trẻ sơ sinh theo tình trạng thiếu cân",
x = "Cân nặng (gram)",
y = "Tần suất",
fill = "Tình trạng thiếu cân") +
theme_minimal()
Giải thích: • factor(): Chuyển biến low thành dạng phân loại để ggplot
hiểu nhóm. • aes(x = bwt, fill = low): Màu sắc biểu thị nhóm thiếu cân
và không thiếu cân. • geom_histogram(position = “dodge”): Các histogram
của hai nhóm được đặt cạnh nhau để dễ so sánh. • binwidth = 250: Điều
chỉnh độ rộng của mỗi bin, có thể chỉnh cho phù hợp hơn với dữ liệu của
bạn. • alpha = 0.6: Làm trong suốt các thanh màu để không bị che nhau
hoàn toàn. Gợi ý: Nếu bạn muốn vẽ thêm boxplot hoặc density plot để thấy
rõ hơn sự khác biệt, mình có thể thêm vào!
# Cài đặt và tải gói ggplot2 nếu chưa có
# if (!require("ggplot2")) install.packages("ggplot2")
library(ggplot2)
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Chuyển 'low' thành factor để ggplot phân biệt nhóm
data$low <- factor(data$low, labels = c("Không thiếu cân", "Thiếu cân"))
# Vẽ boxplot so sánh bwt theo low
ggplot(data, aes(x = low, y = bwt, fill = low)) +
geom_boxplot() +
labs(title = "So sánh cân nặng trẻ sơ sinh theo tình trạng thiếu cân",
x = "Tình trạng thiếu cân",
y = "Cân nặng (gram)") +
scale_fill_manual(values = c("skyblue", "salmon")) +
theme_minimal()
Giải thích: • aes(x = low, y = bwt, fill = low): Trục hoành là tình
trạng nhẹ cân, trục tung là cân nặng. • geom_boxplot(): Tạo biểu đồ hộp.
• scale_fill_manual(): Tùy chỉnh màu sắc cho hai nhóm. •
theme_minimal(): Giao diện đơn giản, gọn gàng. Gợi ý thêm: Nếu bạn muốn
vẽ thêm các điểm dữ liệu lên biểu đồ hộp (jitter plot) để trực quan hơn,
mình có thể thêm vào!
# Cài đặt và tải gói ggplot2 nếu chưa có
# if (!require("ggplot2")) install.packages("ggplot2")
library(ggplot2)
# Đọc dữ liệu từ tập tin CSV
# data <- read.csv("birthwt.csv")
# Chuyển 'low' thành factor để ggplot phân biệt nhóm
data$low <- factor(data$low, labels = c("Không thiếu cân", "Thiếu cân"))
# Vẽ scatter plot với đường hồi quy bậc 2
ggplot(data, aes(x = age, y = bwt, color = low)) +
geom_point(size = 2, alpha = 0.7) + # Điểm tán xạ
geom_smooth(method = "lm", formula = y ~ poly(x, 2), se = TRUE) + # Đường hồi quy bậc 2
labs(
title = "Mối liên quan giữa tuổi mẹ và cân nặng của trẻ sơ sinh",
x = "Tuổi của mẹ",
y = "Cân nặng của con (gram)",
color = "Tình trạng thiếu cân"
) +
theme_minimal()
Giải thích: • aes(x = age, y = bwt, color = low): Xác định trục và phân
biệt nhóm theo low. • geom_point(): Vẽ các điểm tán xạ, chỉnh kích thước
và độ trong suốt bằng size và alpha. • geom_smooth(method = “lm”,
formula = y ~ poly(x, 2), se = TRUE): o method = “lm”: Hồi quy tuyến
tính. o formula = y ~ poly(x, 2): Hồi quy bậc 2. o se = TRUE: Hiển thị
khoảng tin cậy. • theme_minimal(): Tạo giao diện đơn giản, gọn gàng. Nếu
bạn muốn thêm các giá trị R², p-value lên biểu đồ hoặc tinh chỉnh gì
thêm, mình có thể giúp!