Think Stats: Xác suất thống kê dành cho người lập trình

Nếu biết lập trình, bạn đã có kĩ năng chuyển đổi dữ liệu thành kiến thức bằng cách dùng các công cụ xác suất và thống kê. Cuốn sách hướng dẫn này chỉ cho bạn cách thực hiện tính toán phân tích thống kê trên máy tính, thay vì dùng công thức toán học, với những chương trình viết bằng Python.

Bạn sẽ làm việc với một nghiên cứu cụ thể xuyên suốt cuốn sách, nhằm giúp bạn nắm được toàn bộ quá trình phân tích dữ liệu—từ thu thập dữ liệu và phát sinh các đặc trưng thống kê đến nhận diện các dạng mẫu và kiểm định giả thiết. Đồng thời, bạn cũng làm quen với các dạng phân bố, định luật xác suất, cách hiển thị, cùng nhiều công cụ và khái niệm khác.

Lời đề tựa của tác giả
Tôi viết cuốn sách này cho lớp học mà tôi dạy tại Olin College. Mục đích của lớp học là dạy cho sinh viên biết cách dùng công cụ thống kê để khám phá các bộ số liệu thực sự và trả lời những câu hỏi thú vị. Trang web của lớp học là: sites.google.com/site/thinkstats2011a — trong đó bao gồm bài giảng, bài tập trên lớp, bài về nhà, v.v.

Các ví dụ trong sách được viết bằng Python, nhưng là một phần nhỏ của ngôn ngữ lập trình này. Nếu bạn đã đọc hết 14 chương đầu tiên trong cuốn Think Python, bạn có thể sẵn sàng tiếp thu nội dung sách.

Tác giả, Allen Downey là giáo sư ngành Khoa học máy tính tại Olin College of Engineering. Ông đã dạy khoa học máy tính tại Wellesley College, Colby College và U.C. Berkeley. Ông nhận bằng tiến sĩ khoa học máy tính từ U.C. Berkeley và bằng thạc sĩ từ MIT.

Mục lục

Lời nói đầu

Lí do thôi thúc tôi viết quyển sách này

Think Stats: Xác suất thống kê dành cho người lập trình là một cuốn giáo trình nhập môn theo kiểu mới dành cho khóa học xác suất thống kê. Cuốn sách nhấn mạnh cách dùng thống kê để khảo sát những tập dữ liệu lớn. Cách tiếp cận là dùng máy tính, vốn có một số ưu điểm:

  • Các bạn sinh viên viết chương trình như một cách xây dựng và thử nghiệm kiến thức. Chẳng hạn, bạn viết các hàm để tính phép khớp bình phương nhỏ nhất, tính phần dư, và các hệ số của định thức. Việc viết và thử nghiệm mã lệnh đòi hỏi bạn hiểu được những khái niệm và ngầm sửa được những hiểu nhầm về môn học.
  • Các bạn chạy những chương trình để thử nghiệm các biểu hiện thống kê. Chẳng hạn, có thể khám phá Định lý giới hạn trung tâm (Central Limit Theorem, CLT) bằng cách phát sinh các mẫu từ một số dạng phân bố khác nhau. Khi thấy được rằng tổng của các giá trị tuân theo phân bố Pareto không hội tụ về phân bố chuẩn, bạn sẽ nhớ lại về những giả thiết cơ sở của CLT.
  • Một số ý tưởng rất khó nắm bắt về mặt toán học lại rất dễ hiểu qua mô phỏng. Chẳng hạn, ta xấp xỉ các giá trị p bằng cách chạy mô phỏng Monte Carlo; cách này sẽ củng cố ý nghĩa của giá trị p.
  • Việc dùng những dạng phân bố rời rạc và chương trình máy tính có thể minh họa cho các chủ đề như ước tính Bayes, vốn thường không được đưa vào các lớp nhập môn. Chẳng hạn, một bài tập yêu cầu bạn tính phân bố hậu nghiệm của “bài toán xe tăng Đức”, vốn rất khó tính toán bằng cách giải tích nhưng sẽ dễ khi dùng máy tính.
  • Vì được dùng một ngôn ngữ lập trình da dụng (Python), bạn sẽ có thể nhập dữ liệu từ hầu như bất kì nguồn nào. Không có sự bó hẹp trong những dữ liệu được làm sạch và định dạng riêng cho một công cụ phần mềm thống kê nào đó.

