Chương 9: Tương quan

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

Điểm chuẩn

Trong chương này ta sẽ xem xét quan hệ giữa các biến. Chẳng hạn, ta có thể cảm thấy rằng chiều cao có liên quan đến cân nặng; những người cao thì cũng có khuynh hướng nặng hơn. Tương quan được dùng để mô tả những mối quan hệ kiểu này.

Một thử thách trong việc đo đạc mối tương quan là việc các biến cần so sánh lại không được biểu diễn theo cùng đơn vị. Chẳng hạn, chiều cao có thể tính bằng cm và khối lượng theo kg. Và ngay cả khi chúng có cùng đơn vị, có thể chúng lại xuất phát từ những dạng phân bố khác nhau.

Có hai giải pháp thường dùng để giải quyết các vấn đề nêu trên:

  1. Chuyển đổi tất cả các giá trị về điểm tiêu chuẩn. Điều này dẫn đến hệ số tương quan Pearson.
  2. Chuyển đổi tất cả các giá trị về hạng phần trăm của chúng. Điều này dẫn đến hệ số tương quan Spearman.

Nếu X là một dãy các giá trị, Xi, thì ta có thể chuyển đổi về điểm tiêu chuẩn bằng cách trừ đi trị trung bình và chia cho độ lệch chuẩn: zi = (xi μ) / σ.

Tử số là một độ lệch: khoảng cách từ giá trị đến trị trung bình. Bằng cách chia cho σ ta đã chuẩn hóa độ lệch, bởi vì các giá trị của Z là không thứ nguyên (không có đơn vị) và phân bố của chúng có trị trung bình bằng 0 và phương sai bằng 1.

Nếu X tuân theo phân bố chuẩn, thì Z cũng vậy; nhưng nếu X có phân bố lệch hoặc bao gồm điểm biệt lập, thì Z cũng vậy. Trong các trường hợp đó, cách dùng hạng phần trăm sẽ vững hơn. Nếu R là các hạng phần trăm của các giá trị tương ứng với X, thì R sẽ có phân bố đều từ 0 đến 100, bất kể dạng phân bố của X là gì.

Hiệp phương sai

Hiệp phương sai là một độ đo của xu hướng mà hai biến có thay đổi cùng nhau. Nếu ta có hai dãy, XY, thì độ lệch của chúng so với các trị trung bình sẽ là

dXi = Xi μX

dYi = Yi μY

trong đó μX là trị trung bình của XμY là trị trung bình của Y. Nếu XY biến đổi cùng nhau thì các độ lệch của chúng có xu hướng cùng dấu nhau.

Nếu ta nhân chúng lại thì tích số sẽ dương nếu các độ lệch có cùng dấu và âm nếu chúng ngược dấu. Vì vậy việc cộng các tích số sẽ cho ta một độ đo xu hướng biến đổi cùng nhau.

Hiệp phương sai là trị trung bình của các tích số này:

Cov(X,Y) = (1/n)∑dxidyi

trong đó n là độ dài của hai dãy số (chúng phải có cùng độ dài).

Hiệp phương sai có ích trong một số tính toán, nhưng ít khi nó được công bố như một đặc trưng thống kê vì khó diễn giải được. Một trong những lí do là việc đơn vị của hiệp phương sai là tích số các đơn vị của XY. Vì vậy hiệp phương sai của khối lượng và chiều cao có khi lại mang đơn vị kilogam-mét, điều này chẳng có nhiều ý nghĩa.

Hãy viết một hàm có tên là Cov nhận vào hai danh sách rồi tính hiệp phương sai của chúng. Để kiểm tra hàm viết được, hãy tính hiệp phương sai của một danh sách với chính nó rồi kiểm tra để khẳng định rằng Cov(X, X) = Var(X).

Bạn có thể tải về một lời giải từ http://thinkstats.com/correlation.py.

Tương quan

Một cách giải quyết vấn đề này là đem chia các độ lệch cho σ, từ đó thu được điểm tiêu chuẩn, rồi tính tích số của các điểm tiêu chuẩn này:

pi = {(xi – μX)/σX} {(yi – μY)/σY}

Giá trị trung bình của các tích này là

ρ = (1/n)∑pi

Giá trị này được gọi là hệ số tương quan Pearson đặt tên theo Karl Pearson, một “cây đại thụ” trong ngành thống kê học. Giá trị có thể dễ dàng tính toán và diễn giải. Vì các điểm chuẩn không có thứ nguyên nên ρ cũng vậy.

Ngoài ra, kết quả tìm được phải nằm trong khoảng từ 1 đến +1. Để hiểu được nguyên nhân, ta cần viết lại ρ bằng cách phân tích thành các thừa số σXσY:

ρ = {Cov(X,Y)} / {σXσY}

