Đề tài

Tìm hiểu mối quan tâm và những khó khăn gặp phải liên quan đến xác suất thống kê khi làm nghiên cứu khoa học của sinh viên trường Đại học Y Dược Huế

Packages cần đến

Cài package pacman trước khi chạy bằng install.packages(pacman)

pacman::p_load(googlesheets4, haven, tidyverse, psych, likert, wesanderson)

Đọc dữ liệu

Xem file spreadsheet tại đây.

gs4_deauth()
df = read_sheet('1-TDNulTFj_xe-YZuSQ8U2KIl14reqvW0NlxEesUkG7k', 
                sheet = 'testing') # đổi tên sheet thành collecting để lấy dữ liệu thực tế
var_code = read_sheet('1-TDNulTFj_xe-YZuSQ8U2KIl14reqvW0NlxEesUkG7k', 
                sheet = 'var_code')
names(df) = var_code$code # Mã hoá tên biến
df <- labelled::set_variable_labels(df, .labels = var_code$label) # Gắn nhãn
head(df)
## # A tibble: 3 × 48
##   time  email name    age gender major      sch_year learned_stats no_studies
##   <lgl> <lgl> <lgl> <dbl> <chr>  <chr>      <chr>    <chr>              <dbl>
## 1 NA    NA    NA       12 Nam    Y đa khoa  Năm 1    Đã học                 5
## 2 NA    NA    NA       13 Nam    Y đa khoa  Năm 2    Chưa học               1
## 3 NA    NA    NA       14 Nữ     Điều dưỡng Năm 2    Chưa học               2
## # … with 39 more variables: affect_q1 <dbl>, affect_q2 <dbl>, affect_q3 <dbl>,
## #   affect_q4 <dbl>, affect_q5 <dbl>, affect_q6 <dbl>, cognize_q1 <dbl>,
## #   cognize_q2 <dbl>, cognize_q3 <dbl>, cognize_q4 <dbl>, cognize_q5 <dbl>,
## #   cognize_q6 <dbl>, value_q1 <dbl>, value_q2 <dbl>, value_q3 <dbl>,
## #   value_q4 <dbl>, value_q5 <dbl>, value_q6 <dbl>, value_q7 <dbl>,
## #   value_q8 <dbl>, value_q9 <dbl>, difficulty_q1 <dbl>, difficulty_q2 <dbl>,
## #   difficulty_q3 <dbl>, difficulty_q4 <dbl>, difficulty_q5 <dbl>, …

Thống kê mô tả

Xem các biến định tính (categorical + ordinal)

df %>% 
  select(gender, major, sch_year, 
         learned_stats, affect_q1:effort_q4) %>% 
  mutate_all(factor) %>% 
  summary()
##  gender         major    sch_year  learned_stats affect_q1 affect_q2 affect_q3
##  Nam:2   Điều dưỡng:1   Năm 1:1   Chưa học:2     1:1       3:1       1:2      
##  Nữ :1   Y đa khoa :2   Năm 2:2   Đã học  :1     2:2       5:2       4:1      
##                                                                               
##  affect_q4 affect_q5 affect_q6 cognize_q1 cognize_q2 cognize_q3 cognize_q4
##  2:1       3:1       1:1       3:1        1:2        4:1        4:1       
##  5:1       4:1       2:2       4:1        2:1        5:1        6:1       
##  6:1       7:1                 5:1                   6:1        7:1       
##  cognize_q5 cognize_q6 value_q1 value_q2 value_q3 value_q4 value_q5 value_q6
##  1:1        2:1        5:2      3:1      1:1      1:1      2:1      3:1     
##  2:1        3:1        7:1      6:1      4:1      4:1      5:1      4:1     
##  5:1        4:1                 7:1      5:1      6:1      7:1      6:1     
##  value_q7 value_q8 value_q9 difficulty_q1 difficulty_q2 difficulty_q3
##  4:1      1:1      2:1      5:2           3:1           4:1          
##  6:1      2:1      3:1      7:1           6:1           6:1          
##  7:1      5:1      4:1                    7:1           7:1          
##  difficulty_q4 difficulty_q5 difficulty_q6 difficulty_q7 interest_q1
##  1:1           2:1           5:2           3:1           4:1        
##  2:1           3:1           7:1           6:1           6:1        
##  5:1           4:1                         7:1           7:1        
##  interest_q2 interest_q3 interest_q4 effort_q1 effort_q2 effort_q3 effort_q4
##  1:1         2:1         5:2         3:1       1:1       1:1       3:1      
##  2:1         3:1         7:1         6:1       2:1       2:2       5:2      
##  5:1         4:1                     7:1       5:1
# Viết thêm code tính %
# ...

