KTL cơ bảnXử lý dữ liệu

Đồ thị thanh – SPSS

Tạo đồ thị thanh trong thực hành kinh tế lượng với SPSS

Tóm tắt: Đồ thị thanh (bar chart) là công cụ trực quan hóa dữ liệu quan trọng trong thực hành kinh tế lượng, đặc biệt hữu ích trong việc mô tả và so sánh các nhóm dữ liệu khác nhau. Bài viết hướng dẫn chi tiết cách tạo đồ thị thanh giản đơn và đồ thị thanh phân nhóm trên SPSS, bao gồm thiết lập các thông số, tùy chỉnh hiển thị và diễn giải kết quả phù hợp với nghiên cứu kinh tế Việt Nam.

Giới thiệu về đồ thị thanh trong thực hành kinh tế lượng

Trong thực hành kinh tế lượng, đồ thị thanh (bar chart) đóng vai trò quan trọng trong việc mô tả trực quan dữ liệu và hỗ trợ các phân tích thống kê. Đây là một công cụ không thể thiếu khi các bạn thực hiện các phân tích kinh tế lượng phức tạp.

Đồ thị thanh đặc biệt hữu ích khi được sử dụng để hỗ trợ các suy diễn thống kê trong nghiên cứu kinh tế. Cụ thể, nó thích hợp sử dụng trong các phân tích như:

Đối với các phân tích phức tạp hơn như kiểm định chi bình phương hoặc phân tích MANOVA, các bạn có thể sử dụng đồ thị thanh phân nhóm (clustered bar chart) để thể hiện mối quan hệ giữa nhiều biến phân loại.

Phân loại đồ thị thanh

Trong thực hành kinh tế lượng với SPSS, chúng ta thường sử dụng hai loại đồ thị thanh chính:

Đồ thị thanh giản đơn

Đồ thị thanh giản đơn (simple bar) được sử dụng khi chúng ta muốn so sánh giá trị trung bình của một biến liên tục giữa các nhóm của một biến phân loại. Ví dụ, so sánh điểm số trung bình giữa học sinh nam và nữ.

Đồ thị thanh phân nhóm

Đồ thị thanh phân nhóm (clustered bar) được sử dụng khi chúng ta muốn so sánh giá trị của một biến liên tục giữa các tổ hợp của hai biến phân loại. Ví dụ, so sánh điểm toán giữa các dân tộc và loại trường (công/tư).

Ví dụ thực tế từ giáo dục Việt Nam

Để minh họa cho việc sử dụng đồ thị thanh trong thực hành kinh tế lượng, chúng ta sẽ xem xét một ví dụ thực tế từ lĩnh vực giáo dục Việt Nam:

Bối cảnh nghiên cứu: Bên cạnh sự nỗ lực, thành tích của mỗi học sinh còn phụ thuộc vào sự đam mê hoặc năng khiếu của mỗi người. Trong trường hợp môn toán, chúng ta muốn biết liệu có sự khác nhau về thành tích (được đo lường bằng điểm tổng kết môn học) giữa học sinh nam và học sinh nữ hay không?

Để kiểm tra giả thuyết này trong thực hành kinh tế lượng, chúng ta có thể sử dụng kiểm định paired-samples t-test, cùng với sự hỗ trợ trực quan của đồ thị thanh. Việc kết hợp giữa phân tích thống kê và trực quan hóa dữ liệu giúp chúng ta có cái nhìn toàn diện và chính xác hơn về vấn đề nghiên cứu.

Hướng dẫn thực hành chi tiết trên SPSS

Sau đây là hướng dẫn từng bước để tạo đồ thị thanh trên SPSS trong thực hành kinh tế lượng:

Phần 1: Tạo đồ thị thanh giản đơn

Bước 1: Truy cập menu Graphs

Để bắt đầu tạo đồ thị thanh trong SPSS, các bạn thực hiện theo các bước sau:

  • Vào menu GraphsChart Builder…
  • Một thông báo về thang đo (nếu có) sẽ hiện ra để kiểm tra định dạng dữ liệu

Thông báo kiểm tra thang đo dữ liệu trong SPSS

Bấm Scan Data để SPSS quét và kiểm tra dữ liệu. Cửa sổ Chart Builder sẽ mở ra:

Giao diện cửa sổ Chart Builder trong SPSS

Bước 2: Chọn loại đồ thị Simple Bar

