Chương 1: Tư duy thống kê cần cho người lập trình

Dịch từ cuốn Think Stats: Probability and Statistics for Programmers của Allen B. Downey, NXB Green Tea Press. Sách điện tử được phát hành miễn phí theo giấy phép: Creative Commons Attribution-NonCommercial 3.0 Unported License. Trong quá trình phân phối bạn nên ghi rõ nguồn gốc cuốn sách.

Cuốn sách này bàn về việc chuyển đổi số liệu thành kiến thức. Số liệu thì rẻ, chí ít là so với kiến thức, vốn là thứ rất khó kiếm được.

Tôi sẽ trình bày ba mảng kiến thức liên quan đến nhau:

Xác suất
là môn học về các sự kiện ngẫu nhiên. Hầu hết chúng ta ai cũng có hiểu biết trực quan về xác suất ở một mức độ nào đó, vì vậy mà thường nói “dường như” mà chẳng cần ai dạy, nhưng ta sẽ nghiên cứu về cách lượng hóa những khẳng định đó bằng những con số.

Thống kê
là lĩnh vực trong đó dùng các mẫu số liệu để hỗ trợ cho nhận định về quần thể. Đa phần các phân tích thống kê đều dựa vào xác suất, đó là lý do tại sao hai mảng kiến thức này thường được trình bày cùng nhau.

Tính toán
là công cụ thích hợp để phân tích định lượng, và máy tính thường được dùng để xử lý bài toán thống kê. Ngoài ra, các thí nghiệm tính toán cũng giúp ích cho việc tìm hiểu các khái niệm trong xác suất và thống kê.

Phương châm của cuốn sách này là nếu bạn đã biết lập trình, bạn có thể dùng kĩ năng đó để tự giúp mình hiểu được xác suất và thống kê. Các chủ đề này thường được trình bày từ góc nhìn toán học, và có thể phù hợp với những người nhất định. Nhưng một số ý tưởng quan trọng trong lĩnh vực này rất khó hiểu theo cách toán học và lại tương đối dễ tiếp cận bằng cách dùng máy tính.

Phần còn lại của chương này trình bày một nghiên cứu cụ thể được khởi nguồn từ câu hỏi mà tôi nghe được khi vợ chồng chúng tôi đón chờ cháu đầu lòng: liệu bé đầu có xu hướng ra chậm hay không?

Liệu trẻ đầu lòng có ra đời chậm hay không?

Nếu bạn tra Google câu hỏi này, bạn sẽ tìm thấy nhiều cuộc thảo luận khác nhau. Có người cho rằng đúng, người khác cho rằng đó chỉ là tưởng tượng, và có người cho rằng phải ngược lại: bé đầu lòng sẽ ra sớm.

Trong nhiều cuộc thảo luận nói trên, có người đưa ra con số để hỗ trợ cho khẳng định của mình. Tôi đã thấy nhiều ví dụ kiểu như:

“Hai người bạn tôi gần đây vừa sinh cháu đầu, cả hai đều sinh cháu chậm 2 tuần trước khi dùng biện pháp ép sinh.”

“Cháu đầu lòng của tôi ra đời chậm 2 tuần và bây giờ đứa thứ hai sẽ ra đời sớm 2 tuần!!”

“Tôi không nghĩ rằng điều đó đúng vì chị của tôi là cả, và được ra đời sớm, và các anh chị em họ của tôi cũng vậy.”

Những thông báo kiểu này được gọi là dẫn chứng chủ quan vì chúng dựa trên số liệu chưa được công bố và thường mang tính cá nhân. Khi nói chuyện thông thường, chẳng có gì sai khi kể chuyện cá nhân như vậy, nên tôi cũng không hề có ý trách những người nêu ý kiến nói trên. Nhưng ta có thể muốn các bằng chứng có sức thuyết phục cao hơn và câu trả lời đáng tin cậy hơn. Khi xét theo các thiêu chuẩn đó, dẫn chứng cá nhân thường không đạt, vì:

Số lần quan sát ít:
Nếu thời gian thai nghén đối với trẻ đầu lòng là lâu hơn, thì mức độ khá biệt có lẽ vẫn nhỏ so với quy luật tự nhiên vì thời gian này luôn biến động. Trong trường hợp này, có thể ta phải so sánh nhiều trường hợp thai nghén để chắc chắn rằng có sự khác biệt.