Diễn giải dưới dạng các độ lệch, ta có

ρ = {∑dxidyx} / {∑dxidyi}

Sau đó theo bất đẳng thức Cô-si – Svac (Cauchy-Schwarz) kinh điển1, có thể cho thấy ρ2  ≤  1, do vậy 1  ≤  ρ  ≤  1.

Độ lớn của ρ cho thấy độ mạnh của tương quan. Nếu ρ = 1 thì các biến số có tương quan hoàn hảo, nghĩa là nếu bạn đã biết một biến thì bạn sẽ đoán đúng được biến còn lại. Cũng vậy nếu ρ = 1. Nó có nghĩa rằng nếu các biến có tương quan âm, nhưng để phục vụ cho mục đích dự đoán, thì tương quan âm cũng có ích như tương quan dương.

Trên thực tế hầu hết các tương quan đều không hoàn hảo, nhưng vẫn rất có ích. Chẳng hạn, nếu bạn biết cân nặng của một người thì bạn có thể đoán được chiều cao của người đó. Bạn có thể không đoán đúng, nhưng vẫn còn tốt hơn trong trường hợp bạn đoán không dựa vào số chiều cao. Số tương quan Pearson là một độ đo sự tốt hơn này.

Vì vậy nếu ρ = 0, liệu điều này có nghĩa rằng không có quan hệ giữa các biến này không? Không may là điều này không đúng. Tương quan Pearson chỉ đo các quan hệ tuyến tính. Nếu tồn tại một quan hệ phi tuyến thì ρ sẽ xem nhẹ mức độ phụ thuộc giữa hai biến.

