Category Archives: Thống kê

Chương 2: Các phân bố

Trở về Mục lục cuốn sách

2.1  Các histogram

Một trong những cách hay nhất để miêu tả một biến là báo những giá trị xuất hiện trong bộ số liệu, và báo mỗi giá trị xuất hiện bao lần. Thông tin miêu tả này được gọi là dạng phân bố của biến lượng đó.

Cách biểu diễn thông dụng nhất cho phân bố là một histogram, vốn là một biểu đồ cho thấy tần số của từng giá trị. Về phương diện này, “tần số” nghĩa là số lần mà giá trị xuất hiện. 

Trong Python, một cách hiệu quả để tính tần số là dùng một từ điển. Cho trước một dãy các giá trị, t:

hist = {}
for x in t:
    hist[x] = hist.get(x, 0) + 1

Thì kết quả là một từ điển nhằm ánh xạ từ các giá trị đến tần số. Một cách khác, bạn có thể sử dụng lớp Counter được định nghĩa trong module có tên collections:

from collections import Counter
counter = Counter(t)

Kết quả là một đối tượng Counter, vốn là một lớp con của từ điển.

Một lựa chọn khác là sử dụng phương thức value_counts của pandas, mà ta đã thấy trong chương trước. Nhưng trong cuốn sách này tôi đã tạo một lớp Hist, để biểu diễn các histogram và cung cấp các phương thức hoạt động với histogram.

2.2  Biểu diễn các histogram

Một constructor tên Hist có thể nhận vào một dãy, một từ diển, một chuỗi (Series) của pandas, hay một Hist khác. Bạn có thể khởi tạo một đối tượng Hist như sau:

>>> import thinkstats2
>>> hist = thinkstats2.Hist([1, 2, 2, 3, 5])
>>> hist
Hist({1: 1, 2: 2, 3: 1, 5: 1})

Đối tượng Hist cung cấp Freq, phương thức này nhận một gía trị rồi trả lại tần số xuất hiện của gía trị đó:

>>> hist.Freq(2)
2

Toán tử cặp ngoặc vuông cũng thực hiện điều tương tự:

>>> hist[2]
2

Nếu bạn tra tìm một gía trị mà chưa từng xuất  hiện, thì tần số của nó bằng 0.

>>> hist.Freq(4)
0

Values thì trả lại một danh sách chưa được sắp xếp các gía trị có trong Hist:

>>> hist.Values()
[1, 5, 3, 2]

Để lặp qua các gía trị theo thứ tự, bạn có thể dùng hàm lập sẵn có tên sorted:

for val in sorted(hist.Values()):
    print(val, hist.Freq(val))

Hoặc bạn có thể dùng Items để lặp qua các cặp gíá trị – tần số:

for val, freq in hist.Items():
     print(val, freq)

2.3  Vẽ các histograms


Hình 2.1: Histogram của cân nặng trẻ sơ sinh tính tròn số theo pound.

 


Để phục vụ cuốn sách này tôi đã viết một module có tên thinkplot.py ; module này cung cấp các hàm để vẽ các Hist và những đối tượng khác được định nghĩa trong  thinkstats2.py. Module được dựa trên pyplot, vốn thuộc về gói matplotlib. Hãy xem mục 0.2 để biết cách cài đặt matplotlib.

Để vẽ nên hist bằng thinkplot, hãy thử các lệnh sau:

>>> import thinkplot
>>> thinkplot.Hist(hist)
>>> thinkplot.Show(xlabel='value', ylabel='frequency')

Bạn có thể đọc tài liệu về thinkplot ở http://greenteapress.com/thinkstats2/thinkplot.html.


Hình 2.2: Histogram của phần lẻ cân nặng trẻ sơ sinh.

2.4  Các biến NSFG

Bây giờ ta hãy trở về dữ liệu từ NSFG. Mã lệnh dành cho chương này ở file first.py. Muốn biết thông tin về việc tải về và làm việc với mã lệnh này, hãy xem mục 0.2.

Khi bắt đầu làm việc với một bộ dữ liệu mới, tôi khuyên bạn nên khám phá các biến định sử dụng, xem xét từng biến một, và một cách làm hợp lý là nhìn vào những histogram.

Ở mục 1.6 chúng ta đã chuyển đổi agepreg từ phần trăm của năm sang thành năm, và kết hợp birthwgt_lb cùng birthwgt_oz vào một đại lượng, totalwgt_lb. Ở mục này tôi dùng các biến đó để minh họa một số đặc điểm của histogram.


Hinh 2.3: Histogram về tuổi người mẹ ở cuối thai kì.

 


Tôi sẽ bắt đầu bằng việc đọc dữ liệu và chọn những bản ghi có sinh nở thành công:

    preg = nsfg.ReadFemPreg()
    live = preg[preg.outcome == 1]