Sự thiên lệch trong lựa chọn:
Người tham gia vào cuộc tranh luận này có thể quan tâm đến câu hỏi chỉ vì con đầu lòng của họ ra đời muộn. Trong trường hợp này quá trình chọn lựa số liệu sẽ làm thiên lệch kết quả.

Sự thiên lệch khi khẳng định:
Người tin vào lời khẳng định có nhiều khả năng đóng góp những ví dụ minh chứng cho điều đó. Những người nghi ngờ về lời khẳng định có nhiều khả năng dẫn ra những phản ví dụ.

Sự không chính xác:
Các kinh nghiệm thường gắn với chuyện cá nhân, và thường bị nhớ nhầm, truyền đạt nhầm, thuật lại không chính xác, v.v.

Vậy bằng cách nào để ta làm tốt hơn?

Cách tiếp cận thống kê

Để nhận định những hạn chế của kinh nghiệm, chúng ta sẽ dùng các công cụ thống kê, bao gồm:

Thu thập số liệu:
Ta sẽ dùng số liệu từ một cuộc điều tra lớn mang tầm cỡ quốc gia, được thiết kế rõ ràng nhằm mục tiêu đưa ra những suy luận đúng đắn theo thống kê, về dân số Hoa Kỳ.

Thống kê mô tả:
Chúng ta sẽ tính ra các đặc trưng thống kê để có thể tóm gọn được số liệu, và đánh giá những cách khác nhau để hiển thị số liệu.

Phân tích khảo sát số liệu:
Ta sẽ tìm kiếm những dạng mẫu, sự khác biệt, và những đặc điểm khác để giải đáp câu hỏi cần quan tâm. Đồng thời ta cũng kiểm tra sự không thống nhất và phát hiện ra những hạn chế.

Kiểm định giả thiết:
Khi chúng ta thấy hiệu ứng rõ rệt, như một sự khác biệt giữa hai nhóm, ta sẽ đánh giá xem sự khác biệt đó là thực sự, hay là chỉ tình cờ diễn ra.

Ước tính:
Chúng ta sẽ dùng dữ liệu từ một mẫu để ước tính các đặc trưng của quần thể.

Bằng cách thực hiện những bước này cẩn thận để tránh những lỗi dễ mắc, ta có thể đi đến những kết luận hợp lý hơn và có nhiều khả năng sẽ đúng.

Cuộc điều tra quốc gia Hoa Kỳ về phát triển gia đình

Từ năm 1973, Trung tâm Kiểm soát và phòng chống dịch bệnh của Hoa Kỳ (U.S. Centers for Disease Control and Prevention, CDC) đã tiến hành đợt điều tra trên quy mô quốc gia về sự phát triển gia đình (National Survey of Family Growth, NSFG), vốn nhằm mục đích 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ữ. Kết quả của cuộc điều tra được dùng […] để hoạch định những dịch vụ chăm sóc sức khỏe và chương trình giáo dục sức khỏe, và để tiến hành nghiên cứu thống kê về gia đình, sức khỏe và khả năng sinh sản.” 1 Chúng ta sẽ dùng số liệu thu thập từ đợt điều tra này để xem có phải là bé đầu lòng thường hay ra đời muộn không, và cả những câu hỏi khác. Để tận dụng được số liệu này, chúng ta phải hiểu được cách thức tiến hành cuộc điều tra này.

NSFG là công trình nghiên cứu cắt ngang, tức là nó chỉ ghi nhận tình hình của hệ thống tại một thời điểm nhất định. Hình thức nghiên cứu thường gặp khác là nghiên cứu dọc, trong đó quan sát hệ thống lặp lại nhiều lần trong suốt một khoảng thời gian. Đợt điều tra NSFG đã được tiến hành 7 lần; mỗi lần triển khai được gọi là một cycle (chu trình). Ta sẽ dùng dữ liệu từ Cycle 6, với thời gian tiến hành từ tháng 1/2002 đến 3/2003. Mục tiêu của đợt điều tra là rút ra kết luận về một tổng thể; đối với NSFG tổng thể là cư dân Mỹ có độ tuổi từ 15 đến 44. Những người tham gia vào cuộc điều tra được gọi là respondents; một nhóm các respondent được gọi là cohort. Nhìn chung, các nghiên cứu cắt ngang nhằm mục đích đại biểu, tức là mỗi thành viên trong tổng thể cần nghiên cứu đều có cơ hội tham gia như nhau. Dĩ nhiên là điều lý tưởng đó rất khó xảy ra trên thực tế, song những người tiến hành điều tra cố gắng thực hiện điều này ở mức tốt nhất có thể. NSFG không có tính đại biểu; nó được cố ý lặp mẫu. Các nhà thiết kế cho đợt nghiên cứu này đã tuyển ba nhóm người—Hispanics, Mỹ-Phi và thiếu niên—với tần số cao hơn mức đại biểu của họ trong dân số Hoa Kỳ. Lý do cho việc tuyển lặp mẫu này là cần đảm bảo được số người được điều tra trong mỗi nhóm phải đủ lớn để rút ra suy luận thống kê đúng. Dĩ nhiên, nhược điểm của lặp mẫu là không dễ để rút ra kết luận về tổng thể dựa trên con số thống kê từ cuộc điều tra. Ta sẽ trở lại vấn đề này sau.