Trong giao diện Chart Builder, các bạn cần:

  • Chọn Bar ở mục Choose from: của tab Gallery
  • Kéo dạng đồ thị Simple Bar vào khu vực Chart Preview
  • Đây là bước quan trọng để xác định loại đồ thị phù hợp với mục đích phân tích

Bước 3: Thiết lập hai trục tọa độ

Việc thiết lập đúng các trục tọa độ là yếu tố quyết định chất lượng đồ thị trong thực hành kinh tế lượng:

  • Kéo thả biến phụ thuộc (math) vào ô Y-Axis? – đây là biến liên tục chứa điểm số toán
  • Kéo thả biến phân loại độc lập (female) vào ô X-Axis? – đây là biến phân loại giới tính
  • Kết quả thiết lập sẽ hiển thị preview trong Chart Builder

Thiết lập biến cho trục X và Y trong Chart Builder

Bước 4: Tùy chỉnh thuộc tính đồ thị

SPSS cung cấp nhiều tùy chọn để tùy chỉnh đồ thị phù hợp với yêu cầu nghiên cứu:

Trong cửa sổ Element Properties…, các bạn có thể:

  • Thiết lập hiển thị phương sai (variance) hoặc khoảng tin cậy (confidence interval)
  • Thay đổi vị trí các giá trị trên trục hoành (X-axis)
  • Thiết lập nhãn (labels) cho các trục và tiêu đề đồ thị
  • Điều chỉnh màu sắc và kiểu dáng của các thanh

Cửa sổ Element Properties để tùy chỉnh đồ thị

Bước 5: Thực hiện tạo đồ thị

Sau khi đã thiết lập đầy đủ các thông số, bấm OK để SPSS tạo đồ thị.

Kết quả đồ thị thanh giản đơn

Phần 2: Tạo đồ thị thanh phân nhóm (Clustered Bar)

Khi nghiên cứu các vấn đề phức tạp hơn trong thực hành kinh tế lượng, chúng ta thường cần so sánh nhiều nhóm cùng lúc. Ví dụ: So sánh thành tích học tập (điểm toán) giữa các dân tộc khác nhau theo loại trường (công lập và tư thục).

Trong trường hợp này, đồ thị thanh giản đơn không đủ để hiển thị tất cả thông tin. Chúng ta cần sử dụng đồ thị thanh phân nhóm (Clustered Bar Chart).

Bước 1: Truy cập Chart Builder

Vào menu GraphsChart Builder… tương tự như phần trước.

Bước 2: Chọn Clustered Bar

Trong tab Gallery:

  • Chọn Bar ở mục Choose from:
  • Kéo dạng đồ thị Clustered Bar vào khu vực Chart Preview
  • Lưu ý chọn đúng loại để có thể hiển thị nhiều nhóm

Bước 3: Thiết lập ba biến

Đồ thị thanh phân nhóm yêu cầu thiết lập ba biến chính:

  • Kéo biến phụ thuộc (math) vào ô Y-Axis?
  • Kéo biến phân loại chính (race) vào ô X-Axis?
  • Kéo biến phân loại phụ (schtyp) vào ô Cluster on X: set color

Thiết lập đồ thị thanh phân nhóm (Clustered Bar)

Bước 4: Tùy chỉnh và hoàn thiện

Các bạn có thể thiết lập thêm các thông tin như:

  • Nhãn biến (variable labels) để hiển thị tên tiếng Việt
  • Chọn hiển thị phương sai hoặc khoảng tin cậy
  • Điều chỉnh màu sắc cho từng nhóm
  • Thiết lập chú thích (legend) rõ ràng

Bước 5: Tạo đồ thị cuối cùng

Bấm OK để hoàn thành quá trình tạo đồ thị.

Kết quả đồ thị thanh phân nhóm (Clustered Bar)

Các loại đồ thị bổ sung

Ngoài đồ thị thanh, SPSS còn hỗ trợ tạo nhiều loại đồ thị khác hữu ích trong thực hành kinh tế lượng:

  • Đồ thị thanh 3D (3D bar charts): Tạo hiệu ứng ba chiều cho đồ thị
  • Đồ thị đường thẳng (Line charts): Phù hợp với dữ liệu chuỗi thời gian
  • Đồ thị vùng (Area charts): Hiển thị xu hướng tích lũy
  • Đồ thị bánh (Pie charts): Thể hiện tỷ lệ phần trăm

Diễn giải kết quả đồ thị

Sau khi tạo xong đồ thị trong thực hành kinh tế lượng, việc diễn giải đúng kết quả là vô cùng quan trọng:

