Làm thế nào để bạn tìm thấy hiệp phương sai của một ma trận trong python?

Xét ma trận gồm 5 quan sát, mỗi quan sát gồm 3 biến, $x_0$, $x_1$ và $x_2$ có giá trị quan sát được giữ trong ba hàng của mảng

In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]
7

X = np.array[[ [0.1, 0.3, 0.4, 0.8, 0.9],
               [3.2, 2.4, 2.4, 0.1, 5.5],
               [10., 8.2, 4.3, 2.6, 0.9]
             ]]

Ma trận hiệp phương sai là một mảng giá trị $3 \times 3$,

In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]

Các phần tử đường chéo, $C_{ii}$ là phương sai trong các biến $x_i$ giả sử $N-1$ bậc tự do

In [x]: print[np.var[X, axis=1, ddof=1]]
[  0.115   3.757  14.525]

Mặc dù độ lớn của các phần tử ma trận hiệp phương sai không phải lúc nào cũng dễ diễn giải [vì nó phụ thuộc vào độ lớn của các quan sát riêng lẻ có thể rất khác nhau đối với các biến khác nhau], nhưng rõ ràng là có sự tương quan nghịch mạnh giữa $x_0$ . 2325$. khi cái này tăng thì cái kia giảm] và không có mối tương quan chặt chẽ giữa $x_0$ và $x_1$ [$C_{01}=0. 0575$. $x_0$ và $x_1$ không có xu hướng mạnh cùng nhau]

Có chính xác 1 sự khác biệt giữa

[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
0 và
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
1 đó là bước thiên vị. Với
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
2 thì
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
3 chia cho
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
4 [
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
5], trong khi với
In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]
8 thì
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
3 chia cho
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
8 [
[[2.66666667 0.66666667]
 [0.66666667 0.66666667]]
9]. Xem mã nguồn để biết thêm thông tin

Ma trận phương sai-hiệp phương sai là một ma trận vuông [có cùng số hàng và số cột] đưa ra hiệp phương sai giữa từng cặp phần tử có sẵn trong dữ liệu

Hiệp phương sai đo lường mức độ mà các biến di chuyển theo cùng một hướng

Trong ma trận phương sai- hiệp phương sai, phương sai của các biến xuất hiện trên đường chéo và hiệp phương sai của các biến đều là các phần tử khác của ma trận

Để tiếp tục làm theo hướng dẫn này, chúng ta sẽ cần thư viện Python sau. gấu trúc

Nếu bạn chưa cài đặt chúng, vui lòng mở “Command Prompt” [trên Windows] và cài đặt chúng bằng mã sau

In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]
2

Sách tôi giới thiệu

  • Khóa học về sự cố Python
  • Tự động hóa những thứ nhàm chán với Python
  • Ngoài những thứ cơ bản với Python
  • Trăn nghiêm trọng

Giải thích ma trận phương sai-hiệp phương sai

Một ma trận hiệp phương sai là

  • Đối xứng
    Ma trận vuông bằng phép dời vị của nó. \[ A = A^T \].
  • Tích cực bán xác định
  • Với đường chéo chính chứa phương sai [hiệp phương sai của chính các biến]