Mặc dù NSFG đã được tiến hành 7 lần nhưng nó không phải là một nghiên cứu dọc. Hãy đọc các trang Wikipedia http://wikipedia.org/wiki/Cross-sectional_studyhttp://wikipedia.org/wiki/Longitudinal_study để chắc rằng bạn tự hiểu lý do.

Trong bài tập này, bạn sẽ tải số liệu về từ NSFG; chúng ta sẽ dùng số liệu này xuyên suốt cuốn sách.

  1. Đến trang http://thinkstats.com/nsfg.html. Hãy đọc các điều khoản quy định việc sử dụng số liệu này và kích chuột vào đường link “I accept these terms” (coi như là bạn cam kết thực hiện điều khoản).
  2. Tải về các file có tên là 2002FemResp.dat.gz 2002FemPreg.dat.gz. File đầu có chứa những câu trả lời, trong đó mỗi dòng là 1 câu trả lời của từng phụ nữ trong số tổng cộng 7643 người. Ở file thứ hai, mỗi dòng ứng với một trường hợp mang thai mà người tham gia báo cáo.
  3. Tài liệu trực tuyến về đợt điều tra được đặt ở http://nsfg.icpsr.umich.edu/cocoon/WebDocs/NSFG/public/index.htm. Hãy xem các mục ở thanh bên trái để hình dung được có những số liệu gì. Bạn cũng có thể đọc bảng câu hỏi tại http://cdc.gov/nchs/data/nsfg/nsfg_2002_questionnaires.htm.
  4. Trang web cho cuốn sách này cung cấp mã lệnh để xử lý các file số liệu từ NSFG. Hãy tải về http://thinkstats.com/survey.py và chạy nó trong cùng thư mục với các file số liệu. Nó sẽ đọc các file số liệu và in ra số dòng trong mỗi file:
    Number of respondents 7643
    Number of pregnancies 13593
    
  5. Hãy xem qua mã lệnh để hình dung ra công dụng của nó. Mục tiếp theo sẽ giải thích cách hoạt động của mã lệnh này.

Bảng và bản ghi

Nhà thơ–triết gia Steve Martin có lần đã nói [tạm dịch]:

“Oeuf” nghĩa là trứng, “chapeau” nghĩa là mũ. Dường như tiếng Pháp luôn có một từ dành cho mỗi vật.

Cũng như tiếng Pháp, người lập trình cơ sở dữ liệu nói một ngôn ngữ hơi khác, và vì chúng ta sẽ làm việc với cơ sở dữ liệu, ta cần phải học một số từ vựng liên quan. Mỗi dòng trong file ghi ý kiến có chứa thông tin về một ý kiến. Thông tin này được gọi lời bản ghi. Các biến tạo nên một bản ghi được gọi là trường. Một tập hợp các bản ghi được gọi là bảng. Nếu đọc survey.py bạn thấy lời định nghĩa lớp cho Record, vốn là một đối tượng thể hiện một bản ghi, và Table, vốn biểu diễn cho một bảng.