Biểu thức trong ngặc vuông là một chuỗi (Series) các gía trị boolean nhằm chọn các hàng trong khung dữ liệu (DataFrame) và trả lại một DataFrame mới. Tiếp theo, tôi phát sinh và vẽ nên histogram của birthwgt_lb cho các ca sinh.

    hist = thinkstats2.Hist(live.birthwgt_lb, label='birthwgt_lb')
    thinkplot.Hist(hist)
    thinkplot.Show(xlabel='pounds', ylabel='frequency')

Khi tham số truyền vào Hist là một chuỗi (Series) của pandas, thì bất cứ gía trị nan (gía trị không phải số) nào cũng bị bỏ đi. label là một chuỗi xuất hiện trong chú giải khi Hist được vẽ nên.


Hình 2.4: Histogram của thai kì tính theo tuần.

 


Hình 2.1 biểu diễn kết qủa. Gía trị thường gặp nhất, gọi là mốt, bằng 7 pound. Phân bố gần giống dạng hình chuông, chính là hình của phân bố chuẩn, còn được gọi là phân bố  Gauss. Nhưng khác với một phân bố chuẩn thực sự, phân bố này bất đối xứng; nó có một cái đuôi dài về phía trái so với về phía phải.

Hình 2.2 cho thấy histogram của birthwgt_oz, vốn là phần ounce [phần lẻ của pound] trong cân nặng sinh nở. Về lý thuyết, ta mong đợi dạng phân bố này là đều; nghĩa là tất cả gía trị phải có cùng tần suất. Song thực ra, 0 là gía trị phổ biến nhất, còn 1 và 15 ít gặp hơn, có lẽ bởi vì người báo cáo đã làm tròn những cân nặng nào gần sát trị số nguyên.

Hình 2.3 cho thấy histogram của agepreg, tuổi của người mẹ ở cuối thai kì. Mốt bằng 21 năm. Phân bố này rất gần tựa như hình chuông, song có đuôi kéo dài sang phải hơn là sang trái; đa số người mẹ ở những tuổi 20, còn những tuổi 30 thì ít hơn.

Hình 2.4 thể hiện histogram của prglngth, chiều dài của thai kì tính theo tuần. Cho đến giờ gía trị thông thường nhất là 39 tuần. Đuôi phía trái dài hơn phía phải; các trẻ sinh sớm thường thấy hơn, còn thai ít khi lâu qúa 43 tuần, và bác sĩ thường can thiệp trong trường hợp như vậy.

2.5  Giá trị biệt lập

Nhìn vào histogram, có thể dễ phát hiện gía trị thông dụng nhất và hình dạng phân bố, nhưng các gía trị hiếm thì thường không nhìn thấy được.

Trước khi tiếp tục, ta nên kiểm tra xem có các gía trị biệt lập không, đó là những gía trị cực hạn có thể do sai số trong đo đạc và ghi chép, hoặc có thể là con số báo đúng về những hiện tượng hiếm.

Hist cung cấp các phương thức Largest và Smallest, vốn nhận vào một số nguyên n là trả lại n gía trị lớn nhất hoặc nhỏ nhất từ histogram:

    for weeks, freq in hist.Smallest(10):
        print(weeks, freq)

Trong danh sách các thai kì của những ca sinh  thành công, 10 giá trị thấp nhất là [0, 4, 9, 13, 17, 18, 19, 20, 21, 22]. Các giá trị dưới 10 tuần rõ ràng bị lỗi; lý giải phù hợp nhất là kết quả không được ghi chép đúng. Những giá trị cao hơn 30 tuần thì có thể hợp lý. Giữa 10 và 30 tuần thì khó chắc chắn; một vài giá trị có thể là lỗi, nhưng một số cũng biểu thị các ca sinh sớm.

Về phía kia của khoảng số liệu, những giá trị cao nhất là:

weeks  count
43     148
44     46
45     10
46     1
47     1
48     7
50     2

Đa số bác sĩ đều gợi ý đẻ can thiệp trong trường hợp thai kì vượt quá 42 tuần, bởi vậy những giá trị lớn hơn đều đáng ngạc nhiên. Đặc biệt, giá trị 50 tuần có vẻ không khả dĩ về mặt y học.

Cách tốt nhất để xử lý các điểm biệt lập thì phụ thuộc vào “kiến thức ngành”, tức là số liệu này đến từ đâu và nó có ý nghĩa gì. Và nó cũng phụ thuộc vào việc bạn dự định phân tích kiểu gì. 