Ví dụ về các bộ số liệu với một loạt các tương quan. [corr_examples

Hình trên được lấy từ http://wikipedia.org/wiki/Correlation_and_dependence. Nó cho thấy các biểu đồ điểm chấm và hệ số tương quan của một vài bộ số liệu được thiết kế riêng.

Các biểu đồ trên hàng đầu cho thấy quan hệ tuyến tính với một loạt các sự tương quan; bạn có thể dựa trên hàng này để hình dung được xem ρ bằng bao nhiêu. Hàng thứ hai biểu thị các tương quan hoàn hảo với một loạt các độ dốc, cũng cho thấy rằng tương quan thì không có can hệ gì đến độ dốc (ta sẽ sớm nói về cách ước tính độ dốc). Hàng thứ ba cho thấy các biến rõ ràng là có quan hệ với nhau, nhưng vì mối quan hệ có tính phi tuyến, nên hệ số tương quan bằng 0.

Ý nghĩa của câu chuyện này là bạn luôn nên nhìn vào một biểu đồ điểm chấm các điểm số liệu trước khi tính toán hệ số tương quan một cách mù quáng.

Hãy viết một hàm có tên Corr nhận vào hai biến và tính tương quan của chúng. Gợi ý: hãy dùng thinkstats.Var và hàm Cov đã viết ở bài tập trước.

Để thử nghiệm hàm vừa viết được, hãy dùng nó để tính hiệp phương sai của một danh sách đối với chính nó và kiểm tra rằng Corr(X, X) bằng 1. Bạn có thể tải về một lời giải từ http://thinkstats.com/correlation.py.

Vẽ đồ thị điểm chấm bằng pyplot

Đồ thị điểm chấm đơn giản giữa cân nặng và chiều cao của những người được điều tra trong BRFSS. [scatterplot1

Đồ thị điểm chấm với số liệu dao động. [scatterplot2

Đồ thị điểm chấm có độ đậm nhạt với số liệu dao động. [scatterplot3

Đồ thị điểm chấm với số liệu được chia ngăn vẽ bằng pyplot.hexbin. [scatterplot4

Cách dễ nhất để kiểm tra quan hệ giữa hai biến là một biểu đồ điểm chấm, nhưng để vẽ đẹp biểu đồ này thì không phải luôn dễ dàng. Chẳng hạn, tôi sẽ chấm điểm cân nặng theo chiều cao của những người tham gia vào BRFSS (xem Mục [phân bố loga chuẩn]). pyplot cho ta hàm có tên scatter để vẽ các đồ thị kiểu này:

import matplotlib.pyplot as pyplot 
pyplot.scatter(heights, weights)

Hình scatterplot1 biểu thị kết quả. Không ngạc nhiên là nó trông như một xu hướng tương quan dương: những người cao thường có xu hướng nặng hơn. Nhưng đây không phải là cách biểu thị số liệu tốt nhất, vì số liệu được gộp vào các cột. Vấn đề là chiều cao được làm tròn đến số inch gần nhất, được đổi sang centimet, và sau đó lại được làm tròn tiếp. Có thông tin đã bị mất đi trong quá trình chuyển đổi.

Ta không thể lấy lại thông tin đã mất, nhưng có thể giảm thiểu hiệu ứng này đối với biểu đồ bằng cách làm dao động số liệu, nghĩa là sẽ thêm vào các nhiễu động ngẫu nhiên để cân bằng với hiệu ứng gây ra bởi làm tròn. Vì những số đo này được làm tròn đến inch gần nhất, nên chúng có thể sai lệch tới 0,5 inch hay 1,3 cm. Vì vậy tôi đem cộng vào các lượng nhiễu động trong khoảng từ 1,3 đến 1,3:

jitter = 1.3 
heights = [h + random.uniform(-jitter, jitter) for h in heights]

Hình scatterplot2 cho thấy kết quả. Việc làm dao động số liệu khiến cho hình dáng mối quan hệ trở nên rõ hơn. Nói chung bạn chỉ nên làm dao động số liệu để phục vụ cho việc hiển thị và tránh dùng cách dao động này để phân tích tính toán.

Ngay cả khi đã dao động thì đó cũng không phải là cách biểu diễn số liệu tốt nhất. Còn có nhiều điểm trùng lặp, vốn làm ẩn đi các số liệu trong những phần dày đặc trên hình vẽ và nhấn mạnh quá mức các điểm biệt lập.

Ta có thể giải quyết vấn đề này bằng tham số alpha, có tác dụng làm các điểm chấm trở nên phần nào trong suốt:

pyplot.scatter(heights, weights, alpha=0.2) 

Hình scatterplot3 biểu diễn kết quả. Các điểm số liệu chồng lên nhau sẽ trông đậm hơn, vì vậy độ đậm nhạt sẽ tỉ lệ với mật độ. Trong cách vẽ này ta có thể phát hiện một hiệu ứng tồn đọng: một đường nằm ngang ở mức 90 kg hoặc 200 pound. Vì số liệu này được dựa trên các báo cáo tự giác, con số tính theo pound nên nhiều khả năng ta sẽ hiểu chúng được làm tròn (có thể là làm tròn xuống).

Bằng cách dùng độ trong sẽ phù hợp với các bộ số liệu cỡ trung bình, nhưng hình vẽ này chỉ cho thấy 1000 điểm số liệu đầu tiên trong BRFSS, trong tổng số 414509.

Để xử lý các bộ số liệu lớn hơn, một cách lựa chọn là dùng biểu đồ hexbin, theo đó biểu đồ sẽ được chia thành những ngăn lục giác và được tô màu căn cứ theo số điểm chấm rơi vào trong phạm vi từng ngăn. pyplot có một hàm tên là hexbin:

pyplot.scatter(heights, weights, cmap=matplotlib.cm.Blues) 

Hình scatterplot4 cho thấy kết quả với dải màu xanh lam. Một ưu điểm khi dùng hexbin là nó cho thấy rõ hình dạng của mối quan hệ, và hiệu quả hơn khi xử lý các bộ số liệu lớn. Một nhược điểm là nó làm biến đi các điểm biệt lập.

Ý nghĩa của câu chuyện này muốn nói là không dễ tạo ra một biểu đồ điểm chấm mà không tiềm ẩn sự đánh lạc hướng người xem. Bạn có thể tải về đoạn mã phát sinh các biểu đồ này từ http://thinkstats.com/brfss_scatter.py.

Tương quan hạng Spearman

Tương quan Pearson phát huy tác dụng khi quan hệ giữa các biến là tuyến tính và các biến tương đối chuẩn hóa. Nhưng nó sẽ không vững vàng trong trường hợp có điểm biệt lập.

Bộ tứ Anscombe minh họa rõ hiệu ứng này; nó bao gồm bốn bộ số liệu với cùng độ tương quan. Một có tương quan tuyến tính với nhiễu ngẫu nhiên, một là quan hệ phi tuyến, một là quan hệ hoàn hảo với một điểm biệt lập, và một thì không có quan hệ nào chỉ trừ một hiệu ứng tồn đọng gây ra bởi một điểm biệt lập. Bạn có thể đọc thêm tại http://wikipedia.org/wiki/Anscombe's_quartet.

Tương quan hạng Spearman là một cách làm khác trong đó giảm thiểu hiệu ứng của các điểm biệt lập và các phân bố lệch. Để tính ra sự điều chỉnh của Spearman, ta phải tính hạng của từng giá trị, vốn là thứ tự của nó trong mẫu đã được sắp xếp. Chẳng hạn, trong mẫu {7, 1, 2, 5}, hạng của giá trị 5 là 3, vì nó sẽ xuất hiện ở vị trí thứ ba khi ta sắp xếp các phần tử. Sau đó ta tính tương quan Pearson cho các hạng này.

Một cách khác với cách của Spearman là áp dụng một phép chuyển đổi để khiến cho dữ liệu trở nên gần như được chuẩn hóa, sau đó mới tính tương quan Pearson cho số liệu được chuyển đổi. Ví dụ, nếu số liệu có dạng xấp xỉ với loga-chuẩn thì bạn có thể tính loga của mỗi giá trị rồi đi tính tương quan của các giá trị loga đó.

Hãy viết một hàm nhận vào một dãy rồi trả lại một danh sách chứa hạng của từng phần tử. Chẳng hạn, nếu dãy là {7, 1, 2, 5}, thì kết quả sẽ phải là {4, 1, 2, 3}.

Nếu một giá trị được lặp lại nhiều lần thì cách giải chặt chẽ nhất là gán mỗi giá trị với trị trung bình giữa các hạng của chúng. Nhưng nếu bạn bỏ qua điều này và gán thứ hạng tùy ý thì sai số cũng thường chỉ nhỏ thôi.

Hãy viết một hàm nhận vào hai dãy (với cùng độ dài) rồi tính tương quan hạng Spearman. Bạn có thể tải về một lời giải từ http://thinkstats.com/correlation.py.

Hãy tải về các file http://thinkstats.com/brfss.pyhttp://thinkstats.com/brfss_scatter.py. Chạy chúng để khẳng định chắc rằng bạn đọc được số liệu BFRSS và vẽ được các biểu đồ điểm chấm.

So sánh các biểu đồ chấm với Hình corr_examples, giá trị tương quan Pearson mà bạn trông đợi là bao nhiêu? Giá trị nhận được là bao nhiêu?

Bởi vì dạng phân bố của cân nặng người lớn thuộc loại loga chuẩn nên có những điểm biệt lập ảnh hưởng đến tương quan. Hãy thử chấm điểm loga(cân nặng) theo chiều cao, rồi tính hệ số tương quan Pearson cho biến mới được chuyển đổi này.

Sau cùng, hãy tính tương quan hạng Spearman cho cân nặng và chiều cao. Theo bạn thì hệ số nào là đại diện tốt hơn cho độ chặt chẽ của mối quan hệ? Bạn có thể tải về một lời giải từ http://thinkstats.com/brfss_corr.py.

Phép khớp bình phương nhỏ nhất

Hệ số tương quan cho thấy độ chặt chẽ của mối quan hệ cùng với dấu của nó, nhưng không cho ta biết độ dốc của đường quan hệ. Có một vài cách giúp ước tính độ dốc: cách thông dụng nhất là phép khớp bình phương nhỏ nhất. Một “phép khớp tuyến tính” là một đường thẳng được dùng với ý định mô phỏng mối quan hệ giữa các biến. Một phép khớp “bình phương nhỏ nhất” sẽ làm cực tiểu sai số quân phương (MSE) giữa đường thẳng và các điểm số liệu2.

Chẳng hạn chúng ta có một dãy các điểm, Y, mà ta muốn biểu thị như một hàm của một dãy khác, X. Nếu giữa XY có mối quan hệ tuyến tính rõ rệt là đường thẳng với giao điểm α với trục tung, và độ dốc β, thì ta sẽ trông đợi rằng mỗi Yi sẽ xấp xỉ α + β Xi.

Nhưng trừ phi tương quan là hoàn hảo, ước đoán này chỉ có tính gần đúng. Độ sai lệch, hay số dư, sẽ bằng

ɛi = (α + β Xi) Yi

Số dư có thể là do các yếu tố ngẫu nhiên như sai số đo đạc, hoặc do các nhân tố không ngẫu nhiên mà ta chưa biết. Chẳng hạn, nếu ta thử đoán cân nặng như một hàm theo chiều cao, thì các yếu tố chưa biết sẽ có thể bao gồm chế độ ăn kiêng, luyện tập thể dục, và tạng người.

Nếu ta tính sai các tham số αβ, thì sô dư sẽ lớn hơn, vì vậy theo trực giác thì các giá trị tham số ta cần chính là những giá trị làm cực tiểu những số dư.

Như thường lệ, ta có thể làm cực tiểu giá trị tuyệt đối của các số dư, bình phương, hoặc lập phương của chúng, v.v. Cách thông dụng nhất là làm cực tiểu tổng các bình phương của số dư

minα,β∑ɛi2

Vì sao? Có ba điều hay và một điều dở trong cách làm nêu trên:

  • Cách lấy bình phương có đặc điểm hiển nhiên là nó coi các số dư dương và âm với vai trò như nhau, đây thường là điều mà ta mong muốn.
  • Bình phương đặt thêm trọng lượng đối với các số dư lớn, nhưng không nặng quá khiến cho số dư lớn nhất luôn áp đảo.
  • Nếu các số dư đều độc lập đối với X, ngẫu nhiên, và tuân theo phân bố chuẩn với μ = 0 và σ là hằng số (nhưng chưa biết), thì cách khớp bình phương cũng là ước lượng khả năng cao nhất của αβ.3
  • Các giá trị \hat{\beta} làm cực tiểu các số dư bình phương có thể được tính ra một cách hiệu quả.

Chính đặc điểm cuối sẽ có ý nghĩa khi hiệu năng tính toán quan trọng hơn là chọn được phương pháp phù hợp với bài toán hiện tại. Đến nay, điều này không còn đúng nữa, vì vậy mà ta cũng cần phải xét xem liệu rằng các số dư bình phương có phải là đại lượng đúng cần được giảm thiểu hay không.

Chẳng hạn, nếu bạn dùng các giá trị của X để dự đoán các giá trị của Y, việc đoán quá cao có thể sẽ tốt hơn (hoặc dở hơn) so với ước đoán quá thấp. Trong trường hợp này, bạn có thể muốn tính một hàm giá thành nào đó, cost(ɛi), rồi làm cực tiểu giá thành.

Tuy nhiên, việc tính khớp bình phương nhỏ nhất thì rất nhanh, dễ dàng, và thường là đủ đáp ứng yêu cầu; và sau đây là cách tính:

  1. Tính các trung bình mẫu, , phương sai của X, và hiệp phương sai của XY.
  2. Độ dốc của ước lượng là\hat{\beta} = {Cov(X,Y)} / {Var(X)}
  3. Và giao điểm với trục tung là\hat{\alpha} = \bar{Y} - \hat{\beta} \bar{X}

Để thấy được cách biến đổi để thu được các công thức trên, bạn có thể xem http://wikipedia.org/wiki/Numerical_methods_for_linear_least_squares.

Hãy viết một hàm có tên LeastSquares nhận vào XY rồi tính \hat{\beta}. Bạn có thể tải về một lời giải từ http://thinkstats.com/correlation.py.

Lại dùng số liệu của BRFSS để tính khớp bình phương nhỏ nhất cho log(cân nặng) theo chiều cao. Bạn có thể tải về một lời giải từ http://thinkstats.com/brfss_corr.py.

Sự phân bố của tốc độ gió tại một địa điểm quyết định mật độ công suất gió, vốn là một giới hạn trên cho công suất trung bình mà tua-bin gió phát huy được nếu đặt ở địa điểm này. Dựa theo một số nguồn tài liệu, phân bố tốc độ gió đo được có thể mô phỏng rất phù hợp bằng một phân bố Weibull (xem http://wikipedia.org/wiki/Wind_power#Distribution_of_wind_speed).

Để ước lượng được xem liệu một địa điểm có thể thích hợp để đặt tua-bin gió hay không, bạn có thể lập một trạm đo tốc độ gió trong một khoảng thời gian. Nhưng sẽ rất khó để đo được chính xác phần đuôi của dải phân bố tốc độ gió, vì theo định nghĩa, những biến cố ứng với phần đuôi này không mấy khi xảy ra.

Một cách giải quyết vấn đề này là dùng các số liệu thực đo để ước lượng các tham số của một phân bố Weibull, rồi lấy tích phân trên PDF liên tục để tính mật độ công suất gió.

Để ước tính các tham số của phân bố Weibull, ta có thể dùng phép chuyển đổi từ Bài tập weibull rồi dùng một phép khớp tuyến tính để tìm ra độ dốc và tung độ giao điểm của số liệu được chuyển đổi.

Hãy viết một hàm nhận vào một mẫu từ phân bố Weibull rồi ước lượng các tham số.

Sau đó, viết một hàm nhận vào các tham số của một phân bố Weibull cho tốc độ gió rồi tính mật độ công suất gió trung bình (bạn có thể phải tìm đọc thêm tài liệu để làm được phần này).

Độ phù hợp của phép khớp

Sau khi đã khớp một mô hình tuyến tính cho số liệu, ta có thể muốn biết xem nó tốt bao nhiêu. Điều này còn tùy vào mục tiêu của bản thân việc khớp. Một cách đánh giá mô hình là nằm ở khả năng dự báo của nó.

Xét về mặt dự đoán thì đại lượng mà ta đang cố gắng đoán được gọi là biến phụ thuộc và đại lượng mà ta dùng để dự đoán được gọi là biến độc lập.

Để đo đạc khả năng dự báo của một mô hình, ta có thể tính hệ số xác định, thường được biết đến với tên gọi “R-bình phương”:

R2 = 1 – {Var(ɛ)} / {Var(Y)}

Để hiểu được R2 nghĩa là gì, hãy (một lần nữa) giả sử rằng bạn đang thử đoán cân nặng của một ai đó. Nếu bạn không biết gì về họ thì cách tốt nhất có thể sẽ là đoán ; trong trường hợp này sai số quân phương của con số mà bạn dự đoán sẽ là Var(Y):

MSE = (1/n)∑(yi)2 = Var(Y)

Nhưng nếu tôi bảo cho bạn biết chiều cao của họ, bạn sẽ có thể đoán + \hat{\beta} Xi; trong trường hợp đó sai số quân phương sẽ là Var(ɛ).

MSE = (1/n)∑( + \hat{\beta} xi yi)2 = Var(ɛ)

Vì vậy đại lượng Var(ɛ)/Var(Y), tỉ số giữa các sai số quân phương khi có và không có biến độc lập, vốn là tỉ lệ của sự biến đổi mà mô hình vẫn còn bỏ ngỏ. Phần bù của đại lượng đó, R2, là tỉ lệ của sự biến đổi được mô hình giải thích.

Nếu một mô hình có R2 = 0,64, bạn có thể nói rằng mô hình giải thích được 64% sự biến đổi, hay có lẽ chính xác hơn là nó làm giảm sai số quân phương của các con số dự đoán đi 64%.

Trong trường hợp mô hình bình phương nhỏ nhất tuyến tính, hóa ra là có một mối quan hệ đơn giản giữa hệ số xác định và hệ số tương quan Pearson, ρ:

R2 = ρ2

Xem http://wikipedia.org/wiki/Howzzat!

Thang đo trí thông minh người lớn Wechsler (Wechsler Adult Intelligence Scale, WAIS) được dùng để cho điểm trí thông minh; các điểm được bố trí sao cho trị trung bình và độ lệch chuẩn của dân số nói chung sẽ là 100 và 15.

Giả sử bạn muốn dự đoán điểm WAIS của ai đó dựa trên điểm thi SAT của họ. Căn cứ vào một kết quả nghiên cứu, có một tương quan với hệ số Pearson bằng 0,72 giữa điểm thi SAT và điểm WAIS.

Nếu bạn áp dụng công thức dự báo cho một mẫu lớn thì bạn sẽ trông đợi giá trị sai số quân phương (MSE) của việc dự báo này bằng bao nhiêu?

Gợi ý: MSE sẽ bằng bao nhiêu nếu bạn luôn luôn đoán số 100?

Hãy viết một hàm có tên Residuals nhận vào X, Y, và \hat{\beta} rồi trả lại một danh sách chứa ɛ2.

Hãy viết một hàm có tên CoefDetermination nhận vào các ɛiY rồi trả lại R2. Để kiểm tra các hàm vừa viết, hãy cho thấy R2 = ρ2. Bạn có thể tải về một lời giải từ http://thinkstats.com/correlation.py.

Hãy dùng số liệu về chiều cao và cân nặng của BRFSS (một lần nữa), tính \hat{\beta}R2. Nếu bạn muốn đoán cân nặng của ai đó, thì việc biết trước cân nặng của họ sẽ giúp bạn thêm bao nhiêu? Bạn có thể tải về một lời giải từ http://thinkstats.com/brfss_corr.py.

Tương quan và nhân-quả

Truyện tranh trào phúng trên mạng, xkcd, cho ta thấy sự khó khăn khi suy diễn luật nhân-quả:

Lấy từ xkcd.com, vẽ bởi Randall Munroe.

Nhìn chung, mối quan hệ giữa hai biến không cho bạn biết một sự việc này gây ra sự việc kia, hoặc ngược lại, hoặc cả hai phía, hoặc liệu chúng đồng thời được gây ra bởi một điều khác.

Quy luật này có thể được tóm tắt lại bởi câu nói “Tương quan không đồng nghĩa với quan hệ nhân-quả,” cô đọng đến nỗi có có riêng một trang Wikipedia: http://wikipedia.org/wiki/Correlation_does_not_imply_causation.

Vậy thì bạn có thể làm gì để chứng tỏ được sự tồn tại của quan hệ nhân-quả?

  1. Dùng thời gian. Nếu A xảy ra trước B, thì A có thể gây ra B nhưng không thể ngược lại (ít nhất là theo hiểu biết hiện tại của chúng ta về luật nhân quả). Thứ tự của các sự kiện có thể giúp ta suy diễn ra hướng của nhân-quả, nhưng nó không loại trừ khả năng một điều nào đó khác gây ra cả A và B.
  2. Dùng sự ngẫu nhiên. Nếu bạn chia một tổng thể lớn ra thành hai nhóm một cách ngẫu nhiên, và tính các trị trung bình của hầu hết tất cả các biến, thì bạn sẽ trông đợi rằng sự khác biệt là rất nhỏ. Đây là hệ quả của Định lý giới hạn trung tâm (vì vậy nó cũng phải tuân theo cùng các yêu cầu).Nếu hai nhóm gần như tương đồng về tất cả các biến nhưng chỉ trừ một biến thì bạn có thể loại trừ các quan hệ ngụy tạo.Điều này có tác dụng ngay cả khi bạn không biết các biến có liên quan là gì, nhưng nó sẽ có tác dụng hơn khi bạn biết thông tin đó, vì khi ấy bạn có thể kiểm tra để khẳng định là hai nhóm giống hệt nhau.

Các ý tưởng này là cơ sở hình thành phép thử ngẫu nhiên có kiểm soát, trong đó chủ thể được gán ngẫu nhiên cho hai (hoặc nhiều) nhóm; một nhóm điều trị nhận được sự can thiệp nhất định, như một loại thuốc mới, và một nhóm kiểm soát không nhận được can thiệp nào, hoặc điều trị theo một cách mà ta biết trước được những hiệu ứng.

Phép thử ngẫu nhiên có kiểm soát là cách làm tin cậy nhất để chứng minh một quan hệ nhân-quả, và cũng là nền móng cho y thuật dựa trên khoa học (xem http://wikipedia.org/wiki/Randomized_controlled_trial).

Không may là những phép thử có kiểm soát chỉ dùng được trong phòng thí nghiệm, trong y học và một số ít các lĩnh vự khác. Trong khoa học xã hội, những thí nghiệm có kiểm soát là rất hiếm, thường là vì chúng không thể thực hiện được hoặc phi đạo đức.

Một cách làm khác là đi tìm thí nghiệm tự nhiên, trong đó các phép “điều trị” khác nhau được áp dụng cho các nhóm người giống nhau. Một sự nguy hiểm của thí nghiệm tự nhiên là các nhóm có thể khác nhau theo cách không dễ nhận ra. Bạn có thể đọc thêm về chủ đề này ở http://wikipedia.org/wiki/Natural_experiment.

Trong một số trường hợp, ta có thể suy diễn quan hệ nhân-quả bằng phân tích hồi quy. Một phép khớp bình phương nhỏ nhất tuyến tính là một dạng đơn giản của hồi quy trong đó xác định biến phụ thuộc bằng một biến độc lập. Còn có những kĩ thuật tương tự áp dụng cho bao nhiêu biến độc lập cũng được.

Tôi không đề cập đến các kĩ thuật đó ở đây, nhưng cũng có những cách đơn giản để kiểm soát những mối quan hệ ngụy tạo. Chẳng hạn, trong số liệu NSFG, ta thấy được rằng trẻ đầu lòng thường có xu hướng nhẹ hơn trẻ sinh sau (xem Mục [cân nặng trẻ sơ sinh]). Nhưng cân nặng trẻ sơ sinh cũng tương quan với tuổi của người mẹ, và mẹ của bé đầu lòng thường cũng trẻ hơn mẹ của các bé sinh sau.

Vì vậy có thể trẻ đầu lòng nhẹ hơn vì mẹ của chúng trẻ hơn. Để kiểm soát hiệu ứng của tuổi tác, ta có thể chia các bà mẹ theo những nhóm tuổi và so sánh cân nặng trẻ sơ sinh của các bé đầu lòng và sinh sau đối với từng nhóm tuổi.

Nếu sự khác biệt giữa các trẻ đầu lòng và sinh sau cũng tương đồng trong các nhóm tuổi khác n hau cũng như trong pooled data (số liệu tổng hợp), thì ta kết luận rằng khác biệt này không liên quan đến tuổi tác. Nếu không có sự khác biệt nào, thì ta kết luận rằng hiệu ứng này hoàn toàn là do tuổi tác. Hoặc, nếu khác biệt là nhỏ hơn thì ta có thể định lượng xem bao nhiêu phần của hiệu ứng là do tuổi tác.

Số liệu NSFG bao gồm một biến có tên agepreg để ghi lại tuổi của bà mẹ tại thời điểm sinh bé. Hãy vẽ biểu đồ điểm chấm cho tuổi của mẹ và cân nặng của bé cho các ca sinh thành công. Bạn có thể thấy mối quan hệ nào không?

Hãy tính cách khớp bình phương nhỏ nhất cho các biến này. Những đơn vì của các tham số được ước tính, và \hat{\beta} là gì? Bạn có thể tóm tắt kết quả tìm được bằng 1 hoặc 2 câu ngắn gọn được không?

Hãy tính tuổi trung bình của mẹ các đứa trẻ đầu lòng và của mẹ các đứa trẻ sinh sau. Dựa vào hiệu số tuổi giữa hai nhóm này, bạn sẽ trông đợi hiệu số giữa cân nặng trẻ sơ sinh trung bình của hai nhóm bằng bao nhiêu? Một phần bao nhiêu của hiệu số thực sự giữa cân nặng hai nhóm được giải thích qua hiệu số tuổi hai nhóm các bà mẹ?

Bạn có thể tải về một lời giải của bài này từ http://thinkstats.com/agemodel.py. Nếu bạn muốn biết về hồi quy nhiều biến, bạn có thể chạy http://thinkstats.com/age_lm.py, file này giới thiệu cách dùng gói tính toán thống kê của R trong Python. Nhưng đó sẽ là nội dung của cả một cuốn sách khác.

Thuật ngữ

tương quan:
Việc mô tả sự phụ thuộc giữa các biến.
chuẩn hóa:
Chuyển đổi một tập hợp các giá trị sao cho tập giá trị mới có trị trung bình bằng 0 và phương sai bằng 1.
điểm chuẩn:
Giá trị sau khi được chuẩn hóa.
hiệp phương sai:
Độ đo của xu hướng biến đổi cùng nhau giữa hai biến.
hạng:
Chỉ số của một phần tử đứng trong danh sách đã được sắp xếp.
phép khớp bình phương nhỏ nhất:
Mô hình cho một bộ số liệu nhằm làm cực tiểu tổng các bình phương của các số dư.
số dư:
Độ lệch của một giá trị thực tế so với giá trị trong mô hình.
biến phụ thuộc:
Biến mà ta đang cố gắng dự đoán hoặc diễn giải.
biến độc lập:
Biến mà ta dùng để dự đoán một biến phụ thuộc, còn được gọi là biến giải thích.
hệ số xác định:
Độ đo mức phù hợp của một mô hình tuyến tính.
phép thử ngẫu nhiên có kiểm soát:
Cách thiết kế thí nghiệm theo đó chủ thể được ngẫu nhiên chia thành nhóm, và các nhóm khác nhau được điều trị theo cách riêng.
điều trị:
Sự thay đổi hoặc can thiệp áp dụng cho một nhóm trong phép thử có kiểm soát.
nhóm kiểm soát:
Nhóm trong phép thử có kiểm soát mà không được điều trị, hoặc được điều trị theo cách mà hiệu ứng của nó đã biết trước.
thí nghiệm tự nhiên:
Cách thiết kế thí nghiệm trong đó tận dụng ưu điểm của sự phân chia tự nhiên các chủ thể vào các nhóm theo hình thức ít nhất là gần như ngẫu nhiên.

  1. Còn gọi là bất đẳng thức Bu-nhia-cốp-xki. Xem http://wikipedia.org/wiki/Cauchy-Schwarz_inequality.
  2. Xem http://wikipedia.org/wiki/Simple_linear_regression.
  3. Xem Press và nnk., {Numerical Recipes in C}, Chương 15 tại http://www.nrbook.com/a/bookcpdf/c15-1.pdf.

9 phản hồi

Filed under Think Stats

9 responses to “Chương 9: Tương quan

  1. Chương này đã kết thúc nội dung cuốn sách “Think Stats: Xác suất thống kê dành cho người lập trình” (Think Stats: Probability and Statistics for Programmers) của Allen B. Downey. Việc dịch sang tiếng Việt cần được cải thiện nhiều. Một việc cần làm là dịch các mục từ Wikipedia được chỉ dẫn sang tiếng Việt, để bạn đọc có thêm tư liệu tham khảo. Hi vọng rằng các bạn có thể tự bổ sung kiến thức qua việc tự đọc tài liệu này. Nếu bạn sử dụng cuốn sách cho lớp học / nhóm học tập (phi lợi nhuận), xin vui lòng để lại phản hồi giới thiệu lớp học của bạn, tôi có thể giúp cung cấp một số tài liệu bổ trợ giúp bạn học tốt hơn.

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

  3. Khách

    Xin cảm ơn tác giả. Bài viết đọc rất dễ hiểu

    • Cám ơn bạn đã đọc bản dịch. Hiện nay sách gốc tiếng Anh đã có phiên bản thứ hai. Hi vọng trong ngày không xa tôi sẽ gửi tới bạn bản dịch được cập nhật.

  4. Bài viết rất dễ đọc, nhưng ko dễ hiểu 🙂

  5. Trần Vũ

    Bạn Chiến! Tôi thích phần trình bày của bạn. Nếu có thể bạn gửi cho tôi bản dịch mới nhé. Cám ơn bạn nhiều.

  6. Hong Quan Vu

    Cảm ơn anh đã tạo nên trang web có nhiều kiến thức và rất dễ hiểu, anh update nhiều và phát triển mạnh trang này anh nhé 🙂 em đã bookmark rồi, bài viết rất hay ạ!

Trả lờ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