Đối với đồ thị thanh giản đơn

Khi quan sát đồ thị thanh so sánh điểm toán giữa nam và nữ, các bạn cần chú ý:

  • Chiều cao của các thanh thể hiện điểm trung bình của từng nhóm
  • Sự khác biệt về chiều cao cho biết mức độ chênh lệch giữa các nhóm
  • Thanh cao hơn = điểm trung bình cao hơn = thành tích tốt hơn
  • Cần kết hợp với kiểm định thống kê để xác nhận ý nghĩa

Đối với đồ thị thanh phân nhóm

Với đồ thị thanh phân nhóm, việc diễn giải phức tạp hơn:

  • So sánh giữa các nhóm chính (dân tộc) theo trục X
  • So sánh giữa các nhóm phụ (loại trường) trong cùng nhóm chính
  • Xác định xu hướng chung và ngoại lệ
  • Phân tích tương tác giữa hai biến phân loại

Lưu ý quan trọng khi sử dụng

Về chất lượng đồ thị

Nhận xét về đồ thị thanh trong SPSS:

Mặc dù SPSS hỗ trợ thực hiện phần lớn các đồ thị, tuy nhiên quá trình thực hiện và sự linh động cũng như kết quả hiển thị không tốt bằng so với thực hiện bằng Excel. Do vậy, theo kinh nghiệm, các bạn có thể copy kết quả của các bảng tần suất hoặc bảng đa chiều vào Excel để thực hiện.

Các lỗi thường gặp

Những lỗi cần tránh:

  • Chọn sai loại biến cho trục X và Y
  • Không kiểm tra thang đo biến trước khi tạo đồ thị
  • Thiết lập sai biến clustering trong đồ thị phân nhóm
  • Không đặt nhãn rõ ràng cho các trục

Khuyến nghị thực hành

Lưu ý khi sử dụng trong thực hành kinh tế lượng:

  • Luôn kiểm tra dữ liệu trước khi tạo đồ thị
  • Chọn loại đồ thị phù hợp với mục đích nghiên cứu
  • Kết hợp đồ thị với các kiểm định thống kê
  • Sử dụng nhãn và tiêu đề có ý nghĩa

Ứng dụng trong nghiên cứu kinh tế

Đồ thị thanh có nhiều ứng dụng quan trọng trong nghiên cứu kinh tế Việt Nam:

Trong nghiên cứu giáo dục

  • So sánh thành tích học tập giữa các vùng miền
  • Phân tích kết quả thi cử theo giới tính
  • Đánh giá hiệu quả các chương trình giáo dục
  • So sánh chất lượng giáo dục công/tư

Trong nghiên cứu lao động

  • So sánh thu nhập theo trình độ học vấn
  • Phân tích thất nghiệp theo khu vực
  • Đánh giá hiệu quả đào tạo nghề
  • So sánh năng suất lao động giữa các ngành

Trong nghiên cứu tài chính

  • So sánh hiệu quả đầu tư theo loại hình
  • Phân tích rủi ro tài chính
  • Đánh giá hiệu quả chính sách tiền tệ
  • So sánh hiệu quả ngân hàng

Tổng kết

Đồ thị thanh là công cụ trực quan hóa dữ liệu quan trọng và cần thiết trong thực hành kinh tế lượng. Việc nắm vững cách tạo và sử dụng đồ thị thanh trên SPSS sẽ giúp các bạn sinh viên và nhà nghiên cứu có thể:

Lợi ích chính:

  • Trực quan hóa dữ liệu một cách hiệu quả
  • Hỗ trợ việc diễn giải kết quả phân tích thống kê
  • Tạo báo cáo nghiên cứu chuyên nghiệp
  • Truyền đạt thông tin đến đối tượng không chuyên

Mặc dù SPSS cung cấp các công cụ tạo đồ thị cơ bản, nhưng các bạn cần cân nhắc sử dụng kết hợp với các phần mềm khác như Excel hoặc R để có được kết quả tốt nhất. Việc lựa chọn loại đồ thị phù hợp với mục đích nghiên cứu và hiểu rõ cách diễn giải kết quả là yếu tố then chốt để thành công trong thực hành kinh tế lượng.

Key Points:

  • Đồ thị thanh là công cụ trực quan hóa quan trọng trong thực hành kinh tế lượng
  • SPSS hỗ trợ tạo đồ thị thanh giản đơn và phân nhóm thông qua Chart Builder
  • Cần thiết lập đúng loại biến cho các trục để có kết quả chính xác
  • Kết hợp đồ thị với kiểm định thống kê để có phân tích toàn diện
  • Có thể sử dụng Excel để tạo đồ thị chất lượng cao hơn từ dữ liệu SPSS