Ở ví dụ này, câu hỏi khởi đầu là liệu con đầu lòng có xu hướng chào đời sớm (hay muộn) không. Khi người ta hỏi câu này, thì thường họ quan tâm đến các thai nhi tương đối đầy đủ tháng, bởi vậy tôi sẽ tập trung phân tích những ca mang thai hơn 27 tuần.

2.6  Con đầu lòng

Bây giờ ta có thể so sánh dạng phân bố của thai kì trẻ đầu lòng và trẻ sinh sau. Tôi chia DataFrame các ca sinh thành công theo birthord, và tính các histogram tương ứng:

    firsts = live[live.birthord == 1]
    others = live[live.birthord != 1]

    first_hist = thinkstats2.Hist(firsts.prglngth)
    other_hist = thinkstats2.Hist(others.prglngth)

Sau đó tôi vẽ các histogram này lên cùng trục:

    width = 0.45
    thinkplot.PrePlot(2)
    thinkplot.Hist(first_hist, align='right', width=width)
    thinkplot.Hist(other_hist, align='left', width=width)
    thinkplot.Show(xlabel='weeks', ylabel='frequency',
                   xlim=[27, 46])

thinkplot.PrePlot nhận vào số histogram ta dự định vẽ; hàm này nhận thông tin nêu trên để chọn tập hợp màu phù hợp.


Figure 2.5: Histogram các thai kì.

thinkplot.Hist normally dùng align=’center’ bởi vậy các cột đều được căn giữa trị số tương ứng. Nhưng để vẽ hình trên, tôi dùng align=’right’ và align=’left’ để đặt những cột tương ứng vào bên trái và bên phải trị số.

Với width=0.45, bề rộng tổng cộng của hai cột bằng 0.9, và chừa ra chỗ trống giữa từng cặp số liệu.

Sau cùng, tôi chỉnh lại trục để chỉ cho hiển thị các số liệu giữa 27 và 46 tuần. Hình 2.5 biểu diễn kết quả.

Histograms rất hữu ích vì chúng khiến cho những giá trị thường xuất hiện trở nên rõ ràng lập tức. Nhưng loại biểu này không phải tốt nhất khi ta muốn so sánh hai dạng phân bố. Ở đây, có ít “trẻ đầu lòng” hơn so với “con sinh sau,” vì vậy một số điểm khác biệt lộ rõ trong histogram lại do các kích cỡ mẫu. Ở chương tiếp theo chúng ta giải quyết điều này bằng các hàm mật độ khối xác suất.

2.7  Tóm tắt dạng phân bố

Một histogram là hình thức mô tả đầy đủ cho dạng phân bố của một mẫu; nghĩa là khi có histogram, ta có thể tái tạo lại được các giá trị trong mẫu (dù không được thứ tự).

Nếu chi tiết về phân bố là quan trọng thì có thể cần trình bày một histogram. Song thường ta muốn tóm tắt dạng phân bố chỉ bằng một vài đặc trưng thống kê mô tả.

Một vài đặc tính mà có thể ta muốn báo cáo gồm có:

  • xu thế trung tâm: Liệu các giá trị có xu thế cụm lại quanh một điểm cụ thể không?
  • số đông: Có hơn một cụm như vậy không?
  • độ tản mát: Độ biến động trong các giá trị có nhiều không?
  • đuôi: Xác suất giảm đi nhanh không khi di chuyển khỏi số đông?
  • giá trị biệt lập: Có những giá trị cực hạn nằm xa số đông không?

Các đặc trưng thống kê được chỉ định giải đáp những câu hỏi trên thì được gọi là các đặc trưng thống kê tóm tắt. Cho đến giờ, đặc trưng thống kê thông dụng nhất là số trung bình, vốn được dùng để mô tả xu thế trung tâm của phân bố. 

Nếu bạn có một mẫu gồm n giá trị, xi, thì giá trị trung bình, μ, là tổng của các giá trị trên chia cho số các giá trị; nói cách khác

μ = (1 / n)∑i xi

Các từ “trị trung bình” và “average” đôi khi có thể dùng thay thế được cho nhau, nhưng tôi vẫn muốn phân biệt:

 

  • “Trị trung bình” của một mẫu là đặc trưng thống kê được tính theo công thức trên.
  • “average” là một trong nhiều đặc trưng thống kê mà bạn có thể chọn để mô tả giá trị điển hình hay xu thế trung tâm.

 

Đôi khi trị trung bình là một cách mô tả tốt một tập hợp các giá trị. Chẳng hạn, các quả táo nói chung đều có kích thước gần bằng nhau (ít ra là táo bày bán ở siêu thị). Vì vậy nếu tôi mua 6 quả táo và khối lượng tổng cộng là 3 pound thì cũng có lý khi nói rằng mỗi quả táo nặng cỡ nửa pound.