Có hai lớp con của RecordRespondentPregnancy—vốn chứa các bản ghi từ các bảng ý kiến và các ca mang thai. Tạm thời lúc này, các lớp này đều rỗng; nói riêng, không có phương thức khởi tạo nào để gán giá trị ban đầu cho các thuộc tính của chúng. Thay vào đó ta sẽ dùng Table.MakeRecord để chuyển đổi một dòng chữ thành một đối tượng Record. Cũng có hai lớp con của Table: RespondentsPregnancies. Phương thức khởi tạo trong mỗi lớp chỉ rõ tên mặc định của file dữ liệu và kiểu bản ghi cần tạo ra. Mỗi đối tượng Table có một thuộc tính tên là records, vốn là một danh sách chứa các đối tượng Record.

Với mỗi Table, phương thức GetFields trả lại một danh sách các bộ để chỉ định các trường từ bản ghi mà sẽ được lưu vào các thuộc tính trong mỗi đối tượng Record. (Nếu cần, bạn có thể đọc lại câu trước.)

Chẳng hạn, sau đây là Pregnancies.GetFields:

    def GetFields(self):
        return [
            ('caseid', 1, 12, int),
            ('prglength', 275, 276, int),
            ('outcome', 277, 277, int),
            ('birthord', 278, 279, int),
            ('finalwgt', 423, 440, float),
            ]

Bộ thứ nhất cho thấy rằng trường caseid nằm ở các cột từ 1 đến 12 và nó là một số nguyên. Mỗi bộ có chứa các thông tin sau đây:

trường:
Tên của thuộc tính mà trường sẽ được lưu vào. Thường thì tôi sẽ lấy chính tên gọi trong quy định (codebook) của NSFG, rồi chuyển sang toàn bộ chữ thường.

điểm đầu:
Chỉ số của cột bắt đầu trường này. Chẳng hạn, điểm đầu của caseid là 1. Bạn có thể tra các chỉ số này trong NSFG codebook tại http://nsfg.icpsr.umich.edu/cocoon/WebDocs/NSFG/public/index.htm.

điểm cuối:
Chỉ số của cột cuối trong trường; chẳng hạn, điểm cuối của caseid là 12. Khái với quy định trong Python, chỉ số cuối này { cũng tính vào} khoảng.

hàm chuyển đổi:
Một hàm nhận vào một chuỗi và chuyển nó sang kiểu thích hợp. Bạn có thể dùng các hàm lập sẵn, như intfloat, hoặc các hàm bạn tự định nghĩa. Nếu việc chuyển đổi thất bại, thuộc tính sẽ nhận được giá trị là chuỗi 'NA'. Nếu bạn không muốn chuyển đổi trường nào, hãy cung cấp một hàm bất biến hoặc dùng str.

Với các bản ghi những ca mang thai, chúng ta kết xuất các biến sau:

caseid
là số nguyên thứ tự của ý kiến.

prglength
là số nguyên chỉ quãng thời gian mang thai tính theo tuần.

outcome
là một mã số nguyên chỉ kết quả của thai nghén. Số 1 để chỉ việc sinh nở thành công.

birthord
là số nguyên chỉ thứ tự của đứa trẻ sinh ra trong trường hợp còn sống; chẳng hạn khi sinh con đầu lòng thì mã số bằng 1. Nếu trường hợp ca đẻ không thành công, thì trường này sẽ được bỏ trống.

finalwgt
là trọng số thống kê ứng với mỗi ý kiến. Nó là giá trị số chấm động để chỉ số người trong dân số nước Mỹ mà ý kiến này đại diện cho. Các thành viên của những nhóm được lấy mẫu lặp lại thì có trọng số thấp hơn.

Nếu đọc kĩ file ghi chép, bạn sẽ thấy rằng phần nhiều các biến này đều là số liệu suy diễn, nghĩa là chúng không phải các số liệu gốc mà được tính ra từ số liệu gốc. Chẳng hạn, với các ca đẻ thành công thì prglength bằng biến gốc wksgest (số tuần thai nghén) nếu có số liệu; còn nếu không nó sẽ được tính theo công thức mosgest * 4.33 (số tháng thai nghén nhân với số tuần có trong một tháng).

Các số liệu suy diễn thường dựa trên logic để kiểm tra sự thống nhất và độ chính xác của số liệu. Nói chung, dùng số liệu suy diễn là tốt trừ phi có một lý do thuyết phục để bạn tự xử lý số liệu gốc.

Bạn có thể cũng nhận thấy được rằng Pregnancies có một phương thức mang tên Recode để thực hiện kiểm tra thêm và suy diễn số liệu.