$$
cov_{x,y,z} = \left[ \begin{array}{ccc}
cov_{x,x
cov_{y,x} & cov_{y,y} & cov_{y,z} \\
cov_{z,x} & cov_{z,y} & cov_{z,z}
\end{array} \right]
= \left[ \begin{array}{ccc}
\sigma^2_{x} & \sigma_{xy} & \sigma_{xz} \\
\sigma_{yx} & \sigma^2_{y} & \sigma_{yz} \\
\sigma_{zx} & \sigma_{zy} & \sigma^2_{z}
\end{array} \right]
$$

trong đó mỗi hiệp phương sai có thể được tính theo công thức sau [thay thế các giá trị x, y, z]

$$
cov_{x,y} = E[[X – E[X]][Y – E[Y]]] = \frac{\sum[x_i
$$

Ví dụ về ma trận phương sai-hiệp phương sai

Trước tiên, hãy xem xét một số dữ liệu mẫu để làm việc với

TuổiKinh nghiệmLương252200032630003793500

Ngoài ra, bảng trên có thể được biểu diễn dưới dạng ma trận

$$A = \begin{bmatrix} 25 & 2 & 2000 \\ 32 & 6 & 3000 \\ 37 & 9 & 3500 \end{bmatrix}$$

Khi đó ma trận hiệp phương sai của \[A\] sẽ như sau

$$
cov_{a,e,s} = \left[ \begin{array}{ccc}
cov_{a,a
cov_{e,a} & cov_{e,e} & cov_{e,s} \\
cov_{s,a} & cov_{s,e} & cov_{s,s}
\end{array} \right]
$$

trong đó \[a\], \[e\], \[s\] lần lượt là Tuổi, Kinh nghiệm và Mức lương

Cuối cùng, sử dụng công thức hiệp phương sai

$$
cov_{x,y} = E[[X – E[X]][Y – E[Y]]] = \frac{\sum[x_i
$$

chúng ta có thể tính toán hiệp phương sai giữa mỗi cặp và điền vào ma trận hiệp phương sai

\[ cov_{a,a} = \frac{\sum[Age_i – \bar{Age}][Age_i – \bar{Age}]}{N-1} = \\ = \frac{[25-31. 33][25-31. 33] + [32-31. 33][32-31. 33] + [37-31. 33][37-31. 33]}{3-1} = \\ = \frac{40. 0689 + 0. 4489 + 32. 1489}{2} \xấp xỉ 36. 33 \]\[ cov_{a,e} = cov_{e,a} = \frac{\sum[Age_i – \bar{Age}][Experience_i – \bar{Experience}]}{N-1} . 33][2-5. 66] + [32-31. 33][6-5. 66] + [37-31. 33][9-5. 66]}{3-1} = \\ = \frac{23. 1678 + 0. 2278 + 18. 9378}{2} \xấp xỉ 21. 17 \]
= \frac{[25-31.33][2-5.66] + [32-31.33][6-5.66] + [37-31.33][9-5.66]}{3-1} = \\ = \frac{23.1678 + 0.2278 + 18.9378}{2} \approx 21.17 \]\[ cov_{a,s} = cov_{s,a} = \frac{\sum[Age_i – \bar{Age}][Salary_i – \bar{Salary}]}{N-1} . 33][2.000-2.833. 33] + [32-31. 33][3.000-2.833. 33] + [37-31. 33][3,500-2,833. 33]}{3-1} = \\ = \frac{5,274. 9789 + 111. 6689 + 3,780. 0189}{2} \xấp xỉ 4,583. 33 \]
= \frac{[25-31.33][2,000-2,833.33] + [32-31.33][3,000-2,833.33] + [37-31.33][3,500-2,833.33]}{3-1} = \\ = \frac{5,274.9789 + 111.6689 + 3,780.0189}{2} \approx 4,583.33 \]\[ cov_{e,e} = \frac{\sum[Experience_i – \bar{Experience}][Experience_i – \bar{Experience}]}{N-1} = \\
= \frac{[2-5.67][2-5.67] + [6-5.67][6-5.67] + [9-5.67][9-5.67]}{3-1} = \\ = \frac{13.4689 + 0.1089 + 11.0889}{2} \approx 12.33 \]\[ cov_{e,s} = cov_{s,e} = \frac{\sum[Kinh nghiệm_i – \bar{Kinh nghiệm}][Salary_i – \bar{Salary}]}{N-1} . 67][2.000-2.833. 33] + [6-5. 67][3.000-2.833. 33] + [9-5. 67][3,500-2,833. 33]}{3-1} = \\ = \frac{3,058. 3211 + 55. 0011 + 2,220. 0111}{2} \xấp xỉ 2,666. 67 \]
= \frac{[2-5.67][2,000-2,833.33] + [6-5.67][3,000-2,833.33] + [9-5.67][3,500-2,833.33]}{3-1} = \\ = \frac{3,058.3211 + 55.0011 + 2,220.0111}{2} \approx 2,666.67 \]\[ cov_{s,s} = \frac{\sum[Salary_i – \bar{Salary}][Salary_i – \bar{Salary}]}{N-1} = \\
= \frac{[2,000-2,833.33][2,000-2,833.33] + [3,000-2,833.33][3,000-2,833.33] + [3,500-2,833.33][3,500-2,833.33]}{3-1} = \\ = \frac{694,438.8889 + 27,778.8889 + 444,448.889}{2} \approx 583,333.33 \]

Sử dụng các giá trị hiệp phương sai được tính toán, giờ đây chúng ta có thể điền vào ma trận hiệp phương sai

$$
cov_{a,e,s} = \left[ \begin{array}{ccc}
36. 33 & 21. 17 & 4,583. 33 \\
21. 17 & 12. 33 & 2,666. 67 \\
4,583. 33 & 2,666. 67 & 583,333. 33
\end{array} \right]
$$

Tạo một DataFrame mẫu

Hãy tạo một Khung dữ liệu Pandas mẫu với ba biến. Tuổi, Kinh nghiệm, Mức lương với một vài quan sát cho mỗi

In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]
3

Và chúng tôi nhận được

In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]
4

Tính toán ma trận phương sai hiệp phương sai bằng Python

Sử dụng. cov[] của Pandas DataFrame, chúng tôi có thể tính toán ma trận hiệp phương sai bằng Python

In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]
5

Và chúng tôi nhận được

In [x]: print[ np.cov[X] ]
[[  0.115 ,   0.0575,  -1.2325],
 [  0.0575,   3.757 ,  -0.8775],
 [ -1.2325,  -0.8775,  14.525 ]]
6

Sự kết luận

Trong bài viết này, chúng ta đã thảo luận về cách tính ma trận phương sai hiệp phương sai bằng Python

Vui lòng để lại nhận xét bên dưới nếu bạn có bất kỳ câu hỏi nào hoặc có đề xuất cho một số chỉnh sửa và xem thêm các bài viết Thống kê của tôi

Chủ Đề