Nhưng bí đỏ thì đa dạng hơn. Chẳng hạn ở vườn nhà, tôi trồng bí và một ngày kia thua hoạch được 3 quả bí để bày, mỗi quả nặng 1 pound và hai quả bí pie, mỗi quả nặng 3 pound, và một quả bí Atlantic Giant® nặng đến 591 pound. Trị trung bình của mẫu này là 100 pound, nhưng nếu tôi nói “Quả bí trung bình ở vườn nhà tôi nặng 100 pound,” thì sẽ là sai, hoặc chí ít sẽ gây ngộ nhận. Trong trường hợp này, không có trung bình nào có ý nghĩa vì không có quả bí điển hình nào có khối lượng như vậy.

 

2.8  Phương sai

Nếu không có một con số nào đặc trưng được cho khối lượng quả bí thì tốt hơn là chúng ta dùng hai con số: trị trung bình và phương sai.

Phương sai là một đặc trưng thống kê tóm tắt được dùng để mô tả độ phân tán hay mức độ rải rác của phân bố. Phương sai của một tập hợp giá trị thì bằng

σ2 = (1 / n)∑i (xi - μ)2

Số hạng xi μ được gọi là “độ lệch so với trung bình,” vì vậy phương sai là giá trị trung bình của bình phương độ lệch. Căn bậc hai của phương sai, S, là độ lệch chuẩn.

Nếu bạn đã có kinh nghiệm từ trước, bạn có thể gặp một công thức phương sai có n−1 ở mẫu số thay vì n. Đặc trưng thống kê đó được dùng  để ước lượng phương sai trong tổng thể bằng cách dùng một mẫu. Ta sẽ trở lại vấn đề này trong Chương 8.

Các cấu trúc dữ liệu Pandas đều cung cấp phương thức để tính trị trung bình, phương sai, và độ lệch chuẩn:

    mean = live.prglngth.mean()
    var = live.prglngth.var()
    std = live.prglngth.std()

Với tất cả những ca sinh thành công, thai kì trung bình bằng 38.6 tuần, độ lệch chuẩn bằng 2.7 tuần, nghĩa là ta nên coi mức độ chênh lệch 2-3 tuần là điều thông thường.

Phương sai của thai kì bằng 7.3, cái này khó diễn giải, đặc biệt là vì đơn vị bằng tuần2, hay “tuần bình phương.” Phương sai thì hữu ích trong một số phép tính, nhưng nó không phải là một đặc trưng tóm tắt tốt.

2.9  Cỡ hiệu ứng

Cỡ hiệu ứng là một đặc trưng thống kê tóm tắt được dùng để mô tả kích cỡ của một hiệu ứng. Chẳng hạn, để mô tả sự khác biệt giữa hai nhóm, một lựa chọn hiển nhiên là hiệu số giữa các trị trung bình. 

Thai kì trung bình cho trẻ đầu lòng là 38.601; với trẻ sinh sau là 38.523. Khác biệt bằng 0.078 tuần, tính ra là 13 giờ. Chỉ bằng một phần nhỏ của thai kì, sự khác biệt trên vào khoảng 0.2%.

Nếu ta giả sử rằng ước tính trên là đúng, thì mức độ khác biệt này không có hệ quả đáng kể nào. Thực ra, nếu không quan sát rất nhiều ca sinh đẻ thì có lẽ chẳng ai có thể nhận ra khác biệt trên.

Một cách khác để chuyển tải ý nghĩa của cỡ hiệu ứng là để so sánh hiệu số giữa hai nhóm với độ biến động trong từng nhóm. Trị số d của Cohen là một đặc trưng thống kê nhằm mục đích này; nó được định nghĩa như là

d = \frac{\bar{x}_1 - \bar{x}_2} { s }

trong đó \bar{x}_1\bar{x}_1 là các trị trung bình của từng nhóm còn s là “độ lệch chuẩn gộp chung”. Sau đây là mã lệnh Python để tính trị số d của Cohen:

def CohenEffectSize(group1, group2):
    diff = group1.mean() - group2.mean()

    var1 = group1.var()
    var2 = group2.var()
    n1, n2 = len(group1), len(group2)

    pooled_var = (n1 * var1 + n2 * var2) / (n1 + n2)
    d = diff / math.sqrt(pooled_var)
    return d