Cuốn sách này thích hợp cho cách dùng với bài tập lớn. Trong lớp tôi, sinh viên phải hoàn thành một bài tập lớn trong một học kì, trong đó yêu cầu họ đặt ra một câu hỏi thống kê, tìm một tập số liệu phục vụ cho nhận định đó, rồi áp dụng từng kĩ thuật mới học được vào cho chính dữ liệu họ đã chọn.

Để giới thiệu về kiểu phân tích mà tôi muốn sinh viên làm theo, cuốn sách này giới thiệu một nghiên cứu cụ thể xuyên suốt các chương. Nó dùng số liệu từ hai nguồn:

  • The National Survey of Family Growth (NSFG) [Chương trình điều tra của Hoa Kỳ về tăng trưởng gia đình], do U.S. Centers for Disease Control and Prevention (CDC) [các Trung tâm phòng chống kiểm soát dịch bệnh] tiến hành để thu thập “thông tin về cuộc sống gia đình, kết hôn và li dị, thai nghén, vô sinh, sử dụng biện pháp tránh thai, và sức khỏe nam nữ.” (Xem http://cdc.gov/nchs/nsfg.htm.)
  • The Behavioral Risk Factor Surveillance System (BRFSS) [Hệ thống theo dõi nhân tố rủi ro về biểu hiện], do National Center for Chronic Disease Prevention and Health Promotion [Trung tâm của Hoa Kỳ về Phòng bệnh mãn tính và phát triển sức khỏe] để “theo dõi tình trạng sức khỏe và các biểu hiện rủi ro trên lãnh thổ Hoa Kỳ.” (Xem http://cdc.gov/BRFSS/.)

Các ví dụ khác đã dùng số liệu từ IRS, U.S. Census, và Boston Marathon.

Tôi đã viết cuốn sách này thế nào

Khi một tác giả viết cuốn sách mới, họ thường bắt đầu bằng việc đọc một chồng sách cũ. Vì vậy, phần lớn những cuốn sách mới đều có chứa cùng nội dung theo thứ tự gần như giống các cuốn sách trước đó. Thường có những cụm từ, những lỗi sai lan truyền từ quyển cũ sang quyển mới. Stephen Jay Gould đã viết một bài luận với tựa đề “The Case of the Creeping Fox Terrier1 Clone” có đề cập đến ví dụ kiểu này.

Tôi thì không làm như vậy. Thật ra, khi viết sách này tôi gần như không dùng tài liệu in ấn nào, với một số lí do:

  • Mục đích của tôi là khám phá một hướng tiếp cận mới trong tập sách này, vì vậy tôi không muốn đề cập nhiều đến những cách tiếp cận đã có.
  • Vì tôi phát hành cuốn sách này theo một giấy phép tự do nên cũng muốn đảm bảo rằng khô có chỗ nào trong sách bị ảnh hưởng bởi những ràng buộc về bản quyền.
  • Nhiều độc giả của tôi không có điều kiện tham khảo sách in trong thư viện, vì vậy tôi cố gắng đưa các tài liệu bổ trợ trong sách lên Internet để bạn truy cập miễn phí.
  • Những người ủng hộ cho kiểu sách truyền thống thì cho rằng chỉ dùng những tài liệu điện tử là sự lười biếng và thiếu tin cậy. Họ có thể nói đúng vế đầu, như vế sau thì tôi nghĩ họ đã sai, vì vậy tôi muốn kiểm nghiệm giả thuyết của mình.

Tài liệu tôi tham khảo nhiều nhất là Wikipedia, “ông ba bị” đối với mọi thư viện. Nói chung, các bài báo tôi đọc về những chủ đề thống kê đều rất tốt (dù tôi đã đồng thời sửa chữa một số chỗ). Tôi ghi chú suốt quyển sách những tham khảo đến các trang Wikipedia, và khuyên bạn nên theo các đường link đó để tìm hiểu thêm; nhiều khi trang Wikipedia nói tiếp vào đúng những chỗ tôi tạm ngừng lại. Những thuật ngữ và kí hiệu dùng trong sách này nói chung đều thống nhất với Wikipedia, trừ khi tôi có một lý do thỏa đáng để viết khác.

Những nguồn tham khảo khác mà tôi thấy có ích gồm Wolfram MathWorld và (dĩ nhiên là) Google. Tôi cũng dùng hai cuốn sách khác, Information Theory, Inference, and Learning Algorithms của David McKay, quyển sách khiến tôi đam mê thống kê Bayes, và Numerical Recipes in C của Press và nnk. Nhưng cả hai quyển đều xem được trên mạng miễn phí, vì vậy tôi cũng không quá xấu hổ.

Allen B. Downey
Needham MA

Danh sách độc giả góp ý sửa chữa

Nếu bạn có góp ý sửa chữa cuốn sách, hãy gửi thư điện tử đến {downey@allendowney.com}. Nếu tôi thực hiện thay đổi theo trong thư của bạn, tôi sẽ điền tên bạn vào danh sách dưới đây (trừ khi bạn từ chối). Nếu bạn ghi cả một phần đoạn câu chứa lỗi thì sẽ tiện hơn nhiều để tôi tìm ra câu lỗi đó. Nếu ghi trang sách và số đề mục thì cũng được nhưng không tiện bằng. Cám ơn bạn!

  • Lisa Downey và June Downey đọc bản nháp và có nhiều góp ý, sửa chữa.
  • Steven Zhang tìm thấy một vài lỗi.
  • Andy Pethan và Molly Farison giúp việc gỡ lỗi cho một số lời giải, và Molly phát hiện ra một số lỗi đánh máy.
  • Andrew Heine phát hiện một lỗi trong hàm sai số của tôi.
  • Dr. Nikolas Akerblom biết rằng loài Hyracotherium to cỡ nào.
  • Alex Morrow làm rõ một đoạn ví dụ mã lệnh.
  • Jonathan Street tìm thấy một lỗi vào ngay phút cuối cùng.
  • Gábor Lipták tìm thấy một lỗi đánh máy trong cuốn sách và lời giải cho bài toán chạy tiếp sức.
  • Cám ơn Kevin Smith và Tim Arnold rất nhiều vì đã phát triển plasTeX; tôi dùng công cụ này để chuyển cuốn sách sang dạng DocBook.
  • George Caplan gửi một số gợi ý về cách viết để rõ ý hơn.
  • Julian Ceipek đã phát hiện được một lỗi.
  • Stijn Debrouwere, Leo Marihart III, Jonathan Hammler, và Kent Johnson phát hiện ra các lỗi trong bản in đầu tiên.

  1. Một loài chó to bằng nửa con thú Hyracotherium (xem http://wikipedia.org/wiki/Hyracotherium).

14 bình luận

Filed under Thống kê, Think Stats, xác suất

14 responses to “Think Stats: Xác suất thống kê dành cho người lập trình

  1. Pingback: Chương 6: Các phép toán đối với phân bố | Blog của Chiến

  2. Pingback: Chương 7: Kiểm định giả thiết | Blog của Chiến

  3. Pingback: Chương 8: Ước lượng | Blog của Chiến

  4. Pingback: Chương 9: Tương quan | Blog của Chiến

  5. Pingback: Chương 5: Xác suất | Blog của Chiến

  6. Pingback: Chương 2: Thống kê mô tả | Blog của Chiến

  7. Pingback: Chương 3: Hàm phân bố lũy tích | Blog của Chiến

  8. Pingback: Chương 4: Phân bố liên tục | Blog của Chiến

  9. anh Chiến có thể cho em bản pdf để in ra đọc không, đọc bằng pc nếu chữ nào có dấu là nó bị vẹc, khó đọc lắm. pls

  10. Pingback: Think Stats II: Phân tích dữ liệu theo hình thức khám phá bằng Python | Blog của Chiến

Gửi phản hồi cho vuong vuong Hủy trả lời