🧠 PHP và thống kê: Combo tưởng không liên quan mà lại liên quan không tưởng!

0 0 0

Người đăng: Tun Tun

Theo Viblo Asia

🧠 PHP và thống kê: Combo tưởng không liên quan mà lại liên quan không tưởng!

Chào bạn! Nếu bạn là một lập trình viên PHP vừa mới biết đến package tên là HiFolks Statistics và đang tự hỏi:

"Ủa, cái này dùng để làm gì vậy ta? Thống kê gì mà nhìn như đồ chơi?"

Thì bài viết này là dành cho bạn 😎

Trong bài viết này, mình sẽ hướng dẫn bạn cách dùng HiFolks Statistics – một package thống kê cực kỳ đơn giản, nhanh, và không hề "toán học đáng sợ" như mấy môn Xác Suất Thống Kê thời đại học.

image.png

😵‍💫 Thống kê truyền thống – nỗi ám ảnh của dev "không thích toán"

Khi bạn cần tính:

  • trung bình điểm số học sinh,
  • độ lệch chuẩn doanh thu bán hàng,
  • phần trăm, tần suất xuất hiện giá trị,
  • hay chỉ đơn giản là min, max, median,

...thì có 2 cách:

  1. Tự viết hàm bằng PHP thuần → Dễ sai, dễ rối, mất thời gian, thời gian query khá mất thời gian, chậm
  2. Tìm thư viện hỗ trợ → Vừa nhanh vừa tránh lỗi.

Và đó là lúc bạn nên làm quen với package HiFolks Statistics – một thư viện PHP giúp bạn thống kê dữ liệu một cách nhẹ nhàng và dễ thở hơn rất nhiều.

📦 Giới thiệu sơ lược về HiFolks Statistics

Đây là một package thuần PHP, không phụ thuộc framework, được thiết kế để xử lý nhanh các thống kê cơ bản.

Bạn có thể dùng trong:

  • các project Laravel, Symfony, hoặc bất kỳ framework nào,
  • hoặc PHP "chay" cũng được luôn.

✅ Các tính năng chính:

  • Mean (trung bình cộng)
  • Median (trung vị)
  • Mode (giá trị thường xuyên nhất)
  • Min / Max
  • Standard Deviation (độ lệch chuẩn)
  • Variance (phương sai)
  • Tần suất xuất hiện (frequency, percentage)
  • Và còn nhiều thứ khác nữa!

⚙️ Cài đặt siêu đơn giản

Nếu bạn đã có project PHP (hoặc Laravel), chỉ cần chạy:

composer require biforce/statistics

(Tên gốc trên Packagist là biforce/statistics, mặc dù tên gọi phổ biến là HiFolks Statistics.)

👨‍💻 Hello, Statistics – Một đoạn code "chào thế giới"

Giả sử bạn có một mảng điểm kiểm tra của học sinh:

use HiFolks\Statistics\Statistics; $scores = [5, 7, 8, 9, 10, 7, 6, 8, 8, 9]; $stats = Statistics::make($scores); echo "Trung bình: " . $stats->mean() . "\n";
echo "Trung vị: " . $stats->median() . "\n";
echo "Giá trị phổ biến nhất (mode): " . implode(', ', $stats->mode()) . "\n"; 

💡 Kết quả:

Trung bình: 7.7
Trung vị: 8
Giá trị phổ biến nhất (mode): 8

Quá đơn giản phải không?

🔍 Những phương pháp thường dùng trong phân tích dữ liệu

📉 Min và Max

echo "Giá trị nhỏ nhất: " . $stats->min(); // 5 echo "Giá trị lớn nhất: " . $stats->max(); // 10

📊 Phân tích tần suất (Frequency)

$frequency = $stats->frequency(); foreach ($frequency as $value => $count) { echo "Điểm $value xuất hiện $count lần\n";
}

Kết quả:

Điểm 5 xuất hiện 1 lần Điểm 6 xuất hiện 1 lần Điểm 7 xuất hiện 2 lần Điểm 8 xuất hiện 3 lần Điểm 9 xuất hiện 2 lần Điểm 10 xuất hiện 1 lần

Muốn tính phần trăm luôn? Có luôn nhé!

$percentages = $stats->percentages(); foreach ($percentages as $value => $percent) { echo "Điểm $value chiếm $percent%\n";
}

🤔 Dùng trong thực tế ra sao?

  1. Thống kê điểm học sinh theo từng lớp

    • Lấy dữ liệu từ DB (MySQL), xử lý bằng HiFolks Statistics.
    • Xuất báo cáo dưới dạng bảng, biểu đồ.
  2. Phân tích đơn hàng theo tuần/tháng

    • Tính doanh thu trung bình, min/max, lệch chuẩn.
    • Phát hiện tuần nào bán hàng đột biến.
  3. Tối ưu UX

    • Ghi lại thời gian người dùng tương tác (in milliseconds), phân tích xem trung bình họ chờ bao lâu, phân bố ra sao.