Xem các biến định lượng

df %>% select(age, no_studies) %>% 
  describe()
##            vars n  mean   sd median trimmed  mad min max range skew kurtosis
## age           1 3 13.00 1.00     13   13.00 1.48  12  14     2 0.00    -2.33
## no_studies    2 3  2.67 2.08      2    2.67 1.48   1   5     4 0.29    -2.33
##              se
## age        0.58
## no_studies 1.20
# Viết thêm code mô tả kỹ hơn
# ...

Biểu đồ cho bộ câu hỏi SATS-36

lbs <- c("1-Không đồng ý", "2", "3",  "4", "5" , "6", "7-Hoàn toàn đồng ý")
sats36 <- df %>%
  select(affect_q1:effort_q4) %>%
  dplyr::mutate_if(is.numeric, factor, levels = 1:7, labels = lbs) %>%
  drop_na() %>%
  as.data.frame()
p = likert.bar.plot(likert(sats36), 
                    legend.position="right", 
                    legend="Mức độ đồng ý",
                    ordered=F)
p

Phân tích CFA

Cái này phải thu số liệu thử xong mới chạy được

Phân tích các yếu tố liên quan đến SATS-36

Chạy CFA xong mới chạy cái này được

Mô tả khó khăn

Khó khăn khi học thống kê

Cái này phải thu số liệu thử xong mới chạy được

df = data.frame(kho_khan = c('Khó hiểu bài', 
                             'Không áp dụng được lý thuyết vào thực hành', 
                             'Không biết sử dụng các phầm mềm thống kê'),
                so_luong = c(5, 10, 15))
df %>% ggplot(aes(x = kho_khan, y = so_luong, fill =kho_khan)) +
  geom_col(width = 0.5) +
  coord_flip() +
  xlab('Khó khăn') +
  ylab('Số lượng') + 
  theme(legend.position = 'none') + 
  ggtitle('Khó khăn gặp phải khi học xác xuất thống kê') +
  scale_fill_manual(values=wes_palette(n = 3, "Zissou1"))

Bảng màu (colour palette) sẽ được thay đổi sau khi có số liệu đầy đủ

Khó khăn khi làm nghiên cứu

Cái này phải thu số liệu thử xong mới chạy được

df = data.frame(kho_khan = c('Không đủ thời gian, công sức để thu thập số liệu', 
                             'Xảy ra sai sót khi nhập số liệu vào máy tính', 
                             'Không biết lựa chọn phương pháp, kiểm định thống kê phù hợp với đề tài',
                             'Không biết phân tích kết quả nghiên cứu',
                             'Khác'),
                so_luong = c(5, 10, 15, 20, 1))
df %>% arrange(so_luong) %>% 
  ggplot(aes(x = reorder(kho_khan, so_luong), y = so_luong, fill =kho_khan)) +
  geom_col(width = 0.5) +
  coord_flip() +
  xlab('Khó khăn') +
  ylab('Số lượng') + 
  theme(legend.position = 'none') + 
  ggtitle('Khó khăn gặp phải khi học xác xuất thống kê') +
  scale_fill_manual(values=wes_palette(n = 5, "Zissou1"))

Bảng màu (colour palette) sẽ được thay đổi sau khi có số liệu đầy đủ

Giải pháp khắc phục

Cái này phải thu số liệu thử xong mới chạy được