Trong bài tập này, bạn sẽ viết một chương trình để khám phá số liệu trong bảng Pregnancies.

  1. Trong cùng thư mục mà bạn lưu survey.py cùng với các file dữ liệu, hãy tạo ra một file tên là first.py và gõ vào, hoặc dán đoạn mã sau vào:
    import survey
    table = survey.Pregnancies()
    table.ReadRecords()
    print 'Number of pregnancies', len(table.records)
    

    Kết quả cần thu được là 13593 trường hợp mang thai.

  2. Hãy viết một vòng lặp để lặp qua table và đếm số ca đẻ thành công. Hãy tìm tài liệu ghi về outcome và kiểm tra để chắc rằng kết quả thu được thống nhất với phần tóm tắt trong tài liệu này.
  3. Hãy chỉnh lại vòng lặp để chia những bản ghi có ca đẻ thành công thành hai nhóm, một là cho bé đầu lòng và một cho các trường hợp còn lại. Một lần nữa, hãy đọc tài liệu ghi về birthord để xem liệu ràng kết quả tính được có thống nhất không.

    Mỗi khi làm việc với một tập số liệu mới, việc kiểm tra như thế này sẽ giúp ích tìm ra các lỗi và sự không thống nhất có trong số liệu, phát hiện ra các lỗi trong chương trình vừa viết, và kiểm tra xem bạn có hiểu được cách mã hóa các trường hay không.

  4. Hãy tính độ dài thời kì mang thai trung bình (theo tuần) đối với các bé đầu lòng và trường hợp khác. Có sự khác biệt gì giữa hai nhóm này không? Khác biệt có lớn không?

Bạn có thể tải về lời giải cho bài tập này từ http://thinkstats.com/first.py.

Mức ý nghĩa

Ở bài tập trước, bạn đã so sánh thời kì mang thai bé đầu lòng với các trường hợp khác; nếu giải đúng, bạn sẽ thấy rằng tính trung bình, bé đầu lòng sẽ chào đời muộn hơn khoảng 13 giờ. Một sự khác biệt như vậy được gọi là hiệu ứng biểu kiến; nghĩa là, có thể điều gì đó đang diễn ra, nhưng bạn không biết chắc. Vẫn có một vài câu hỏi mà bạn muốn nêu ra:

  • Nếu hai nhóm có số trung bình khác nhau, những đặc trưng thống kê khác như trung vị và phương sai thì sao? Chúng ta có thể nói một cách chính xác hơn xem hai nhóm khác nhau đến mức nào không?
  • Liệu có thể là sự khác biệt ta vừa thấy đã xảy ra tình cờ, ngay cả khi nếu các nhóm được so sánh thực ra là giống nhau? Nếu vậy, ta có thể kết luận rằng hiệu ứng đó không có ý nghĩa về mặt thống kê.
  • Liệu có thể hiệu ứng biểu kiến kia là do lựa chọn thiên lệch hay một sai sót gì trong khâu thiết lập thử nghiệm? Nếu vậy thì ta có thể kết luận rằng hiệu ứng này là một dị biệt; nghĩa là điều được tình cờ tạo ra chứ không phải do bạn phát hiện ra.

Trong phần còn lại của cuốn sách này ta sẽ tập trung giải đáp các câu hỏi trên.

Cách học thống kê tốt nhất là thực hiện một dự án nghiên cứu về vấn đề bạn quan tâm. Liệu có một câu hỏi như, “Bé đầu lòng có chào đời muộn không,” mà bạn cần tìm hiểu không?

Hãy nghĩ về những câu hỏi mà bản thân bạn thấy thú vị, hoặc những vấn đề thuộc về tri thức phổ quát, các chủ đề gây tranh cãi, hay những câu hỏi có quan điểm chính trị, rồi xem liệu bạn có thể lập nên một câu hỏi thích hợp cho việc điều tra thống kê không.

Hãy tìm dữ liệu để giúp bạn trả lời câu hỏi. Chính phủ thường cung cấp nguồn dữ liệu tốt vì số liệu từ nghiên cứu cộng đồng thường có thể truy cập được miễn phí.2

Một cách tìm khác để tìm thông tin là Wolfram Alpha, vốn là một tập hợp thông tin đã qua xử lý, có chất lượng cao tại http://wolframalpha.com. Kết quả từ Wolfram Alpha chịu các hạn chế bản quyền; có thể bạn phải xem các điều khoản trước khi tiến hành khai thác từ nguồn này.

