Gần như mọi dự án khoa học dữ liệu đều liên quan đến việc nghiên cứu tương quan giữa các biến. Tương quan là tóm tắt thống kê về mối quan hệ giữa hai tập biến. Đây là phần cốt lõi của phân tích khám phá dữ liệu, và là khía cạnh quan trọng của nhiều kỹ thuật học máy nâng cao. Nếu bạn đang cân nhắc bước vào lĩnh vực khoa học dữ liệu, sớm muộn trong hành trình bạn cũng sẽ cần học về tương quan.
Trong hướng dẫn này, chúng tôi sẽ giải thích tương quan là gì và mức độ liên quan của nó khi thực hiện các dự án khoa học dữ liệu. Chúng tôi cũng xem xét các hệ số tương quan khác nhau dùng để đo lường độ mạnh và chiều của mối quan hệ giữa các biến. Chúng tôi sẽ dùng mã Python để đưa ra ví dụ thực tiễn về cách đo lường và trực quan hóa tương quan một cách đơn giản.
Tương quan là phân tích thống kê về mối quan hệ hoặc sự phụ thuộc giữa hai biến. Tương quan cho phép chúng ta nghiên cứu cả độ mạnh lẫn chiều của mối quan hệ giữa hai tập biến.
Nghiên cứu tương quan có thể rất hữu ích trong nhiều tác vụ khoa học dữ liệu. Thứ nhất, đây là thành phần then chốt trong phân tích khám phá dữ liệu; nghiên cứu ban đầu để xem dữ liệu trông như thế nào, tóm tắt các đặc trưng chính, và phát hiện khuôn mẫu cũng như bất thường.
Thứ hai, tương quan có nhiều ứng dụng trong thế giới thực. Chúng có thể giúp trả lời các câu hỏi như liệu có mối liên hệ giữa dân chủ và tăng trưởng kinh tế hay không, hoặc việc sử dụng ô tô có tương quan với mức độ ô nhiễm không khí hay không.
Cuối cùng, nghiên cứu tương quan là yếu tố then chốt trong lĩnh vực học máy. Ví dụ, một số thuật toán sẽ không hoạt động đúng nếu hai hay nhiều biến liên quan chặt chẽ với nhau, thường được gọi là đa cộng tuyến. Tương quan cũng là nền tảng của Phân tích Thành phần Chính, một kỹ thuật giảm chiều tuyến tính rất hữu ích trong các dự án học máy.
Có các loại tương quan khác nhau:
Tương quan dương: Hai biến được coi là tương quan dương khi giá trị của chúng biến động cùng chiều. Ví dụ, trong hình dưới đây, khi giá trị của X tăng, giá trị của Y cũng tăng với tốc độ không đổi:
Tương quan trung tính: Không có mối quan hệ trong sự thay đổi của hai biến X và Y. Trong trường hợp này, các giá trị hoàn toàn ngẫu nhiên và không cho thấy dấu hiệu tương quan nào, như trong hình sau:
Tương quan âm: Cuối cùng, các biến X và Y sẽ tương quan âm khi giá trị của chúng thay đổi ngược chiều nhau, tức là khi giá trị của X tăng, giá trị của Y giảm với tốc độ không đổi:
Vẽ biểu đồ dữ liệu là cách nhanh nhất và hiệu quả nhất để phát hiện loại tương quan giữa các biến. Cách điển hình để trực quan hóa sự phụ thuộc giữa hai biến là dùng biểu đồ phân tán (scatterplot). Đây là đồ thị trong đó trục x là giá trị của biến thứ nhất, và trục y là giá trị của biến thứ hai. Ba hình vừa rồi là các dạng biểu đồ phân tán. Hãy xem video hướng dẫn này để biết cách tạo biểu đồ phân tán trong Python.
Tuy nhiên, đôi khi chúng ta không chỉ cần trực quan hóa tương quan, mà còn cần đo lường độ mạnh của tương quan. Khi đó, các hệ số tương quan sẽ phát huy tác dụng.
Hệ số tương quan
Hệ số tương quan là tóm tắt thống kê dùng để đo lường độ mạnh và chiều mà theo đó hai biến có liên hệ với nhau.
Một ưu điểm của các hệ số tương quan là chúng ước lượng tương quan giữa hai biến theo cách chuẩn hóa, nghĩa là giá trị của hệ số luôn nằm trên cùng một thang đo, từ -1.0 đến 1.0.
Có một số hệ số tương quan. Việc chọn cái nào phụ thuộc vào hiểu biết của chúng ta về cấu trúc mối quan hệ giữa các biến. Tuy nhiên, các nhà khoa học dữ liệu thường sử dụng hệ số nổi tiếng nhất: hệ số tương quan Pearson.
Hệ số tương quan Pearson
Hệ số tương quan Pearson (r) là một điểm số đo lường độ mạnh của mối quan hệ tuyến tính giữa hai biến. Nó được tính bằng cách chia hiệp phương sai của các biến X và Y cho tích độ lệch chuẩn của từng biến, như trong công thức sau:
Hệ số này dựa trên hai giả định. Thứ nhất, nó giả định các biến tuân theo phân phối chuẩn hay Gaussian. Nếu dữ liệu không phân phối chuẩn, các hệ số khác có thể đáng tin cậy hơn.
Thứ hai, nó giả định có mối quan hệ tuyến tính giữa hai biến, tức là các thay đổi trong dữ liệu có thể được mô hình hóa bằng một hàm tuyến tính (tức giá trị của chúng tăng hoặc giảm đồng thời với tốc độ không đổi). Nếu mối quan hệ giữa hai biến gần với một đường thẳng, thì tương quan (tuyến tính) của chúng càng mạnh và trị tuyệt đối của hệ số tương quan Pearson càng cao. Ví dụ, trong hình tiếp theo, tất cả điểm dữ liệu có thể được mô hình hóa hoàn hảo bằng một đường thẳng, dẫn đến hệ số tương quan bằng 1.0.
Hệ số -1.0 cho thấy tương quan âm hoàn hảo, trong khi hệ số 1.0 cho thấy tương quan dương hoàn hảo. Ngược lại, hệ số 0.0 cho biết không có tương quan tuyến tính giữa các biến.
Diễn giải hệ số trở nên khó hơn khi giá trị của nó tiến gần về 0. Nhiều quy tắc ngón tay cái đã được đề xuất để diễn giải giá trị của hệ số. Một trong những quy tắc phổ biến do Dennis E. Hinkle và các đồng tác giả nêu trong cuốn Applied Statistics for the Behavioral Sciences:
Quy tắc ngón tay cái để diễn giải hệ số tương quan. Hinkle, Wiersma, & Jurs.
Cần nhấn mạnh rằng hệ số tương quan Pearson gần 0.0 chỉ cho thấy không có mối quan hệ tuyến tính giữa các biến. Nhưng vẫn có thể tồn tại mối quan hệ phi tuyến mạnh. Nếu mối quan hệ giữa hai biến là phi tuyến, tốc độ tăng hoặc giảm có thể thay đổi khi một biến thay đổi, tạo nên dạng đường cong trong dữ liệu. Xu hướng như vậy có thể được mô hình hóa tốt hơn bằng một hàm phi tuyến, như hàm bậc hai hoặc bậc ba.
Ví dụ, hình sau cho thấy mức độ hạnh phúc của người lao động thay đổi theo số giờ làm việc mỗi tuần. Ta thấy khi số giờ tăng, hạnh phúc cũng tăng, nhưng bắt đầu giảm sau khoảng 35 giờ. Mô hình tuyến tính (đường đỏ) không phù hợp để khớp dữ liệu. Thay vào đó, mô hình bậc hai (đường xanh), còn gọi là mô hình đa thức bậc 2, có vẻ phù hợp hơn nhiều với dạng cong của dữ liệu. Khi mối quan hệ là phi tuyến, tương quan thường đánh giá thấp độ mạnh của nó. Đây là trường hợp trong ví dụ của chúng ta, nơi hệ số bằng 0.127, nói lên rất ít về mối quan hệ phi tuyến giữa hạnh phúc và số giờ làm việc.
Các hệ số tương quan khác
Hạn chế lớn nhất của hệ số tương quan Pearson là giả định mối quan hệ tuyến tính giữa hai biến. Tuy nhiên, thường xuyên hơn, các biến lại liên hệ theo mối quan hệ phi tuyến. Bên cạnh đó, dữ liệu có thể không theo phân phối Gaussian. Để khắc phục, các nhà thống kê đã đề xuất các loại ước lượng khác, cụ thể là hệ số tương quan Spearman's rho và Kendall's tau.
Trong khi hệ số Pearson giả định quan hệ tuyến tính, các hệ số Spearman và Kendall chỉ giả định mối quan hệ đơn điệu. Trong mối quan hệ đơn điệu, các biến có xu hướng dịch chuyển cùng một chiều tương đối, nhưng không nhất thiết với tốc độ không đổi. Nói cách khác, mọi quan hệ tuyến tính đều là đơn điệu, nhưng không phải mọi quan hệ đơn điệu đều là tuyến tính.
Thay vì tính toán các hệ số bằng hiệp phương sai và độ lệch chuẩn của các biến, chúng dựa trên thứ hạng tương đối của các giá trị. Điểm đặc thù này khiến chúng trở thành các ước lượng vững với giá trị ngoại lai và phù hợp để xử lý một số dạng phi tuyến.
Tương tự hệ số Pearson, điểm số của các hệ số Spearman và Kendall nằm trong khoảng từ -1 đến 1 cho các biến tương quan âm hoàn hảo và dương hoàn hảo, tương ứng.
Tuy vậy, các nhà khoa học dữ liệu thường có thể tiếp tục sử dụng hệ số tương quan Pearson. Sức hấp dẫn của các ước lượng dựa trên thứ hạng chủ yếu nằm ở các bộ dữ liệu nhỏ và các kiểm định giả thuyết cụ thể.
Tính tương quan trong Python
Có nhiều gói Python có thể giúp chúng ta đo lường tương quan. Trong phần này, chúng ta sẽ tập trung vào các hàm tương quan có sẵn trong ba gói nổi tiếng: SciPy, NumPy và pandas.
Để thử các hàm, giả sử chúng ta muốn nghiên cứu mối quan hệ giữa kinh nghiệm làm việc (tính bằng năm) và mức lương (tính bằng đô la) trong một startup nhỏ nhưng thành công gồm 16 nhân viên.
experience =[1,3,4,5,5,6,7,10,11,12,15,20,25,28,30,35]
salary =[20000,30000,40000,45000,55000,60000,80000,100000,130000,150000,200000,230000,250000,300000,350000,400000]Được hỗ trợ bởi
Như ta thấy trong đồ thị tiếp theo, có một tương quan dương mạnh giữa hai biến, nghĩa là nhân viên có nhiều kinh nghiệm hơn có xu hướng nhận lương cao hơn.
SciPy là thư viện tuyệt vời để thực hiện các phép toán thống kê. Mô-đun scipy.stats bao gồm hàm pearsonr(x, y) để tính hệ số tương quan Pearson giữa hai mẫu dữ liệu.
import scipy.stats as stats
corr, _ = stats.pearsonr (experience, salary)
corr
0.9929845761480398Được hỗ trợ bởi
Chúng ta có thể tính hệ số Spearman và Kendall theo cách tương tự:
NumPy là gói phổ biến cung cấp bộ sưu tập phong phú các hàm toán học nâng cao, bao gồm np.corrcoef() trả về ma trận các hệ số tương quan Pearson:
import numpy as np
np.corrcoef(experience, salary)
array([[1.,0.99298458],[0.99298458,1.]])Được hỗ trợ bởi
Ma trận tương quan là bảng hiển thị các hệ số tương quan giữa các biến. Mỗi ô trong bảng thể hiện tương quan giữa hai biến. Đường chéo của ma trận bao gồm các hệ số giữa mỗi biến với chính nó, luôn bằng 1.0. Các giá trị còn lại trong ma trận biểu thị tương quan giữa kinh nghiệm và lương. Trong trường hợp này, vì chúng ta chỉ tính tương quan cho hai biến, nên các giá trị là như nhau.
Cuối cùng, chúng ta thường cần tính tương quan cho các biến được lưu trong DataFrame của pandas. Hãy tưởng tượng chúng ta có DataFrame với thông tin về nhân viên của startup:
Nếu muốn tính tương quan giữa hai cột, chúng ta có thể dùng phương thức .corr() của pandas như sau:
import pandas as pd
df['experience'].corr(df['salary'])0.9929845761480398Được hỗ trợ bởi
Phương thức .corr() có tham số "method", có thể dùng để tính cả ba hệ số tương quan. Mặc định, nó tính hệ số Pearson.
print(df['experience'].corr(df['salary'], method='spearman'))print(df['experience'].corr(df['salary'], method='kendall'))0.99926443535467910.9958246164193105Được hỗ trợ bởi
Nếu muốn khám phá tương quan giữa tất cả các cặp biến, chúng ta chỉ cần gọi trực tiếp phương thức .corr() trên DataFrame, kết quả là một ma trận tương quan với hệ số của mọi cặp biến:
Ma trận tương quan có thể rất lớn và khó diễn giải nếu DataFrame có nhiều cột. Để rút trích insight từ ma trận hiệu quả hơn, chúng ta có thể dùng heatmap; một kỹ thuật trực quan hóa dữ liệu trong đó mỗi giá trị được biểu diễn bằng màu sắc, theo cường độ trên một thang cho trước. Cách nhanh nhất để tạo heatmap là dùng hàm heatmap() có trong thư viện seaborn:
import seaborn as sns
sns.heatmap(df.corr(), vmin=-1, vmax=1,
annot=True,cmap="rocket_r")
plt.show()Được hỗ trợ bởi
Tương quan không hàm ý quan hệ nhân quả
Chúng tôi không thể kết thúc hướng dẫn này mà không nhắc đến một lưu ý quan trọng: tương quan không hàm ý quan hệ nhân quả.
Tương quan chỉ định lượng độ mạnh và chiều của mối quan hệ giữa hai biến. Có thể tồn tại tương quan mạnh giữa hai biến, nhưng điều đó không cho phép kết luận biến này gây ra biến kia. Khi các tương quan mạnh không mang tính nhân quả, chúng được gọi là tương quan ngụy tạo.
Có hai kịch bản có thể dẫn đến tương quan ngụy tạo:
Thứ nhất, có thể tồn tại một biến thứ ba, "gây nhiễu" đứng sau và gây ra cả hai biến. Hãy tưởng tượng có tương quan dương mạnh giữa việc tiêu thụ kem và số ca say nắng trong một quần thể. Ai đó có thể đi đến kết luận vô lý rằng ăn kem gây say nắng. Tuy nhiên, thực tế là cả hai biến đều phụ thuộc vào một biến thứ ba, rất có thể là nhiệt độ. Nhiệt độ càng cao, càng nhiều người muốn ăn kem, và cũng càng nhiều người có khả năng bị say nắng.
Một lý do thứ hai để thận trọng với tương quan là sự phụ thuộc giữa các biến đôi khi chỉ do ngẫu nhiên. Điều này xảy ra thường xuyên, nhưng khả năng cao hơn khi chúng ta làm việc với mẫu nhỏ.
Cuối cùng, một lý do khác để thận trọng với tương quan là thế giới chúng ta sống rất phức tạp. Tương quan mạnh hơn giữa hai biến có thể dễ dàng khiến ta kết luận rằng biến này gây ra biến kia. Niềm tin rằng một hiệu ứng chỉ có một nguyên nhân được gọi là đơn nhân, nhưng điều này hiếm khi đúng. Nhiều biến có thể đứng sau một hiệu ứng nhất định. Do đó, để xem xét tính nhân quả, trước tiên chúng ta cần giả định toàn bộ các yếu tố của hệ thống và đánh giá chúng không chỉ định lượng (tức bằng phương pháp thống kê) mà còn định tính.
Vì những lý do này, trước khi đưa ra bất kỳ kết luận nào về các mối quan hệ trong dữ liệu, điều quan trọng là tiến hành phân tích kỹ lưỡng và chi tiết hơn để xác định các tương quan ngụy tạo có thể có.
Kết luận
Chúng tôi hy vọng bạn thấy hữu ích. Tương quan là một chủ đề quan trọng mà mọi nhà khoa học dữ liệu tương lai nên học. Tại DataCamp, chúng tôi có rất nhiều khóa học thống kê đề cập đến tương quan, quan hệ nhân quả và các khái niệm thống kê then chốt khác, cả với Python và R.
Khi đã nắm vững kiến thức, chúng tôi khuyến nghị bạn thử DataLab, sổ tay dữ liệu hỗ trợ AI của DataCamp để viết mã và áp dụng những gì bạn đã học mà không cần cài đặt phức tạp.
Gần như mọi dự án khoa học dữ liệu đều liên quan đến việc nghiên cứu tương quan giữa các biến. Tương quan là tóm tắt thống kê về mối quan hệ giữa hai tập biến. Đây là phần cốt lõi của phân tích khám phá dữ liệu, và là khía cạnh quan trọng của nhiều kỹ thuật học máy nâng cao. Nếu bạn đang cân nhắc bước vào lĩnh vực khoa học dữ liệu, sớm muộn trong hành trình bạn cũng sẽ cần học về tương quan.
Trong hướng dẫn này, chúng tôi sẽ giải thích tương quan là gì và mức độ liên quan của nó khi thực hiện các dự án khoa học dữ liệu. Chúng tôi cũng xem xét các hệ số tương quan khác nhau dùng để đo lường độ mạnh và chiều của mối quan hệ giữa các biến. Chúng tôi sẽ dùng mã Python để đưa ra ví dụ thực tiễn về cách đo lường và trực quan hóa tương quan một cách đơn giản.
Tương quan là gì?
Tương quan là phân tích thống kê về mối quan hệ hoặc sự phụ thuộc giữa hai biến. Tương quan cho phép chúng ta nghiên cứu cả độ mạnh lẫn chiều của mối quan hệ giữa hai tập biến.
Nghiên cứu tương quan có thể rất hữu ích trong nhiều tác vụ khoa học dữ liệu. Thứ nhất, đây là thành phần then chốt trong phân tích khám phá dữ liệu; nghiên cứu ban đầu để xem dữ liệu trông như thế nào, tóm tắt các đặc trưng chính, và phát hiện khuôn mẫu cũng như bất thường.
Thứ hai, tương quan có nhiều ứng dụng trong thế giới thực. Chúng có thể giúp trả lời các câu hỏi như liệu có mối liên hệ giữa dân chủ và tăng trưởng kinh tế hay không, hoặc việc sử dụng ô tô có tương quan với mức độ ô nhiễm không khí hay không.
Cuối cùng, nghiên cứu tương quan là yếu tố then chốt trong lĩnh vực học máy. Ví dụ, một số thuật toán sẽ không hoạt động đúng nếu hai hay nhiều biến liên quan chặt chẽ với nhau, thường được gọi là đa cộng tuyến. Tương quan cũng là nền tảng của Phân tích Thành phần Chính, một kỹ thuật giảm chiều tuyến tính rất hữu ích trong các dự án học máy.
Có các loại tương quan khác nhau:
Vẽ biểu đồ dữ liệu là cách nhanh nhất và hiệu quả nhất để phát hiện loại tương quan giữa các biến. Cách điển hình để trực quan hóa sự phụ thuộc giữa hai biến là dùng biểu đồ phân tán (scatterplot). Đây là đồ thị trong đó trục x là giá trị của biến thứ nhất, và trục y là giá trị của biến thứ hai. Ba hình vừa rồi là các dạng biểu đồ phân tán. Hãy xem video hướng dẫn này để biết cách tạo biểu đồ phân tán trong Python.
Tuy nhiên, đôi khi chúng ta không chỉ cần trực quan hóa tương quan, mà còn cần đo lường độ mạnh của tương quan. Khi đó, các hệ số tương quan sẽ phát huy tác dụng.
Hệ số tương quan
Hệ số tương quan là tóm tắt thống kê dùng để đo lường độ mạnh và chiều mà theo đó hai biến có liên hệ với nhau.
Một ưu điểm của các hệ số tương quan là chúng ước lượng tương quan giữa hai biến theo cách chuẩn hóa, nghĩa là giá trị của hệ số luôn nằm trên cùng một thang đo, từ -1.0 đến 1.0.
Có một số hệ số tương quan. Việc chọn cái nào phụ thuộc vào hiểu biết của chúng ta về cấu trúc mối quan hệ giữa các biến. Tuy nhiên, các nhà khoa học dữ liệu thường sử dụng hệ số nổi tiếng nhất: hệ số tương quan Pearson.
Hệ số tương quan Pearson
Hệ số tương quan Pearson (r) là một điểm số đo lường độ mạnh của mối quan hệ tuyến tính giữa hai biến. Nó được tính bằng cách chia hiệp phương sai của các biến X và Y cho tích độ lệch chuẩn của từng biến, như trong công thức sau:
Hệ số này dựa trên hai giả định. Thứ nhất, nó giả định các biến tuân theo phân phối chuẩn hay Gaussian. Nếu dữ liệu không phân phối chuẩn, các hệ số khác có thể đáng tin cậy hơn.
Thứ hai, nó giả định có mối quan hệ tuyến tính giữa hai biến, tức là các thay đổi trong dữ liệu có thể được mô hình hóa bằng một hàm tuyến tính (tức giá trị của chúng tăng hoặc giảm đồng thời với tốc độ không đổi). Nếu mối quan hệ giữa hai biến gần với một đường thẳng, thì tương quan (tuyến tính) của chúng càng mạnh và trị tuyệt đối của hệ số tương quan Pearson càng cao. Ví dụ, trong hình tiếp theo, tất cả điểm dữ liệu có thể được mô hình hóa hoàn hảo bằng một đường thẳng, dẫn đến hệ số tương quan bằng 1.0.
Hệ số -1.0 cho thấy tương quan âm hoàn hảo, trong khi hệ số 1.0 cho thấy tương quan dương hoàn hảo. Ngược lại, hệ số 0.0 cho biết không có tương quan tuyến tính giữa các biến.
Diễn giải hệ số trở nên khó hơn khi giá trị của nó tiến gần về 0. Nhiều quy tắc ngón tay cái đã được đề xuất để diễn giải giá trị của hệ số. Một trong những quy tắc phổ biến do Dennis E. Hinkle và các đồng tác giả nêu trong cuốn Applied Statistics for the Behavioral Sciences:
Cần nhấn mạnh rằng hệ số tương quan Pearson gần 0.0 chỉ cho thấy không có mối quan hệ tuyến tính giữa các biến. Nhưng vẫn có thể tồn tại mối quan hệ phi tuyến mạnh. Nếu mối quan hệ giữa hai biến là phi tuyến, tốc độ tăng hoặc giảm có thể thay đổi khi một biến thay đổi, tạo nên dạng đường cong trong dữ liệu. Xu hướng như vậy có thể được mô hình hóa tốt hơn bằng một hàm phi tuyến, như hàm bậc hai hoặc bậc ba.
Ví dụ, hình sau cho thấy mức độ hạnh phúc của người lao động thay đổi theo số giờ làm việc mỗi tuần. Ta thấy khi số giờ tăng, hạnh phúc cũng tăng, nhưng bắt đầu giảm sau khoảng 35 giờ. Mô hình tuyến tính (đường đỏ) không phù hợp để khớp dữ liệu. Thay vào đó, mô hình bậc hai (đường xanh), còn gọi là mô hình đa thức bậc 2, có vẻ phù hợp hơn nhiều với dạng cong của dữ liệu. Khi mối quan hệ là phi tuyến, tương quan thường đánh giá thấp độ mạnh của nó. Đây là trường hợp trong ví dụ của chúng ta, nơi hệ số bằng 0.127, nói lên rất ít về mối quan hệ phi tuyến giữa hạnh phúc và số giờ làm việc.
Các hệ số tương quan khác
Hạn chế lớn nhất của hệ số tương quan Pearson là giả định mối quan hệ tuyến tính giữa hai biến. Tuy nhiên, thường xuyên hơn, các biến lại liên hệ theo mối quan hệ phi tuyến. Bên cạnh đó, dữ liệu có thể không theo phân phối Gaussian. Để khắc phục, các nhà thống kê đã đề xuất các loại ước lượng khác, cụ thể là hệ số tương quan Spearman's rho và Kendall's tau.
Trong khi hệ số Pearson giả định quan hệ tuyến tính, các hệ số Spearman và Kendall chỉ giả định mối quan hệ đơn điệu. Trong mối quan hệ đơn điệu, các biến có xu hướng dịch chuyển cùng một chiều tương đối, nhưng không nhất thiết với tốc độ không đổi. Nói cách khác, mọi quan hệ tuyến tính đều là đơn điệu, nhưng không phải mọi quan hệ đơn điệu đều là tuyến tính.
Thay vì tính toán các hệ số bằng hiệp phương sai và độ lệch chuẩn của các biến, chúng dựa trên thứ hạng tương đối của các giá trị. Điểm đặc thù này khiến chúng trở thành các ước lượng vững với giá trị ngoại lai và phù hợp để xử lý một số dạng phi tuyến.
Tương tự hệ số Pearson, điểm số của các hệ số Spearman và Kendall nằm trong khoảng từ -1 đến 1 cho các biến tương quan âm hoàn hảo và dương hoàn hảo, tương ứng.
Tuy vậy, các nhà khoa học dữ liệu thường có thể tiếp tục sử dụng hệ số tương quan Pearson. Sức hấp dẫn của các ước lượng dựa trên thứ hạng chủ yếu nằm ở các bộ dữ liệu nhỏ và các kiểm định giả thuyết cụ thể.
Tính tương quan trong Python
Có nhiều gói Python có thể giúp chúng ta đo lường tương quan. Trong phần này, chúng ta sẽ tập trung vào các hàm tương quan có sẵn trong ba gói nổi tiếng: SciPy, NumPy và pandas.
Để thử các hàm, giả sử chúng ta muốn nghiên cứu mối quan hệ giữa kinh nghiệm làm việc (tính bằng năm) và mức lương (tính bằng đô la) trong một startup nhỏ nhưng thành công gồm 16 nhân viên.
Như ta thấy trong đồ thị tiếp theo, có một tương quan dương mạnh giữa hai biến, nghĩa là nhân viên có nhiều kinh nghiệm hơn có xu hướng nhận lương cao hơn.
SciPy là thư viện tuyệt vời để thực hiện các phép toán thống kê. Mô-đun scipy.stats bao gồm hàm pearsonr(x, y) để tính hệ số tương quan Pearson giữa hai mẫu dữ liệu.
Chúng ta có thể tính hệ số Spearman và Kendall theo cách tương tự:
NumPy là gói phổ biến cung cấp bộ sưu tập phong phú các hàm toán học nâng cao, bao gồm np.corrcoef() trả về ma trận các hệ số tương quan Pearson:
Ma trận tương quan là bảng hiển thị các hệ số tương quan giữa các biến. Mỗi ô trong bảng thể hiện tương quan giữa hai biến. Đường chéo của ma trận bao gồm các hệ số giữa mỗi biến với chính nó, luôn bằng 1.0. Các giá trị còn lại trong ma trận biểu thị tương quan giữa kinh nghiệm và lương. Trong trường hợp này, vì chúng ta chỉ tính tương quan cho hai biến, nên các giá trị là như nhau.
Cuối cùng, chúng ta thường cần tính tương quan cho các biến được lưu trong DataFrame của pandas. Hãy tưởng tượng chúng ta có DataFrame với thông tin về nhân viên của startup:
Nếu muốn tính tương quan giữa hai cột, chúng ta có thể dùng phương thức .corr() của pandas như sau:
Phương thức .corr() có tham số "method", có thể dùng để tính cả ba hệ số tương quan. Mặc định, nó tính hệ số Pearson.
Nếu muốn khám phá tương quan giữa tất cả các cặp biến, chúng ta chỉ cần gọi trực tiếp phương thức .corr() trên DataFrame, kết quả là một ma trận tương quan với hệ số của mọi cặp biến:
Ma trận tương quan có thể rất lớn và khó diễn giải nếu DataFrame có nhiều cột. Để rút trích insight từ ma trận hiệu quả hơn, chúng ta có thể dùng heatmap; một kỹ thuật trực quan hóa dữ liệu trong đó mỗi giá trị được biểu diễn bằng màu sắc, theo cường độ trên một thang cho trước. Cách nhanh nhất để tạo heatmap là dùng hàm heatmap() có trong thư viện seaborn:
Tương quan không hàm ý quan hệ nhân quả
Chúng tôi không thể kết thúc hướng dẫn này mà không nhắc đến một lưu ý quan trọng: tương quan không hàm ý quan hệ nhân quả.
Tương quan chỉ định lượng độ mạnh và chiều của mối quan hệ giữa hai biến. Có thể tồn tại tương quan mạnh giữa hai biến, nhưng điều đó không cho phép kết luận biến này gây ra biến kia. Khi các tương quan mạnh không mang tính nhân quả, chúng được gọi là tương quan ngụy tạo.
Có hai kịch bản có thể dẫn đến tương quan ngụy tạo:
Cuối cùng, một lý do khác để thận trọng với tương quan là thế giới chúng ta sống rất phức tạp. Tương quan mạnh hơn giữa hai biến có thể dễ dàng khiến ta kết luận rằng biến này gây ra biến kia. Niềm tin rằng một hiệu ứng chỉ có một nguyên nhân được gọi là đơn nhân, nhưng điều này hiếm khi đúng. Nhiều biến có thể đứng sau một hiệu ứng nhất định. Do đó, để xem xét tính nhân quả, trước tiên chúng ta cần giả định toàn bộ các yếu tố của hệ thống và đánh giá chúng không chỉ định lượng (tức bằng phương pháp thống kê) mà còn định tính.
Vì những lý do này, trước khi đưa ra bất kỳ kết luận nào về các mối quan hệ trong dữ liệu, điều quan trọng là tiến hành phân tích kỹ lưỡng và chi tiết hơn để xác định các tương quan ngụy tạo có thể có.
Kết luận
Chúng tôi hy vọng bạn thấy hữu ích. Tương quan là một chủ đề quan trọng mà mọi nhà khoa học dữ liệu tương lai nên học. Tại DataCamp, chúng tôi có rất nhiều khóa học thống kê đề cập đến tương quan, quan hệ nhân quả và các khái niệm thống kê then chốt khác, cả với Python và R.
Khi đã nắm vững kiến thức, chúng tôi khuyến nghị bạn thử DataLab, sổ tay dữ liệu hỗ trợ AI của DataCamp để viết mã và áp dụng những gì bạn đã học mà không cần cài đặt phức tạp.