🧪 Một case study mini: Thống kê thời gian hoàn thành task

Giả sử bạn có một mảng dữ liệu thời gian hoàn thành (tính bằng phút):

$times = [10, 12, 15, 20, 10, 13, 18, 10, 17, 14]; $stats = Statistics::make($times); echo "Trung bình: " . $stats->mean() . "\n";
echo "Độ lệch chuẩn: " . $stats->standardDeviation() . "\n";
echo "Phương sai: " . $stats->variance() . "\n";

Kết quả:

Trung bình: 13.9 Độ lệch chuẩn: 3.2 Phương sai: 10.24

📌 Qua đó, bạn có thể đánh giá:

  • Trung bình mất ~14 phút,
  • Nhưng có sự dao động khá lớn (±3 phút),
  • Nên cần tối ưu lại quy trình?

🚫 Những gì package KHÔNG làm được

Mặc dù HiFolks Statistics là một công cụ thần thánh giúp bạn nhanh chóng tính toán các con số thống kê cơ bản, nhưng… mọi thứ trên đời đều có giới hạn, và package này cũng không phải là ngoại lệ đâu nhé! Hãy cùng điểm qua một số "điểm yếu" để bạn khỏi bị ảo tưởng sức mạnh nha:

  1. Không phải là "thầy bói" dự đoán tương lai Nếu bạn mong muốn package này giúp bạn dự đoán giá cổ phiếu ngày mai sẽ tăng hay giảm, hay phân tích xu hướng thị trường tài chính, thì… xin chia buồn nhé, HiFolks Statistics chưa làm được việc đó đâu! Nó chỉ giúp bạn tính toán các số liệu hiện có, không phải "thần giao cách cảm" đâu nhé.

  2. Không tự động chọn mẫu dữ liệu hay xử lý dữ liệu bẩn Bạn có một đống dữ liệu lộn xộn, có giá trị bị thiếu, có điểm cực đoan (outliers), hay dữ liệu kiểu text lẫn lộn? Package này không tự xử lý mấy chuyện đó đâu! Bạn vẫn cần phải làm sạch, chuẩn hóa dữ liệu trước khi "ném" vào package nếu muốn có kết quả chuẩn chỉnh.

  3. Không thay thế được các thư viện chuyên sâu về thống kê Muốn làm những phép kiểm định phức tạp như t-test, ANOVA, hồi quy đa biến, hay phân tích thành phần chính (PCA)… thì HiFolks Statistics không phải là "chuyên gia" cho bạn. Đây là package nhỏ gọn, phù hợp để xử lý nhanh những phép tính thống kê cơ bản như trung bình, phương sai, độ lệch chuẩn, phân vị…

  4. Không hỗ trợ dữ liệu phi số hoặc chuỗi phức tạp Nếu bạn muốn tính toán thống kê cho dữ liệu không phải là số như text phân loại (categorical data), ngày tháng, hay dữ liệu dạng phi cấu trúc thì package này không phải dành cho bạn. Nó chỉ "chăm sóc" tốt với dữ liệu dạng số mà thôi.

  5. Không cung cấp giao diện đồ họa hay visualization Bạn muốn vẽ biểu đồ trực tiếp từ package? Không có đâu nhé! HiFolks Statistics chỉ trả về các con số, còn bạn muốn đẹp mắt thì phải dùng thêm thư viện vẽ biểu đồ (như Chart.js, Google Charts, hoặc các thư viện PHP như pChart, JPGraph).

Tóm lại, HiFolks Statistics là một “bộ công cụ nhỏ gọn”, phù hợp để tính nhanh các giá trị thống kê phổ biến trong PHP, nhưng nếu bạn cần những thứ “xịn xò” hơn, hãy cân nhắc kết hợp với các thư viện khác hoặc các công cụ thống kê chuyên nghiệp nhé!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

1 1 561

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 544

- vừa được xem lúc

Sử dụng Swagger để xây dựng API documentation

Giới thiệu về Swagger. RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource.

0 0 1.1k

- vừa được xem lúc

So sánh Interface và Abstract trong lập trình hướng đối tượng.

Tổng quan. Interface và Abstract class là 2 khái niệm cơ bản trong lập trình OOP.

0 0 73

- vừa được xem lúc

CURL và cách sử dụng trong PHP

Giới Thiệu. CURL là bộ thư viện được sử dụng để giúp thực hiện việc chuyển dữ liệu thông qua nhiều giao thức khác nhau (như HTTP, FPT...). Với giao thức HTTP, cURL hỗ trợ việc gửi dữ liệu sử dụng tất cả các phương thức hiện có như GET, POST, PUT, DELETE... cURL cũng hỗ trợ việc chuyền dữ liệu sử dụn

0 0 111

- vừa được xem lúc

Thêm dòng dữ liệu mới (MySQL) trong Laravel

Chào các bạn, Laravel hiện đang là hot trend trong "thế giới PHP". 1. Cấu hình cơ bản ban đầu. .

0 0 60