Ở ví dụ này, hiệu số giữa các trị trung bình bằng 0.029 lần độ lệch chuẩn, tức là rất nhỏ. Để tiện đối chiếu, khác biệt về độ cao người nam giới và phụ nữ thì bằng khoảng 1.7 lần độ lệch chuẩn (xem https://en.wikipedia.org/wiki/Effect_size).

2.10  Báo cáo kết quả

Ta đã thấy được vài cách mô tả hiệu số về thai kì (nếu có) giữa trẻ đầu lòng và trẻ sinh sau. Làm thế nào ta có thể báo những kết quả trên?

Câu trả lời phụ thuộc vào ai là người đặt câu hỏi. Một nhà khoa học có thể sẽ quan tâm đến các hiệu ứng thật, bất kì nó nhỏ đến mức nào. Một bác sĩ có thể chỉ quan tâm đến những hiệu ứng có ý nghĩa về y khoa; tức là những khác biệt có ảnh hưởng đến quyết định điều trị. Một phụ nữ mang thai có thể quan tâm đến những kết quả có liên quan tới cô ấy, như các xác suất sinh sớm hoặc muộn.

Cách mà bạn báo cáo kết quả cũng phụ thuộc vào mục tiêu của bạn. Nếu phải biểu diễn ý nghĩa của một hiệu ứng, bạn có thể chọn đặc trưng thống kê, như rủi ro tương đối, để nhấn mạnh sự khác biệt. Nếu bạn cần trấn an bệnh nhân, bạn có thể chọn số thống kê mà đặt khác biệt này vào bối cảnh.

Dĩ nhiên quyết định của bạn còn bị định hướng bởi đạo đức ngành nghề. Thuyết phục cũng được thôi; bạn nên thiết kế những báo cáo và hiển thị số thống kê nhằm kể lại câu chuyện thạt rõ ràng. Nhưng bạn cũng nên cố hết sức để báo cáo trung thực, và nhận định những sự bất định và các hạn chế.

2.11  Bài tập

Bài tập 1.   Dựa vào các kết quả từ những bài tập trước, chẳng hạn bạn được yêu cầu phải tóm tắt những gì bạn đã biết về vấn đề liệu trẻ đầu lòng có chào đời muộn hay không. Bạn sẽ dùng đặc trưng thống kê nào nếu muốn đưa vào chuyện kể trong bản tin buổi tối? Bạn sẽ dùng đặc trưng nào nếu muốn an ủi một bệnh nhân đang lo lắng?

Sau cùng, hãy tưởng tượng rằng mình là Cecil Adams, tác giả của The Straight Dope (http://straightdope.com), và nhiệm vụ của bạn là trả lời câu hỏi, “Liệu trẻ đầu lòng có chào đời muộn không?” Hãy viết bài trả lời dựa trên những kết quả trong chương này để giải đáp câu hỏi một cách rõ ràng, tập trung, và chính xác.

Bài tập 2.   Trong dữ liệu đã tải về, bạn sẽ tìm thấy một file có tên chap02ex.ipynb; mở nó ra. Một số ô đã được điền sẵn, bạn hãy chạy chúng. Những ô khác thì hướng dẫn cách làm bài tập. Hãy làm theo hướng dẫn này và điền câu trả lời. Một lời giải cho bài tập này được cho ở chap02soln.ipynb

Trong dữ liệu tải về, bạn sẽ tìm thấy một file tên là chap02ex.py; bạn có thể dùng file này để khởi đầu cho những bài tập tiếp theo. Lời giải của tôi có ở filechap02soln.py.

Bài tập 3.  Số đông (mode) của một dạng phân bố là giá trị hay xuất hiện nhất (xem http://wikipedia.org/wiki/Mode_(statistics)). Hãy viết một hàm có tên Mode nhận vào một đối tượng Hist và trả lại giá trị xuất hiện nhiều nhất. Một nhiệm vụ khó hơn là, hãy viết một hàm có tên AllModesnhận vào đối tượng Hist và trả lại một danh sách các cặp giá trị–tần số xếp theo thứ tự tần suất giảm dần.

Bài tập 4.   Dùng biến totalwgt_lb, hãy xét xem liệu trẻ đầu lòng có nhẹ hơn hay nặng hơn trẻ sinh sau. Tính trị số d của Cohen để định lượng sự khác biệt giữa các nhóm. Khác biệt này so với khác biệt về thai kì như thế nào?

2.12  Thuật ngữ

  • phân bố: The values that appear in a sample and the frequency of each.
  • histogram: Một ánh xạ từ giá trị đến tần số, hoặc một biểu đồ thể hiện ánh xạ này.
  • tần số: Số lần mà một giá trị xuất hiện trong mẫu.
  • số đông: Giá trị hay gặp nhất trong một mẫu, hoặc là một trong những giá trị hay gặp nhất này.
  • phân bố chuẩn: một dạng lý tưởng của phân bố hình chuông; còn gọi là phân bố Gauss. 
  • phân bố đều: Một phân bố mà trong đó tất cả các giá trị đều có cùng tần số.
  • đuôi: Phần của phân bố nằm về các phía cực hạn cao và thấp.
  • xu thế trung tâm: Đặc tính của một mẫu hoặc tổng thể; theo trực giác, đó là giá trị trung bình nhất. 
  • điểm biệt lập: Giá trị nằm cách xa xu thế trung tâm.
  • phân tán: Một độ đo mức rải rác của các giá trị trong một phân bố.
  • đặc trưng thống kê tóm tắt: Một đặc trưng thống kê để định lượng một khía cạnh nào đó của phân bố, như xu thế trung tâm hay phân tán.
  • phương sai: Đặc trưng thống kê tóm tắt thường được dùng để lượng hóa mức phân tán.
  • độ lệch chuẩn: Căn bậc hai của phương sai, cũng được dùng để đo mức phân tán.
  • cơ hiệu ứng: Một đặc trưng thống kê để định lượng kích cỡ của một hiệu ứng như khác biệt giữa các nhóm.
  • có ý nghĩa về mặt y học: Kết quả, chẳng hạn một khác biệt giữa hai nhóm, có liên quan trong thực hành y khoa.
Advertisements

Bạn nghĩ gì về bài viết này?

Filed under Think Stats

Chương 1. Phân tích dữ liệu theo cách khám phá

Dịch từ cuốn Think Stats: Exploratory Data Analysis in Python 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 4.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.

Trở về Mục lục cuốn sách

Luận điểm của cuốn sách này là dữ liệu kết hợp với các phương pháp thực dụng sẽ trả lời được các câu hỏi và dẫn dắt những quyết định trong điều kiện không chắc chắn.

Chẳng hạn, tôi xin nêu một trường hợp cụ thể đặt ra từ một câu hỏi mà tôi nghe được khi tôi cùng vợ đang chờ sinh con đầu: liệu những đứa trẻ đầu lòng có xu hướng chào đời chậm hay không? Tiếp tục đọc

%(count) bình luận

Filed under Think Stats, Tin học

Think Stats: Phân tích dữ liệu theo hình thức khám phá bằng Python

Phiên bản 2014, tác giả Allen B. Downey.

Nguyên bản HTML tiếng Anh: http://greenteapress.com/thinkstats2/html/index.html

Cấp phép để sao chép, phân phối và/hoặc sửa đổi văn bản này theo các điều khoản của Giấy Phép Creative Commons Ghi công-Phi thương mại-Chia sẻ tương tự 4.0 Quốc tế, được đăng ở http://creativecommons.org/licenses/by-nc-sa/4.0/

 Nội dung các chương

Chương 1: Phân tích dữ liệu khám phá

Chương 2: Phân bố xác suất

Chương 3: Hàm khối xác suất

Chương 4: Hàm phân bố lũy tích

Chương 5: Mô hình hóa phân bố

Chương 6 Hàm mật độ xác suất

Chương 7: Mối quan hệ giữa các biến

Chương 8: Ước lượng

Chương 9: Kiểm định giả thiết

Chương 10: Bình phương nhỏ nhất tuyến tính

Chương 11: Hồi quy

Chương 12: Phân tích chuỗi thời gian

Chương 13: Phân tích trường tồn

Chương 14: Các  phương pháp giải tích. Tiếp tục đọc

11 phản hồi

Filed under Think Stats, Tin học

6. Những ước lượng tổng quát

Trở về Mục lục cuốn sách

Trong Mục 3, ta đã đề cập tới các phương pháp khác nhau để ước lượng tham số có thể nhận được ngay và đơn giản từ mẫu cho trước {x0, x1,  …, xn − 1}. Ở mục này, một phương pháp chung được xét đến; phương pháp này cho phép các ước lượng nhận được với các tham số tuỳ ý của phân bố xác suất. Phương pháp này được dựa theo nguyên tắc hợp lý cực đại, thể hiện trong Mục 6.1. Nguyên tắc này có thể được mở rộng cho việc mô hình hoá dữ liệu, trong đó thường một mẫu ba số {(x0, y0, σ0),  (x1, y1, σ1),   …, (xn − 1, yn − 1, σn − 1)} được cho trước. Nói chung xi là các điểm số liệu biểu diễn cho một tham số điều khiển nào đó mà ta có thể chọn trong mô phỏng, như là nhiệt độ của một chất khí. Ta coi như tất cả các giá trị xi đều khác nhau. Hệ quả là, mô phỏng được thực hiện ở n giá trị khác nhau của tham số điều khiển. Các điểm số liệu yi là trị trung bình của những lần đo (chẳng hạn là mật độ của khí) thu được từ những mô phỏng ứng với giá trị cố định xi của tham số điều khiển. Các giá trị σi là những thang sai số tương ứng. 1 Việc mô hình hoá dữ liệu nghĩa là ta muốn xác định được quan hệ y = y(x). Thông thường ta có sẵn kiến thức hoặc một giả sử nào đó về mối quan hệ này, tức là ta có một hàm kiểm định được gắn tham số, yθ⃗(x). Do vậy, tập hợp các tham số θ⃗ phải được điều chỉnh sao cho hàm yθ⃗(x) khớp “nhất” với mẫu. Việc làm này được gọi là khớp số liệu và sẽ được giải thích ở Mục 6.2. Phương pháp này cũng dùng được để so sánh nhiều hàm khớp khác nhau nhằm quyết định xem hàm nào đặc trưng cho mô hình thích hợp nhất.

Tiếp tục đọc

%(count) bình luận

Filed under Ngẫu nhiên và mô phỏng

5. Kiểm định giả thiết và tính độc lập / phụ thuộc của số liệu

Trở về Mục lục cuốn sách

Ở mục trước, bạn đã học các hiển thị số liệu, chủ yếu là số liệu kết quả từ những phép phân tích cơ bản đã đề cập trong Mục 3. Ở mục này, ta tiếp tục với những phương pháp phân tích tinh vi hơn. Một cách quan trọng để phân tích số liệu từ mô phỏng là để kiểm định các giả thiết liên quan đến kết quả. Giả thiết được kiểm định thường được gọi là giả thiết không H0. Các ví dụ về giả thiết không gồm có:

  • Trong một hệ thống giao thông, việc mở một tuyến đường mới sẽ làm giảm giá trị trung bình của thời gian đi, \overline{t}_{{\rm{}A}\to{\rm{}B}}, từ A → B xuống dưới một mức cần đạt được, tđích.
  • Trong một mạng lưới quen biết, mỗi sự thay đổi các thông lệ quy định gặp mặt giữa hai người sẽ làm thay đổi sự phân bố của số người mà mỗi cá nhân biết được.
  • Sự phân bố của các năng lượng mức số không trong nam châm phi trật tự thì tuân theo dạng phân bố Fisher-Tippett.
  • Trong một mô hình sinh thái, kích thước quần thể cáo thì phụ thuộc vào kích thước quần thể bọ hung.
  • Đối với một loại protein hòa tan trong nước tại nhiệt độ trong phòng, việc thêm một loại muối nhất định vào nước sẽ làm thay đổi cấu trúc của protein đó.

Tiếp tục đọc

%(count) bình luận

Filed under Ngẫu nhiên và mô phỏng

4. Vẽ đồ thị cho số liệu

Trở về Mục lục cuốn sách

Mã nguồn người dịch mới upload randomness.zip

Đến giờ, bạn đã học được nhiều phương pháp phân tích số liệu. Vì bạn không chỉ muốn nhìn vào những bảng chứa đầy con số, nên cần phải biểu thị số liệu này dưới dạng biểu đồ. Những biểu đồ này, có chứa kết quả cốt yếu nhất từ thành quả nghiên cứu của bạn, có thể dùng được trong những bài thuyết trình hoặc công bố khoa học. Để phân tích và vẽ đồ thị số liệu, hiện có nhiều chương trình máy tính cả thương mại lẫn phi thương mại. Ở đây, ta đề cập đến hai chương trình miễn phí, gnuplot, và xmgrace. Gnuplot là chương trình nhỏ, chạy nhanh, vẽ và chuyển đổi được các đồ thị 2 và 3 chiều, cũng như khớp được các hàm tùy ý theo dãy số liệu (xem Mục 6.2). Còn xmgrace thì linh hoạt hơn và tạo ra kết quả đẹp hơn. Bạn nên dùng gnuplot để trực tiếp xem xét và khớp đường cong cho dãy số liệu, và xmgrace để tạo ra hình vẽ phục vụ thuyết trình hoặc ấn phẩm khoa học.

Tiếp tục đọc

5 phản hồi

Filed under Ngẫu nhiên và mô phỏng

3. Kiến thức cơ bản về phân tích số liệu

Trở về Mục lục cuốn sách

Mã nguồn người dịch mới upload: randomness.zip

Ta bắt đầu với một mẫu gồm n điểm đo {x0, x1,  …, xn − 1} của một đại lượng nào đó, thu thập từ một mô phỏng. Các ví dụ bao gồm mật độ của chất khí, thời gian chuyển tiếp giữa hai dạng thù hình của một phân tử, hay giá cổ phiếu. Ta giả sử rằng, một cách chặt chẽ, tất cả các kết quả đo đều có thể được biểu diễn bằng các biến ngẫu nhiên Xi thể hiện cho cùng một biến ngẫu nhiên X và tất cả phép đo đều độc lập thống kê với nhau (tính độc lập thống kê đã được đề cập trong Mục 5). Thông thường, ta không biết được phân bố xác suất F(x) bên trong, với mật độ xác suất p(x), để mô tả X.

Tiếp tục đọc

%(count) bình luận

Filed under Ngẫu nhiên và mô phỏng

2. Phát sinh các số (giả) ngẫu nhiên

Trở về Mục lục cuốn sách

Mã nguồn người dịch mới upload: randomness.zip

Nhiều trường hợp mô phỏng trong khoa học, kinh tế hay khoa học xã hội cần đến biến ngẫu nhiên. Thường thì mô hình tự nó bộc lộ những tham số ngẫu nhiên mà vẫn được giữ cố định trong suốt quá trình mô phỏng; ta nói đến quenched disorder (một dạng phi trật tự). Một ví dụ nổi tiếng trong lĩnh vực vật lý thể đặc là thủy tinh spin, vốn là hợp kim trộn ngẫu nhiên các vật liệu từ tính và phi từ tính. Trong trường hợp này, khi thực hiện những mô phỏng đối với hệ thống nhỏ, để thu được đại lượng vật lý cần thiết, ta phải tiến hành lấy trung bình các biểu hiện nhiễu loạn khoác nhau. Mỗi biểu hiện nhiễu loạn bao gồm các vị trí của hạt từ tính và phi từ tính được chọn một cách ngẫu nhiên. Để phát sinh ra biểu hiện nhiễu loạn phục vụ mô phỏng, ta cần có các số ngẫu nhiên. Nhưng ngay cả khi hệ được mô phỏng bản thân không có tính ngẫu nhiên thì thuật toán dùng để tính lại thường yêu cầu số ngẫu nhiên, chẳng hạn để lập nên một tập hợp thống kê (ensemble) chứa những nhiệt độ hữu hạn, hoặc khi dùng đến thuật toán ngẫu nhiên. Tóm lại, ứng dụng của số ngẫu nhiên trong mô phỏng điện toán rất phổ biến. Trong mục này, chúng tôi trình bày sự phát sinh số ngẫu nhiên. Trước hết là phần giải thích cách phát sinh chúng bằng mọi cách trên máy tính. Sau đó, các phương pháp khác nhau sẽ được trình bày nhằm mục đích thu được số tuân theo một dạng phân bố mong muốn: phương pháp nghịch đảo, phương pháp loại bỏ, và phương pháp Box-Müller. Các thông tin đầy đủ về những phương pháp này và tương tự có thể được tìm thấy trong các tài liệu tham khảo: [Morgan (1984); Devroye (1986); Press và nnk. (1995)]. Trong mục này tôi coi rằng bạn đã quen thuộc với những khái niệm cơ bản về lý thuyết xác suất và thống kê, như đã trình bày trong Mục 1. Tiếp tục đọc

Bạn nghĩ gì về bài viết này?

Filed under Ngẫu nhiên và mô phỏng

Ngẫu nhiên và xác suất trong mô phỏng máy tính

Tài liệu này là một chương trong cuốn sách “Practical Guide to Computer Simulations”, tác giả Alexander K. Hartmann, (c) 2009 World Scientific Publishing Co. Pte. Ltd. Tuy nhiên, bản sơ thảo thuộc về tác giả và được phát hành tự do, cũng như các nội dung khác trong CiteSeer .

Trong quyển sách này, ta quan tâm đến thống kê học theo nghĩa rất rộng, gồm có việc phát sinh ra số liệu (giả) ngẫu nhiên, hiển thị / vẽ đồ thị số liệu và phân tích thống kê cho kết quả mô phỏng.

Thông thường, việc mô phỏng bao gồm trực tiếp phát sinh ra số ngẫu nhiên chẳng hạn, như những đại lượng phụ cho các mô phỏng ngẫu nhiên. Trong trường hợp này hiển nhiên là những kết quả thống kê cũng mang tính ngẫu nhiên. Mặc dù có những mô phỏng rõ ràng là không ngẫu nhiên, nhưng kết quả thu được có biểu hiện dường như ngẫu nhiên, chảng hạn chuyển động của các nguyên tử khí tương tác nhau trong bình chứa. Vì vậy, những phương pháp từ phân tích số liệu thống kê rất cần thiết đối với hầu hết những việc phân tích kết quả của mô phỏng. Tiếp tục đọc

5 phản hồi

Filed under Ngẫu nhiên và mô phỏng

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

Chương 1: Tư duy thống kê dành cho người lập trình
Chương 2: Thống kê mô tả
Chương 3: Hàm phân bố lũy tích
Chương 4: Phân bố liên tục
Chương 5: Xác suất
Chương 6: Các phép toán đối với phân bố
Chương 7: Kiểm định giả thiết
Chương 8: Ước lượng
Chương 9: Tương quan

Tiếp tục đọc

10 phản hồi

Filed under Think Stats