Phụ lục – Code tương đương cho các phần mềm khác

SPSS Syntax

SPSS Syntax (.sps)


* Tạo đồ thị thanh trong SPSS
* Tác giả: Thực hành kinh tế lượng
* Mục đích: Tạo đồ thị thanh giản đơn và phân nhóm

* Mở file dữ liệu
GET FILE='hsb2.sav'.

* Tạo đồ thị thanh giản đơn (Simple Bar)
* So sánh điểm toán giữa nam và nữ
GRAPH
  /BAR(SIMPLE)=MEAN(math) BY female
  /TITLE='So sánh điểm toán theo giới tính'
  /SUBTITLE='Đồ thị thanh giản đơn'
  /FOOTNOTE='Nguồn: Dữ liệu hsb2.sav'.

* Tạo đồ thị thanh phân nhóm (Clustered Bar)
* So sánh điểm toán giữa các dân tộc theo loại trường
GRAPH
  /BAR(GROUPED)=MEAN(math) BY race BY schtyp
  /TITLE='So sánh điểm toán theo dân tộc và loại trường'
  /SUBTITLE='Đồ thị thanh phân nhóm'
  /FOOTNOTE='Nguồn: Dữ liệu hsb2.sav'.

* Tạo đồ thị với error bars (thanh lỗi)
GRAPH
  /BAR(SIMPLE)=MEAN(math) BY female
  /ERRORBAR=CI(95.0)
  /TITLE='So sánh điểm toán với khoảng tin cậy 95%'
  /SUBTITLE='Đồ thị thanh với thanh lỗi'
  /FOOTNOTE='Nguồn: Dữ liệu hsb2.sav'.

* Tạo đồ thị với thống kê mô tả kèm theo
EXAMINE VARIABLES=math BY female
  /PLOT BOXPLOT HISTOGRAM
  /STATISTICS DESCRIPTIVES
  /CINTERVAL 95
  /MISSING LISTWISE
  /NOTOTAL.

Stata

Stata (.do file)


* Tạo đồ thị thanh trong Stata
* Tác giả: Thực hành kinh tế lượng
* Mục đích: Tạo đồ thị thanh giản đơn và phân nhóm

* Mở file dữ liệu
use "hsb2.dta", clear

* Tạo đồ thị thanh giản đơn
* So sánh điểm toán trung bình giữa nam và nữ
graph bar math, over(female) ///
    title("So sánh điểm toán theo giới tính") ///
    subtitle("Đồ thị thanh giản đơn") ///
    ytitle("Điểm toán trung bình") ///
    bar(1, color(lightblue)) ///
    legend(label(1 "Nam") label(2 "Nữ")) ///
    note("Nguồn: Dữ liệu hsb2.dta")

* Lưu đồ thị
graph export "simple_bar.png", replace

* Tạo đồ thị thanh phân nhóm
* So sánh điểm toán giữa các dân tộc theo loại trường
graph bar math, over(schtyp) over(race) ///
    title("So sánh điểm toán theo dân tộc và loại trường") ///
    subtitle("Đồ thị thanh phân nhóm") ///
    ytitle("Điểm toán trung bình") ///
    legend(label(1 "Công lập") label(2 "Tư thục")) ///
    note("Nguồn: Dữ liệu hsb2.dta")

* Lưu đồ thị
graph export "clustered_bar.png", replace

* Tạo đồ thị với thanh lỗi (error bars)
cibar math, over(female) ///
    title("So sánh điểm toán với khoảng tin cậy 95%") ///
    subtitle("Đồ thị thanh với thanh lỗi") ///
    ytitle("Điểm toán trung bình") ///
    legend(label(1 "Nam") label(2 "Nữ")) ///
    note("Nguồn: Dữ liệu hsb2.dta")

* Thống kê mô tả kèm theo
tabstat math, by(female) statistics(n mean sd min max) ///
    columns(statistics) format(%9.2f)

* Tạo bảng tần suất
tab female, missing
tab race schtyp, missing

R

R (.R script)


# Tạo đồ thị thanh trong R
# Tác giả: Thực hành kinh tế lượng
# Mục đích: Tạo đồ thị thanh giản đơn và phân nhóm

