Tương quan Spearman Python
Hiểu mối quan hệ giữa hai hoặc nhiều biến là cốt lõi của nhiều khía cạnh của phân tích dữ liệu hoặc phân tích thống kê. Hệ số tương quan hoặc tương quan nắm bắt mối liên hệ giữa hai biến (trong trường hợp đơn giản nhất), bằng số Show Một trong những thước đo tương quan thường được sử dụng là hệ số tương quan Pearson. Một thước đo tương quan thường được sử dụng khác là hệ số tương quan Spearman Trong bài đăng này, trước tiên chúng ta sẽ xem các ví dụ về tính toán tương quan Pearson và Spearman trong Python bằng Pandas, Scikit Learn và NumPy Chúng tôi sẽ sử dụng dữ liệu gapminder và tính toán mối tương quan giữa gdpPercap và giá trị tuổi thọ từ nhiều quốc gia theo thời gian. Trong trường hợp này, chúng tôi hy vọng rằng tuổi thọ sẽ tăng lên khi GDP bình quân đầu người của đất nước tăng lên Hãy để chúng tôi tìm ra cách tính tương quan Pearson và spearman trong Python. Trước tiên chúng ta hãy tải các gói cần thiết import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline Hãy để chúng tôi tải dữ liệu gapminder dưới dạng khung dữ liệu Pandas data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.997 Tương quan PearsonTương quan Pearson định lượng mối quan hệ tuyến tính giữa hai biến. Hệ số tương quan Pearson có thể nằm trong khoảng từ -1 đến +1, giống như các biện pháp tương quan khác. Tương quan Pearson dương có nghĩa là giá trị của một biến tăng theo các biến khác. Và hệ số Pearson âm có nghĩa là một biến giảm khi biến khác giảm. Các hệ số tương quan -1 hoặc +1 có nghĩa là mối quan hệ chính xác là tuyến tính Tương quan Pearson với PandasPandas cung cấp hàm corr() mà chúng ta có thể sử dụng nó với chuỗi Pandas như hình bên dưới. Chúng ta có thể thấy rằng gdpPercap và lifeExp có mối tương quan tích cực cho thấy sự gia tăng của gdpPercap làm tăng tuổi thọ trên tất cả gapminder.gdpPercap.corr(gapminder.lifeExp, method="pearson") 0.5837062198659948 Tương quan Pearson với NumPyChúng ta cũng có thể sử dụng NumPy để tính hệ số tương quan Pearson. Hàm corrcoef() của NumPy có thể nhận nhiều biến dưới dạng mảng 2D NumPy và trả về ma trận tương quan np.corrcoef(gapminder.gdpPercap, gapminder.lifeExp) Trong trường hợp đơn giản nhất với hai biến, nó trả về ma trận 2×2 với các giá trị tương quan Pearson array([[1. , 0.58370622], [0.58370622, 1. ]]) Tương quan Pearson với SciPyChúng ta cũng có thể tính toán hệ số tương quan Pearson bằng cách sử dụng mô-đun thống kê của SciPy from scipy import stats gdpPercap = gapminder.gdpPercap.values life_exp = gapminder.lifeExp.values Mô-đun thống kê SciPy có một hàm gọi làpeasonr() có thể lấy hai mảng NumPy và trả về một bộ chứa hệ số tương quan Pearson và tầm quan trọng của mối tương quan dưới dạng giá trị p stats.pearsonr(gdpPercap,life_exp) Phần tử đầu tiên của bộ dữ liệu là tương quan Pearson và phần tử thứ hai là giá trị p (0.5837062198659948, 3.565724241051659e-156) tương quan giáoTương quan Pearson giả định rằng dữ liệu chúng ta đang so sánh được phân phối bình thường. Khi giả định đó không đúng, giá trị tương quan đang phản ánh mối liên hệ thực sự. Tương quan Spearman không giả định rằng dữ liệu đến từ một phân phối cụ thể, do đó, đây là phép đo tương quan phi tham số. Tương quan Spearman còn được gọi là tương quan xếp hạng của Spearman vì nó tính toán hệ số tương quan trên các giá trị xếp hạng của dữ liệu Mối tương quan của Spearman với PandasChúng ta có thể sử dụng hàm corr() với tham số method=”spearman” để tính toán tương quan của spearman bằng cách sử dụng Pandas gapminder.gdpPercap.corr(gapminder.lifeExp, method="spearman")____9 data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.9970 Tương quan Spearman với NumPyNumPy không có chức năng cụ thể để tính tương quan Spearman. Tuy nhiên, chúng ta có thể sử dụng định nghĩa tương quan Spearman, đó là tương quan giá trị xếp hạng của các biến. Về cơ bản, chúng tôi tính toán thứ hạng của hai biến và sử dụng thứ hạng với hàm tương quan Pearson có sẵn trong NumPy data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.9971 data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.9972 data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.9973 Như chúng ta đã thấy trước đây, điều này trả về một ma trận tương quan cho tất cả các biến. Và lưu ý kết quả tương quan Spearman từ NumPy khớp với athat từ Pandas data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.9974 Mối tương quan giữa Spearman với SciPySử dụng SciPy, chúng ta có thể tính tương quan Spearman bằng cách sử dụng hàm spearmanr() và chúng ta sẽ nhận được kết quả tương tự như trên data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.9975 Hiểu sự khác biệt giữa tương quan Pearson và SpearmanĐiều đầu tiên nổi bật khi so sánh các hệ số tương quan giữa gdpPercap và lifeExp được tính toán bởi các hệ số tương quan Pearson và Spearman là sự khác biệt lớn giữa chúng. Tại sao chúng khác nhau? Như đã đề cập trước đây, tương quan Pearson giả định dữ liệu được phân phối bình thường. Tuy nhiên, Spearman không đưa ra bất kỳ giả định nào về việc phân phối dữ liệu. Đó là lý do chính cho sự khác biệt Hãy để chúng tôi kiểm tra xem các biến có được phân phối bình thường không. Chúng ta có thể hình dung các bản phân phối bằng biểu đồ. Hãy để chúng tôi lập biểu đồ giá trị tuổi thọ từ dữ liệu gapminder data_url = 'http://bit.ly/2cLzoxH' # read data from url as pandas dataframe gapminder = pd.read_csv(data_url) # let us select two relevant columns gapminder = gapminder[['gdpPercap', 'lifeExp']] print(gapminder.head(3)) gdpPercap lifeExp 0 779.445314 28.801 1 820.853030 30.332 2 853.100710 31.9976 Đây là phân phối của tuổi thọ và chúng ta có thể thấy rõ rằng nó không phải là phân phối bình thường. Không được hiển thị ở đây, nhưng phân phối của gdPercap không được phân phối bình thường. Do đó, giả định hệ số tương quan Pearson rõ ràng bị vi phạm và có thể giải thích sự khác biệt mà chúng ta thấy Phân phối các giá trị Tuổi thọ từ dữ liệu gapminderNgoài ra, tương quan Pearson nắm bắt được sức mạnh của mối quan hệ tuyến tính giữa hai biến. Tuy nhiên, tương quan xếp hạng Spearman cũng có thể nắm bắt được mối liên hệ phi tuyến tính. Nếu chúng ta nhìn vào biểu đồ phân tán của mối quan hệ giữa gdpPercap và lifeExp, chúng ta có thể thấy rằng mối quan hệ này không phải là tuyến tính. Và điều này cũng có thể giải thích sự khác biệt Sự khác biệt giữa tương quan Pearson và Spearman là gì?Tương quan Pearson. Tương quan Pearson đánh giá mối quan hệ tuyến tính giữa hai biến liên tục. Tương quan giáo sĩ. Tương quan Spearman đánh giá mối quan hệ đơn điệu . Hệ số tương quan Spearman dựa trên các giá trị được xếp hạng cho từng biến thay vì dữ liệu thô.
Tương quan Spearman được sử dụng để làm gì?Tương quan thứ hạng giáo sĩ. Tương quan xếp hạng Spearman là một phép thử phi tham số được sử dụng để đo lường mức độ liên kết giữa hai biến .
Tương quan được tính bằng Python như thế nào?Hệ số Tương quan Pearson có thể được tính bằng Python bằng cách sử dụng phương thức corrcoef() từ Numpy . Đầu vào cho chức năng này thường là một ma trận, giả sử có kích thước mxn , trong đó. Mỗi cột đại diện cho các giá trị của một biến ngẫu nhiên. Mỗi hàng đại diện cho một mẫu duy nhất của n biến ngẫu nhiên.
Tương quan Spearman là r hay r2?Hệ số tương quan, r, dao động từ -1 đến +1. Hệ số tương quan Spearman không tham số, viết tắt là rs, có cùng phạm vi. Giá trị sau này đôi khi được biểu thị bằng chữ Hy Lạp ρ (rho).
. Hệ số tương quan |