Google và các máy tìm kiếm khác cũng có thể giúp bạn tìm số liệu, nhưng có thể khó đánh giá hơn về chất lượng của các tài nguyên trên mạng.

Nếu có vẻ như ai đó đã trả lời câu hỏi bạn đặt ra, hãy xem kĩ rằng câu trả lời đã thỏa đáng chưa. Có thể do số liệu hoặc cách tính bị lỗi mà kết luận đã đưa ra vẫn chưa đáng tin cậy. Với trường hợp như thế, bạn có thể tính cách khác cho cùng số liệu đó, hoặc tìm kiếm một nguồn số liệu tốt hơn.

Nếu đã tìm thấy một bài báo được công bố đã giải đáp câu hỏi đặt ra, bạn có thể lấy được số liệu gốc. Nhiều tác giả đưa dữ liệu công khai lên web, nhưng với các số liệu có tính nhạy cảm bạn phải liên lạc với tác giả, cung cấp các thông tin về việc bạn định dùng số liệu thế nào, hoặc đồng ý những điều khoản sử dụng nhất định. Hãy kiên trì!

Thuật ngữ

chứng cứ kinh nghiệm:
Chứng cứ, thường thuộc về cá nhân, được thu thập tự phát thay vì theo một kế hoạch được thiết kế cẩn thận.

tổng thể:
Nhóm được quan tâm nghiên cứu, thường là một nhóm người, nhưng thuật ngữ cũng dùng được với động vật, thực vật và khoáng chất3.

nghiên cứu cắt ngang:
Nghiên cứu trong đó thu thập số liệu về một tổng thể tại một thời điểm cụ thể.

nghiên cứu dọc:
Nghiên cứu dõi theo một tổng thể qua thời gian, thu thập số liệu về tổng thể nhiều lần.

người tham gia:
Người trả lời câu hỏi điều tra.

nhóm:
Một nhóm người tham gia.

mẫu:
Tập hợp con của tổng thể được dùng để thu thập số liệu.

đại biểu:
Một mẫu có tính đại biểu nếu mỗi thành viên của tổng thể đều có cùng khả năng có ở trong mẫu.

lấy mẫu lặp:
Kĩ thuật làm tăng tính đại biểu cho một tập con của tổng thể nhằm tránh lỗi gây ra do kích thước mẫu nhỏ.

bản ghi:
Trong một cơ sở dữ liệu, tập hợp thông tin về một cá thể được nghiên cứu.

trường:
Trong một cơ sở dữ liệu, một trong số các biến có tên cấu thành bản ghi.

bảng:
Trong một cơ sở dữ liệu, tập hợp các bản ghi.

dữ liệu gốc:
Các giá trị được thu thập và ghi lại mà không được hoặc ít được kiểm tra, tính toán hay diễn giải.

dữ liệu suy diễn:
Giá trị được phát sinh bởi tính toán hoặc dùng phép logic đối với dữ liệu gốc.

đặc trưng thống kê:
Kết quả của phép tính toán nhằm rút gọn một tập số liệu thành một con số (hay ít ra là một tập số nhỏ hơn) mà vẫn thể hiện được tính chất đặc trưng nào đó của số liệu.

hiệu ứng biểu kiến:
Kết quả đo hoặc đặc trưng thống kê mà gợi thấy điều đáng quan tâm.

có ý nghĩa thống kê:
Hiệu ứng biểu kiến được gọi là có ý nghĩa thống kê nếu nó có vẻ như không xuất hiện tình cờ.

dị biệt:
Hiệu ứng biểu kiến được hình thành do thiên lệch, lỗi đo đạc, hay một dạng lỗi nào khác.


  1. Xem http://cdc.gov/nchs/nsfg.htm.
  2. Khi tôi viết đến đây cũng là ngày có phiên tòa ở Anh xử để đi đến quyết định áp dụng Đạo luật Tự do Thông tin cho số liệu nghiên cứu khoa học.
  3. “Animal, Vegetable, Mineral”. Xem cụm từ này ở http://wikipedia.org/wiki/Twenty_Questions#Popular_variants.

2 phản hồi

Filed under Think Stats

2 responses to “Chương 1: Tư duy thống kê cần cho người lập trình

  1. Pingback: Think Stats: Xác suất thống kê dành cho người lập trình | Blog của Chiến

  2. Pingback: blog bai viet hay | winnun

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s