# Tải thư viện cần thiết
library(haven)      # Đọc file SPSS
library(ggplot2)    # Vẽ đồ thị
library(dplyr)      # Xử lý dữ liệu
library(scales)     # Định dạng trục
library(RColorBrewer) # Bảng màu

# Đọc dữ liệu từ file SPSS
data <- read_sav("hsb2.sav")

# Chuyển đổi biến phân loại
data$female <- factor(data$female, labels = c("Nam", "Nữ"))
data$race <- factor(data$race, labels = c("Hispanic", "Asian", "African American", "White"))
data$schtyp <- factor(data$schtyp, labels = c("Công lập", "Tư thục"))

# Tạo đồ thị thanh giản đơn
p1 <- ggplot(data, aes(x = female, y = math, fill = female)) +
  stat_summary(fun = "mean", geom = "bar", alpha = 0.7) +
  stat_summary(fun.data = "mean_cl_normal", geom = "errorbar", 
               width = 0.2, size = 0.8) +
  labs(
    title = "So sánh điểm toán theo giới tính",
    subtitle = "Đồ thị thanh giản đơn",
    x = "Giới tính",
    y = "Điểm toán trung bình",
    fill = "Giới tính",
    caption = "Nguồn: Dữ liệu hsb2.sav"
  ) +
  scale_fill_manual(values = c("lightblue", "pink")) +
  theme_minimal() +
  theme(legend.position = "none")

# Hiển thị đồ thị
print(p1)

# Lưu đồ thị
ggsave("simple_bar.png", p1, width = 8, height = 6)

# Tạo đồ thị thanh phân nhóm
p2 <- ggplot(data, aes(x = race, y = math, fill = schtyp)) + stat_summary(fun = "mean", geom = "bar", position = "dodge", alpha = 0.7) + stat_summary(fun.data = "mean_cl_normal", geom = "errorbar", position = position_dodge(width = 0.9), width = 0.2) + labs( title = "So sánh điểm toán theo dân tộc và loại trường", subtitle = "Đồ thị thanh phân nhóm", x = "Dân tộc", y = "Điểm toán trung bình", fill = "Loại trường", caption = "Nguồn: Dữ liệu hsb2.sav" ) + scale_fill_brewer(palette = "Set2") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Hiển thị đồ thị print(p2) # Lưu đồ thị ggsave("clustered_bar.png", p2, width = 10, height = 6) # Thống kê mô tả data %>%
  group_by(female) %>%
  summarise(
    n = n(),
    mean = mean(math, na.rm = TRUE),
    sd = sd(math, na.rm = TRUE),
    min = min(math, na.rm = TRUE),
    max = max(math, na.rm = TRUE)
  ) %>%
  knitr::kable(caption = "Thống kê mô tả điểm toán theo giới tính")

