Showing posts with label normal distribution. Show all posts
Showing posts with label normal distribution. Show all posts

2017-01-11

Tại sao chiều cao gần như tuân theo phân phối chuẩn ...?

Trong hầu hết các sách về lý thuyết xác xuất thống kê đều lấy ví dụ như vậy.

Đại khái là chiều cao của con người (hay đàn ông/phụ nữ ...) là một biến ngẫu nhiên tuân theo quy luật phân phối chuẩn. Hay khi textbook đề cập hầu hết các hiện tượng sinh học trong tự nhiên (or nhiều hiện tượng trong tự nhiên) gần như tuân theo phân phối chuẩn.

Khi học mình đến đây mình cũng thắc mắc ngay (trong đầu và để đó). Mới đầu mình cũng chưa hình dung vì sao, cứ để tạm đó xem, chắc có một lý do gì thôi. Sau đó chẳng thấy có giải đáp mẹ gì cả, cũng đặt câu hỏi tại sao lại như thế, nhưng cũng chẳng hỏi ai (ít lên lớp, lên cũng nằm ngáp ngáp). Và mình đã ngồi search kiếm câu trả lời. Gần đây có đứa em hỏi tại sao :D. Lâu rồi mình cũng mới thấy có người hỏi như vậy (trước đây khá lâu cũng có vài lần được hỏi...).

Thật ra có nhiều câu trả lời. Trên Quora thôi là đã rất nhiều (rất tiếc chẳng có phiên bản Quora tiếng Việt nào) mà hình như cũng không nhiều người xài Quora. Ví dụ:

Why do quantities in nature tend to be normally distributed, such as students' grade, human's height, size of snowflakes and so on. However, we find the returns of assets (like stocks, bonds, options) don't follow normal distribution (fat tail),How to explain it?

What are some real world examples of normally distributed quantities?


Bạn có thể tham khảo cả hai bài sau của John D. Cook (rất dễ hiểu)

Why hieghts are not normally distributed?


Mình tóm tắt lại bài đầu như sau:

Nếu chiều cao là một đặc tính di truyền đơn giản (simple genetic characteristic) thì sẽ quy định chiều cao là cao hoặc lùn (:D). Ví dụ tác giả nói rằng trong thí nghiệm di truyền của Mendel, Mendel có để là đậu nhăn nheo hoặc mịn chứ không để thuộc tính đậu hơi nhăn nheo. 

Có rất nhiều yếu tố di truyền và cả môi trường ảnh hưởng đến chiều cao. Theo đó nhiều yếu tố độc lập góp thành (sum) sẽ tạo nên một phân phối Gauss (Gaussian distribution) theo định lý giới hạn trung tâm (central limit theorem CLT).

2015-09-21

Phát sinh data gần phân phối chuẩn với thang đo khoảng trong R - Generate a approximately normal distribution with interval scale (simulate Likert) in R

Để tạo data với phân phối chuẩn trong R thì rất dễ dàng với
rnorm(n, mean, sd).

Đôi khi muốn tạo data gần phân phối chuẩn nhưng với thang đo khoảng như thang đo Likert 5 hay Likert 7 mức thì việc dùng rnorm chưa đáp ứng được điều này.

  • Các đầu tiên là dùng rnorm sau đó làm tròn số > vấn đề cần thực hiện làm tròn số như thế nào
  • Một cách để thực hiện (có thể xài được) là sử dụng phân phối nhị thức làm hơi ngược ứng dụng của định lý Moivre Laplace (n lớn và p không quá gần 0 hay 1) để xấp xỉ phân phối nhị thức bằng phân phối chuẩn. Tất nhiên cách này không đúng lắm vì không thỏa mãn đk (n ≥ 30, np ≥ 5) nhưng có thể chấp nhận được. B(n; p) ~ N(np; np(1−p))


Giả sử cần tạo data với phân phối chuẩn N= 200, μ = 3.5, σ² = 0.8

Method 1:
Chia phân phối chuẩn thành 5 đoạn, -1 và 6 để bảo đảm không sinh ra NA do ngoài khoảng (lưu ý μ và 3σ)
xcut <- cut(rnorm(200, 3.5, 0.8), breaks = c(-1, 1, 2, 3, 4, 6))
x <- rep(1:5, as.vector(table(xcut)))
mean(x)
sd(x)
hist(x, col = 'light blue')

Tất nhiên cách này do chia khoảng nên mean và sd có thể không như mong đợi. Nên generate 1 vài lần để có kết quả gần đúng nhất hoặc điều chỉnh input mean và sd.

Method 2:
Thay vì tạo data với phân phối chuẩn thì sẽ tạo data với phân phối nhị thức.

# B(n; p) ~ N(np; np(1−p))
# μ = np
# σ² = np(1−p) = np - np²
# np² = μ - σ² = np - (np - np²)
# p = np² / np = (μ - σ²) / μ
# n = np / p = μ / p = μ²/(μ - σ²)

x <- rbinom(200, ceiling(3.5 * 3.5 / (3.5 - 0.8)), (3.5 - 0.8) / 3.5)
mean(x)
sd(x)
hist(x, col = 'light blue')
write.csv(x, 'data.csv', row.names = F)

Nói chung chạy vài lần kiểm tra mean và sd phù hợp rồi sử dụng kết quả