# Thống kê mô tả chi tiết hơn
data %>%
  group_by(race, schtyp) %>%
  summarise(
    n = n(),
    mean = mean(math, na.rm = TRUE),
    sd = sd(math, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  knitr::kable(caption = "Thống kê mô tả điểm toán theo dân tộc và loại trường")

# Kiểm định t-test
t.test(math ~ female, data = data)

# Phân tích ANOVA
anova_result <- aov(math ~ race * schtyp, data = data)
summary(anova_result)

Python

Python (.py script)


# Tạo đồ thị thanh trong Python
# Tác giả: Thực hành kinh tế lượng
# Mục đích: Tạo đồ thị thanh giản đơn và phân nhóm

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
import pyreadstat

# Thiết lập hiển thị tiếng Việt
plt.rcParams['font.family'] = 'DejaVu Sans'
sns.set_style("whitegrid")

# Đọc dữ liệu từ file SPSS
data, meta = pyreadstat.read_sav("hsb2.sav")

# Chuyển đổi biến phân loại
data['female'] = data['female'].map({0: 'Nam', 1: 'Nữ'})
data['race'] = data['race'].map({
    1: 'Hispanic', 2: 'Asian', 3: 'African American', 4: 'White'
})
data['schtyp'] = data['schtyp'].map({1: 'Công lập', 2: 'Tư thục'})

# Tạo đồ thị thanh giản đơn
plt.figure(figsize=(10, 6))

# Tính toán điểm trung bình và sai số chuẩn
mean_scores = data.groupby('female')['math'].agg(['mean', 'std', 'count'])
mean_scores['se'] = mean_scores['std'] / np.sqrt(mean_scores['count'])

# Vẽ đồ thị thanh với thanh lỗi
bars = plt.bar(mean_scores.index, mean_scores['mean'], 
               yerr=mean_scores['se'], capsize=5, alpha=0.7,
               color=['lightblue', 'pink'])

plt.title('So sánh điểm toán theo giới tính', fontsize=16, fontweight='bold')
plt.xlabel('Giới tính', fontsize=12)
plt.ylabel('Điểm toán trung bình', fontsize=12)
plt.grid(axis='y', alpha=0.3)

# Thêm nhãn giá trị trên các thanh
for bar, mean_val in zip(bars, mean_scores['mean']):
    plt.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.5,
             f'{mean_val:.2f}', ha='center', va='bottom', fontweight='bold')

plt.tight_layout()
plt.savefig('simple_bar.png', dpi=300, bbox_inches='tight')
plt.show()

# Tạo đồ thị thanh phân nhóm
plt.figure(figsize=(12, 8))

# Tính toán điểm trung bình theo nhóm
grouped_data = data.groupby(['race', 'schtyp'])['math'].agg(['mean', 'std', 'count']).reset_index()
grouped_data['se'] = grouped_data['std'] / np.sqrt(grouped_data['count'])

# Sử dụng seaborn để tạo đồ thị thanh phân nhóm
ax = sns.barplot(data=data, x='race', y='math', hue='schtyp', 
                 palette='Set2', capsize=0.1, errwidth=1.5)

plt.title('So sánh điểm toán theo dân tộc và loại trường', 
          fontsize=16, fontweight='bold')
plt.xlabel('Dân tộc', fontsize=12)
plt.ylabel('Điểm toán trung bình', fontsize=12)
plt.legend(title='Loại trường', title_fontsize=12, fontsize=10)
plt.xticks(rotation=45, ha='right')
plt.grid(axis='y', alpha=0.3)

plt.tight_layout()
plt.savefig('clustered_bar.png', dpi=300, bbox_inches='tight')
plt.show()

# Thống kê mô tả
print("Thống kê mô tả điểm toán theo giới tính:")
desc_stats = data.groupby('female')['math'].agg(['count', 'mean', 'std', 'min', 'max'])
print(desc_stats.round(2))

print("\nThống kê mô tả điểm toán theo dân tộc và loại trường:")
desc_stats_detailed = data.groupby(['race', 'schtyp'])['math'].agg(['count', 'mean', 'std'])
print(desc_stats_detailed.round(2))

# Kiểm định t-test
nam_scores = data[data['female'] == 'Nam']['math'].dropna()
nu_scores = data[data['female'] == 'Nữ']['math'].dropna()

t_stat, p_value = stats.ttest_ind(nam_scores, nu_scores)
print(f"\nKiểm định t-test:")
print(f"T-statistic: {t_stat:.4f}")
print(f"P-value: {p_value:.4f}")
print(f"Kết luận: {'Có sự khác biệt' if p_value < 0.05 else 'Không có sự khác biệt'} có ý nghĩa thống kê") # Phân tích ANOVA hai chiều from scipy.stats import f_oneway # Chuẩn bị dữ liệu cho ANOVA groups = [] for race in data['race'].unique(): for schtyp in data['schtyp'].unique(): group_data = data[(data['race'] == race) & (data['schtyp'] == schtyp)]['math'].dropna() if len(group_data) > 0:
            groups.append(group_data)

if len(groups) > 1:
    f_stat, p_value_anova = f_oneway(*groups)
    print(f"\nKiểm định ANOVA:")
    print(f"F-statistic: {f_stat:.4f}")
    print(f"P-value: {p_value_anova:.4f}")
    print(f"Kết luận: {'Có sự khác biệt' if p_value_anova < 0.05 else 'Không có sự khác biệt'} có ý nghĩa thống kê")

Tài liệu tham khảo

  • Field, A. (2018). Discovering Statistics Using IBM SPSS Statistics. 5th Edition. SAGE Publications.
  • George, D., & Mallery, P. (2019). IBM SPSS Statistics 26 Step by Step: A Simple Guide and Reference. 15th Edition. Routledge.
  • IBM Corporation. (2023). IBM SPSS Statistics Base 29.0.0 User’s Guide. IBM Corporation.
  • Pallant, J. (2020). SPSS Survival Manual: A Step by Step Guide to Data Analysis Using IBM SPSS. 7th Edition. McGraw-Hill Education.
  • Tabachnick, B. G., & Fidell, L. S. (2019). Using Multivariate Statistics. 7th Edition. Pearson.
  • Wickham, H. (2016). ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York.
Xem thêm
Back to top button