Korelasi antara dua time series python

Koefisien korelasi mengukur hubungan antara variabel atau fitur dari kumpulan data. Statistik ini sangat penting untuk sains dan teknologi, dan Python memiliki alat hebat yang dapat Anda gunakan untuk menghitungnya. Metode korelasi SciPy, NumPy, dan Panda cepat, komprehensif, dan terdokumentasi dengan baik

Dalam tutorial ini, Anda akan belajar

  • Apa itu koefisien korelasi Pearson, Spearman, dan Kendall
  • Cara menggunakan fungsi korelasi SciPy, NumPy, dan Pandas
  • Cara memvisualisasikan data, garis regresi, dan matriks korelasi dengan Matplotlib

Anda akan mulai dengan penjelasan tentang korelasi, kemudian melihat tiga contoh pengantar singkat, dan akhirnya mempelajari detail korelasi NumPy, SciPy, dan Pandas

Bonus Gratis. yang mengarahkan Anda ke tutorial, video, dan buku terbaik untuk meningkatkan keterampilan NumPy Anda

Korelasi

Statistik dan ilmu data sering mengkhawatirkan hubungan antara dua atau lebih variabel (atau fitur) dari kumpulan data. Setiap titik data dalam kumpulan data adalah observasi, dan fiturnya adalah properti atau atribut dari observasi tersebut

Setiap kumpulan data yang Anda gunakan menggunakan variabel dan pengamatan. Misalnya, Anda mungkin tertarik untuk memahami yang berikut ini

  • Bagaimana tinggi badan pemain bola basket berkorelasi dengan akurasi tembakan mereka
  • Apakah ada hubungan antara pengalaman kerja karyawan dan gaji
  • Ketergantungan matematis apa yang ada antara kepadatan populasi dan produk domestik bruto dari berbagai negara

Pada contoh di atas, tinggi badan, ketepatan menembak, pengalaman bertahun-tahun, gaji, kepadatan penduduk, dan produk domestik bruto adalah fitur atau variabelnya. Data yang terkait dengan setiap pemain, karyawan, dan setiap negara adalah hasil observasi

Ketika data direpresentasikan dalam bentuk tabel, baris dari tabel tersebut biasanya adalah observasi, sedangkan kolom adalah fiturnya. Lihatlah tabel karyawan ini

NamaTahun PengalamanGaji TahunanAnn30120,000Rob21105,000Tom1990,000Ivy1082,000

Dalam tabel ini, setiap baris mewakili satu observasi, atau data tentang satu karyawan (Ann, Rob, Tom, atau Ivy). Setiap kolom menampilkan satu properti atau fitur (nama, pengalaman, atau gaji) untuk semua karyawan

Jika Anda menganalisis dua fitur dari kumpulan data, Anda akan menemukan beberapa jenis korelasi antara kedua fitur tersebut. Pertimbangkan angka-angka berikut

Korelasi antara dua time series python

Masing-masing plot ini menunjukkan salah satu dari tiga bentuk korelasi yang berbeda

  1. Korelasi negatif (titik merah). Dalam plot di sebelah kiri, nilai y cenderung menurun saat nilai x meningkat. Ini menunjukkan korelasi negatif yang kuat, yang terjadi ketika nilai besar dari satu fitur sesuai dengan nilai kecil fitur lainnya, dan sebaliknya

  2. Lemah atau tidak ada korelasi (titik hijau). Plot di tengah tidak menunjukkan tren yang jelas. Ini adalah bentuk korelasi lemah, yang terjadi ketika hubungan antara dua ciri tidak jelas atau hampir tidak dapat diamati

  3. Korelasi positif (titik biru). Dalam plot di sebelah kanan, nilai y cenderung meningkat seiring dengan peningkatan nilai x. Ini menggambarkan korelasi positif yang kuat, yang terjadi ketika nilai besar dari satu fitur sesuai dengan nilai besar fitur lainnya, dan sebaliknya

Gambar berikutnya mewakili data dari tabel karyawan di atas

Korelasi antara dua time series python

Korelasi antara pengalaman dan gaji adalah positif karena pengalaman yang lebih tinggi sesuai dengan gaji yang lebih besar dan sebaliknya

Catatan. Saat Anda menganalisis korelasi, Anda harus selalu ingat bahwa korelasi tidak menunjukkan sebab-akibat. Ini mengukur kekuatan hubungan antara fitur-fitur dari kumpulan data. Terkadang, asosiasi tersebut disebabkan oleh faktor yang sama pada beberapa fitur yang menarik

Korelasi terkait erat dengan kuantitas statistik lainnya seperti rata-rata, standar deviasi, varians, dan kovarians. Jika Anda ingin mempelajari lebih lanjut tentang kuantitas ini dan cara menghitungnya dengan Python, lihat Statistik Deskriptif dengan Python

Ada beberapa statistik yang dapat Anda gunakan untuk menghitung korelasi. Dalam tutorial ini, Anda akan belajar tentang tiga koefisien korelasi

  • r Pearson
  • Spearman's rho
  • Tau Kendall

Koefisien Pearson mengukur korelasi linier, sedangkan koefisien Spearman dan Kendall membandingkan peringkat data. Ada beberapa fungsi dan metode korelasi NumPy, SciPy, dan Pandas yang dapat Anda gunakan untuk menghitung koefisien ini. Anda juga dapat menggunakan Matplotlib untuk mengilustrasikan hasilnya dengan mudah

Hilangkan iklan

Contoh. Perhitungan Korelasi NumPy

NumPy memiliki banyak rutinitas statistik, termasuk

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
6, yang mengembalikan matriks koefisien korelasi Pearson. Anda bisa mulai dengan mengimpor NumPy dan menentukan dua array NumPy. Ini adalah instance dari kelas
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
7. Panggil mereka
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
_8 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9

>>>

>>> import numpy as np
>>> x = np.arange(10, 20)
>>> x
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
array([ 2,  1,  4,  5,  8, 12, 18, 25, 96, 48])
_

Di sini, Anda menggunakan

>>> scipy.stats.spearmanr(x, y).correlation   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y).correlation  # Kendall's tau
0.911111111111111
0 untuk membuat larik
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8 bilangan bulat antara 10 (inklusif) dan 20 (eksklusif). Kemudian Anda menggunakan
>>> scipy.stats.spearmanr(x, y).correlation   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y).correlation  # Kendall's tau
0.911111111111111
_2 untuk membuat larik kedua
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9 yang berisi bilangan bulat arbitrer

Setelah Anda memiliki dua larik dengan panjang yang sama, Anda dapat memanggil

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
6 dengan kedua larik sebagai argumen

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_

>>> scipy.stats.spearmanr(x, y).correlation   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y).correlation  # Kendall's tau
0.911111111111111
5 mengembalikan matriks korelasi, yang merupakan larik dua dimensi dengan koefisien korelasi. Ini adalah versi sederhana dari matriks korelasi yang baru saja Anda buat

        x       y

x    1.00    0.76
y    0.76    1.00

Nilai pada diagonal utama matriks korelasi (kiri atas dan kanan bawah) sama dengan 1. Nilai kiri atas sesuai dengan koefisien korelasi untuk

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8, sedangkan nilai kanan bawah adalah koefisien korelasi untuk
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9. Mereka selalu sama dengan 1

Namun, yang biasanya Anda butuhkan adalah nilai matriks korelasi kiri bawah dan kanan atas. Nilai-nilai ini sama dan keduanya mewakili koefisien korelasi Pearson untuk

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9. Dalam hal ini, kira-kira 0. 76

Gambar ini menunjukkan poin data dan koefisien korelasi untuk contoh di atas

Korelasi antara dua time series python

Kotak merah adalah titik data. Seperti yang Anda lihat, gambar tersebut juga menunjukkan nilai dari ketiga koefisien korelasi

Contoh. Perhitungan Korelasi SciPy

SciPy juga memiliki banyak rutinitas statistik yang terkandung dalam

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
2. Anda dapat menggunakan metode berikut untuk menghitung tiga koefisien korelasi yang Anda lihat sebelumnya

  • >>> r, p = scipy.stats.pearsonr(x, y)
    >>> r
    0.7586402890911869
    >>> p
    0.010964341301680829
    
    _3
  • >>> r, p = scipy.stats.pearsonr(x, y)
    >>> r
    0.7586402890911869
    >>> p
    0.010964341301680829
    
    _4
  • >>> r, p = scipy.stats.pearsonr(x, y)
    >>> r
    0.7586402890911869
    >>> p
    0.010964341301680829
    
    _5

Inilah cara Anda menggunakan fungsi-fungsi ini dengan Python

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
_

Perhatikan bahwa fungsi ini mengembalikan objek yang berisi dua nilai

  1. Koefisien korelasi
  2. Nilai-p

Anda menggunakan nilai p dalam metode statistik saat menguji hipotesis. Nilai-p adalah ukuran penting yang membutuhkan pengetahuan mendalam tentang probabilitas dan statistik untuk menafsirkannya. Untuk mempelajarinya lebih lanjut, Anda dapat membaca tentang dasar-dasarnya atau melihat penjelasan data scientist tentang nilai-p

Anda dapat mengekstrak nilai-p dan koefisien korelasi dengan indeksnya, sebagai item tupel

>>> ________0______

Anda juga dapat menggunakan notasi titik untuk koefisien Spearman dan Kendall

>>>

>>> scipy.stats.spearmanr(x, y).correlation   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y).correlation  # Kendall's tau
0.911111111111111
_

Notasi titik lebih panjang, tetapi juga lebih mudah dibaca dan lebih jelas

Jika Anda ingin mendapatkan koefisien korelasi Pearson dan nilai-p secara bersamaan, maka Anda dapat membongkar nilai pengembaliannya

>>>

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_

Pendekatan ini mengeksploitasi pembongkaran Python dan fakta bahwa

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
3 mengembalikan tuple dengan dua statistik ini. Anda juga dapat menggunakan teknik ini dengan
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_4 dan
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
5, seperti yang akan Anda lihat nanti

Hilangkan iklan

Contoh. Perhitungan Korelasi Panda

Panda, dalam beberapa kasus, lebih nyaman daripada NumPy dan SciPy untuk menghitung statistik. Ini menawarkan metode statistik untuk dan contoh. Misalnya, diberikan dua

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_9 objek dengan jumlah item yang sama, Anda dapat memanggil
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
2 di salah satunya dengan yang lain sebagai argumen pertama

>>> ________31______

Di sini, Anda menggunakan

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
_2 untuk menghitung ketiga koefisien korelasi. Anda menentukan statistik yang diinginkan dengan parameter
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
4, yang dapat mengambil salah satu dari beberapa nilai

  • >>> import pandas as pd
    >>> x = pd.Series(range(10, 20))
    >>> x
    0    10
    1    11
    2    12
    3    13
    4    14
    5    15
    6    16
    7    17
    8    18
    9    19
    dtype: int64
    >>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
    >>> y
    0     2
    1     1
    2     4
    3     5
    4     8
    5    12
    6    18
    7    25
    8    96
    9    48
    dtype: int64
    >>> x.corr(y)                     # Pearson's r
    0.7586402890911867
    >>> y.corr(x)
    0.7586402890911869
    >>> x.corr(y, method='spearman')  # Spearman's rho
    0.9757575757575757
    >>> x.corr(y, method='kendall')   # Kendall's tau
    0.911111111111111
    
    5
  • >>> import pandas as pd
    >>> x = pd.Series(range(10, 20))
    >>> x
    0    10
    1    11
    2    12
    3    13
    4    14
    5    15
    6    16
    7    17
    8    18
    9    19
    dtype: int64
    >>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
    >>> y
    0     2
    1     1
    2     4
    3     5
    4     8
    5    12
    6    18
    7    25
    8    96
    9    48
    dtype: int64
    >>> x.corr(y)                     # Pearson's r
    0.7586402890911867
    >>> y.corr(x)
    0.7586402890911869
    >>> x.corr(y, method='spearman')  # Spearman's rho
    0.9757575757575757
    >>> x.corr(y, method='kendall')   # Kendall's tau
    0.911111111111111
    
    6
  • >>> import pandas as pd
    >>> x = pd.Series(range(10, 20))
    >>> x
    0    10
    1    11
    2    12
    3    13
    4    14
    5    15
    6    16
    7    17
    8    18
    9    19
    dtype: int64
    >>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
    >>> y
    0     2
    1     1
    2     4
    3     5
    4     8
    5    12
    6    18
    7    25
    8    96
    9    48
    dtype: int64
    >>> x.corr(y)                     # Pearson's r
    0.7586402890911867
    >>> y.corr(x)
    0.7586402890911869
    >>> x.corr(y, method='spearman')  # Spearman's rho
    0.9757575757575757
    >>> x.corr(y, method='kendall')   # Kendall's tau
    0.911111111111111
    
    7
  • yang dapat dipanggil

Callable dapat berupa fungsi, metode, atau yang menerima dua array satu dimensi dan mengembalikan angka floating-point

Korelasi Linier

Korelasi linier mengukur kedekatan hubungan matematis antara variabel atau fitur kumpulan data dengan fungsi linier. Jika hubungan antara dua fitur lebih dekat ke beberapa fungsi linier, maka korelasi liniernya lebih kuat dan nilai absolut dari koefisien korelasinya lebih tinggi

Koefisien Korelasi Pearson

Pertimbangkan kumpulan data dengan dua fitur. x dan y. Setiap fitur memiliki n nilai, jadi x dan y adalah n-tupel. Katakan bahwa nilai pertama x₁ dari x sesuai dengan nilai pertama y₁ dari y, nilai kedua x₂ dari x ke nilai kedua y₂ dari y, dan seterusnya. Maka, ada n pasang nilai yang bersesuaian. (x₁, y₁), (x₂, y₂), dan seterusnya. Masing-masing pasangan x-y ini mewakili satu pengamatan

Koefisien korelasi Pearson (momen-produk) adalah ukuran hubungan linear antara dua fitur. Ini adalah rasio kovarians x dan y dengan perkalian standar deviasinya. Ini sering dilambangkan dengan huruf r dan disebut r Pearson. Anda dapat menyatakan nilai ini secara matematis dengan persamaan ini

r = Σᵢ((xᵢ − mean(x))(yᵢ − mean(y))) (√Σᵢ(xᵢ − mean(x))² √Σᵢ(yᵢ − mean(y))²)⁻¹

Di sini, saya mengambil nilai 1, 2, …, n. X dan y dilambangkan dengan mean(x) dan mean(y). Rumus ini menunjukkan bahwa jika nilai x yang lebih besar cenderung sesuai dengan nilai y yang lebih besar dan sebaliknya, maka r positif. Di sisi lain, jika nilai x yang lebih besar sebagian besar diasosiasikan dengan nilai y yang lebih kecil dan sebaliknya, maka r negatif

Berikut adalah beberapa fakta penting tentang koefisien korelasi Pearson

  • Koefisien korelasi Pearson dapat mengambil nilai riil apa pun dalam rentang −1 ≤ r ≤ 1

  • Nilai maksimum r = 1 sesuai dengan kasus di mana ada hubungan linier positif sempurna antara x dan y. Dengan kata lain, nilai x yang lebih besar sesuai dengan nilai y yang lebih besar dan sebaliknya

  • Nilai r > 0 menunjukkan korelasi positif antara x dan y

  • Nilai r = 0 sesuai dengan kasus di mana tidak ada hubungan linear antara x dan y

  • Nilai r < 0 menunjukkan korelasi negatif antara x dan y

  • Nilai minimal r = −1 sesuai dengan kasus ketika ada hubungan linier negatif sempurna antara x dan y. Dengan kata lain, nilai x yang lebih besar sesuai dengan nilai y yang lebih kecil dan sebaliknya

Fakta di atas dapat dirangkum dalam tabel berikut

Nilai r Pearson Korelasi Antara x dan ye sama dengan 1 hubungan linear positif sempurna lebih besar dari 0 korelasi positif sama dengan 0 tidak ada hubungan linear kurang dari 0 korelasi negatif sama dengan -1 hubungan linear negatif sempurna

Singkatnya, nilai absolut r yang lebih besar menunjukkan korelasi yang lebih kuat, lebih dekat ke fungsi linier. Nilai absolut r yang lebih kecil menunjukkan korelasi yang lebih lemah

Regresi linier. Implementasi Sains

Regresi linier adalah proses menemukan fungsi linier yang sedekat mungkin dengan hubungan sebenarnya antar fitur. Dengan kata lain, Anda menentukan fungsi linier yang paling menggambarkan hubungan antara fitur. Fungsi linear ini disebut juga dengan

Anda dapat menerapkan regresi linier dengan SciPy. Anda akan mendapatkan fungsi linier yang paling mendekati hubungan antara dua larik, serta koefisien korelasi Pearson. Untuk memulai, pertama-tama Anda harus mengimpor pustaka dan menyiapkan beberapa data untuk dikerjakan

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
_

Di sini, Anda mengimpor

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
9 dan
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
2 dan menentukan variabel
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9

Anda dapat menggunakan

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
_3 untuk melakukan regresi linier untuk dua larik dengan panjang yang sama. Anda harus menyediakan array sebagai argumen dan mendapatkan hasilnya dengan menggunakan notasi titik

>>>

>>> result = scipy.stats.linregress(x, y)
>>> result.slope
7.4363636363636365
>>> result.intercept
-85.92727272727274
>>> result.rvalue
0.7586402890911869
>>> result.pvalue
0.010964341301680825
>>> result.stderr
2.257878767543913
_

Itu dia. Anda telah menyelesaikan regresi linier dan mendapatkan hasil berikut

  • >>> import numpy as np
    >>> import scipy.stats
    >>> x = np.arange(10, 20)
    >>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
    
    4. kemiringan garis regresi
  • >>> import numpy as np
    >>> import scipy.stats
    >>> x = np.arange(10, 20)
    >>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
    
    5. perpotongan garis regresi
  • >>> import numpy as np
    >>> import scipy.stats
    >>> x = np.arange(10, 20)
    >>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
    
    6. nilai-p
  • >>> import numpy as np
    >>> import scipy.stats
    >>> x = np.arange(10, 20)
    >>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
    
    7. kesalahan standar dari estimasi gradien

Anda akan mempelajari cara memvisualisasikan hasil ini di bagian selanjutnya

Anda juga dapat memberikan argumen tunggal untuk

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
8, tetapi harus berupa larik dua dimensi dengan satu dimensi dengan panjang dua

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
0

Hasilnya persis sama dengan contoh sebelumnya karena

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9 berisi data yang sama dengan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9 bersama-sama.
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
8 mengambil baris pertama dari
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9 sebagai salah satu fitur dan baris kedua sebagai fitur lainnya

Catatan. Pada contoh di atas,

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
3 menganggap baris sebagai fitur dan kolom sebagai observasi. Itu karena ada dua baris

Praktik biasa dalam pembelajaran mesin adalah kebalikannya. baris adalah pengamatan dan kolom adalah fitur. Banyak perpustakaan pembelajaran mesin, seperti Pandas, Scikit-Learn, Keras, dan lainnya, mengikuti konvensi ini

Anda harus berhati-hati untuk mencatat bagaimana pengamatan dan fitur ditunjukkan setiap kali Anda menganalisis korelasi dalam kumpulan data

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
8 akan mengembalikan hasil yang sama jika Anda memberikan transpos
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9, atau larik NumPy dengan 10 baris dan dua kolom. Di NumPy, Anda dapat mengubah urutan matriks dengan banyak cara

  • >>> result = scipy.stats.linregress(x, y)
    >>> result.slope
    7.4363636363636365
    >>> result.intercept
    -85.92727272727274
    >>> result.rvalue
    0.7586402890911869
    >>> result.pvalue
    0.010964341301680825
    >>> result.stderr
    2.257878767543913
    
    _7
  • >>> result = scipy.stats.linregress(x, y)
    >>> result.slope
    7.4363636363636365
    >>> result.intercept
    -85.92727272727274
    >>> result.rvalue
    0.7586402890911869
    >>> result.pvalue
    0.010964341301680825
    >>> result.stderr
    2.257878767543913
    
    _8
  • >>> result = scipy.stats.linregress(x, y)
    >>> result.slope
    7.4363636363636365
    >>> result.intercept
    -85.92727272727274
    >>> result.rvalue
    0.7586402890911869
    >>> result.pvalue
    0.010964341301680825
    >>> result.stderr
    2.257878767543913
    
    _9

Inilah cara Anda dapat mengubah urutan

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
1

Sekarang setelah Anda mengetahui cara mendapatkan transpose, Anda tidak dapat meneruskannya ke ________ 38 ______ 8. Kolom pertama akan menjadi salah satu fitur dan kolom kedua fitur lainnya

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
2

Di sini, Anda menggunakan

>>> result = scipy.stats.linregress(x, y)
>>> result.slope
7.4363636363636365
>>> result.intercept
-85.92727272727274
>>> result.rvalue
0.7586402890911869
>>> result.pvalue
0.010964341301680825
>>> result.stderr
2.257878767543913
_9 untuk mendapatkan transpose dari
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9.
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
8 bekerja dengan cara yang sama dengan
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9 dan transposnya. Itu mengekstrak fitur dengan memisahkan array sepanjang dimensi dengan panjang dua

Anda juga harus berhati-hati untuk mencatat apakah kumpulan data Anda berisi nilai yang hilang atau tidak. Dalam ilmu data dan pembelajaran mesin, Anda akan sering menemukan beberapa data yang hilang atau rusak. Cara biasa untuk merepresentasikannya dengan Python, NumPy, SciPy, dan Pandas adalah dengan menggunakan nilai NaN atau Not a Number. Tetapi jika data Anda berisi

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_06 nilai, maka Anda tidak akan mendapatkan hasil yang berguna dengan
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
8

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
3

Dalam hal ini, objek hasil Anda mengembalikan semua

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06 nilai. Dalam Python,
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_06 adalah nilai floating-point khusus yang bisa Anda dapatkan dengan menggunakan salah satu dari berikut ini

Anda juga dapat memeriksa apakah suatu variabel sesuai dengan

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06 dengan atau
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
15

Hilangkan iklan

Korelasi Pearson. Implementasi NumPy dan SciPy

Anda telah melihat bagaimana mendapatkan koefisien korelasi Pearson dengan

>>> scipy.stats.spearmanr(x, y).correlation   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y).correlation  # Kendall's tau
0.911111111111111
5 dan
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
3

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
4

Perhatikan bahwa jika Anda memberikan larik dengan nilai

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_06 ke
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
3, Anda akan mendapatkan

Ada beberapa detail tambahan yang perlu dipertimbangkan. Pertama, ingat bahwa

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
_6 dapat mengambil dua array NumPy sebagai argumen. Sebagai gantinya, Anda bisa melewatkan satu larik dua dimensi dengan nilai yang sama dengan argumen

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
5

Hasilnya sama dalam contoh ini dan sebelumnya. Sekali lagi, baris pertama dari

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9 mewakili satu fitur, sedangkan baris kedua mewakili fitur lainnya

Jika Anda ingin mendapatkan koefisien korelasi untuk tiga fitur, maka Anda cukup memberikan array dua dimensi numerik dengan tiga baris sebagai argumennya

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
6

Anda akan mendapatkan matriks korelasi lagi, tetapi yang ini akan lebih besar dari yang sebelumnya

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_7

Ini karena

>>> scipy.stats.spearmanr(x, y).correlation   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y).correlation  # Kendall's tau
0.911111111111111
_5 menganggap setiap baris
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
24 sebagai satu fitur. Nilai
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_25 adalah koefisien korelasi untuk dua fitur pertama dari
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
24. Ini sama dengan koefisien untuk
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
_8 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9 pada contoh sebelumnya.
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_29 mewakili r Pearson untuk fitur pertama dan ketiga, sedangkan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
30 adalah r Pearson untuk dua fitur terakhir

Berikut adalah contoh menarik tentang apa yang terjadi jika Anda mengirimkan

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06 data ke
>>> scipy.stats.spearmanr(x, y).correlation   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y).correlation  # Kendall's tau
0.911111111111111
5

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
8

Dalam contoh ini, dua baris pertama (atau fitur) dari

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
33 baik-baik saja, tetapi baris ketiga
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
34 berisi nilai
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06. Segala sesuatu yang tidak termasuk fitur dengan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06 dihitung dengan baik. Namun, hasil yang bergantung pada baris terakhir adalah
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06

Secara default,

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_38 menganggap baris sebagai fitur dan kolom sebagai observasi. Jika Anda menginginkan perilaku sebaliknya, yang banyak digunakan dalam pembelajaran mesin, maka gunakan argumen
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
39

>>>

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
9

Array ini identik dengan yang Anda lihat sebelumnya. Di sini, Anda menerapkan konvensi yang berbeda, tetapi hasilnya sama

Korelasi Pearson. Implementasi Panda

Sejauh ini, Anda telah menggunakan metode objek

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_9 dan
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0 untuk menghitung koefisien korelasi. Mari jelajahi metode ini lebih detail. Pertama, Anda perlu mengimpor Panda dan membuat beberapa contoh
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
9 dan
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
0

Anda sekarang memiliki tiga objek

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_9 yang disebut
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8,
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9, dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
47. Anda juga memiliki dua objek
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0,
>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9 dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
24

Catatan. Saat Anda bekerja dengan

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0 instance, Anda harus menyadari bahwa baris adalah observasi dan kolom adalah fitur. Ini konsisten dengan praktik biasa dalam pembelajaran mesin

Anda telah mempelajari cara menggunakan

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
_2 dengan objek
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
9 untuk mendapatkan koefisien korelasi Pearson

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
1

Di sini, Anda memanggil

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
_2 pada satu objek dan memberikan yang lain sebagai argumen pertama

Jika Anda memberikan nilai

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_06, maka
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
2 akan tetap berfungsi, tetapi akan mengecualikan pengamatan yang berisi nilai
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
2

Anda mendapatkan nilai koefisien korelasi yang sama dalam dua contoh ini. Itu karena

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
2 mengabaikan pasangan nilai (
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
59,
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
60) yang memiliki nilai yang hilang

Anda juga dapat menggunakan

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
_2 dengan
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0 objek. Anda dapat menggunakannya untuk mendapatkan matriks korelasi untuk kolom mereka

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
3

Matriks korelasi yang dihasilkan adalah contoh baru dari

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0 dan memegang koefisien korelasi untuk kolom
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
64 dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
65. Hasil berlabel seperti itu biasanya sangat mudah digunakan karena Anda dapat mengaksesnya dengan label atau indeks posisi bilangan bulatnya

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
4

Contoh ini menunjukkan dua cara mengakses nilai

  1. Gunakan
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    _66 untuk mengakses nilai tunggal dengan label baris dan kolom
  2. Gunakan
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    _67 untuk mengakses nilai berdasarkan posisi baris dan kolomnya

Anda dapat menerapkan

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
_2 dengan cara yang sama dengan objek
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0 yang berisi tiga kolom atau lebih

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
5

Anda akan mendapatkan matriks korelasi dengan koefisien korelasi berikut

  • >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    _70 untuk
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    71 dan
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    72
  • >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    _73 untuk
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    71 dan
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    75
  • >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    _76 untuk
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    72 dan
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    75

Metode lain yang berguna adalah

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
79, yang memungkinkan Anda menghitung koefisien korelasi antara baris atau kolom dari satu objek DataFrame dan objek Seri atau DataFrame lainnya yang diteruskan sebagai argumen pertama

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
6

Dalam hal ini, hasilnya adalah objek

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_9 baru dengan koefisien korelasi untuk kolom
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
64 dan nilai
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
47, serta koefisien untuk
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
65 dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
47

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_79 memiliki parameter opsional
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
86 yang menentukan apakah kolom atau baris mewakili fitur. Nilai default
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_86 adalah 0, dan juga default untuk kolom yang mewakili fitur. Ada juga parameter
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_88, yang menunjukkan apa yang harus dilakukan dengan nilai yang hilang

Baik

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
2 dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
79 memiliki parameter opsional
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
4 untuk menentukan koefisien korelasi yang ingin Anda hitung. Koefisien korelasi Pearson dikembalikan secara default, jadi Anda tidak perlu menyediakannya dalam kasus ini

Hilangkan iklan

Korelasi Peringkat

Korelasi peringkat membandingkan peringkat atau urutan data yang terkait dengan dua variabel atau fitur dataset. Jika urutannya mirip, maka korelasinya kuat, positif, dan tinggi. Namun, jika urutannya hampir terbalik, maka korelasinya kuat, negatif, dan rendah. Dengan kata lain, korelasi peringkat hanya berkaitan dengan urutan nilai, bukan dengan nilai tertentu dari kumpulan data

Untuk mengilustrasikan perbedaan antara korelasi linier dan peringkat, perhatikan gambar berikut

Korelasi antara dua time series python

Plot kiri memiliki hubungan linier positif sempurna antara x dan y, jadi r = 1. Plot pusat menunjukkan korelasi positif dan yang kanan menunjukkan korelasi negatif. Namun, keduanya bukan fungsi linier, jadi r berbeda dari −1 atau 1

Saat Anda hanya melihat urutan atau peringkat, ketiga hubungan itu sempurna. Plot kiri dan tengah menunjukkan pengamatan di mana nilai x yang lebih besar selalu sesuai dengan nilai y yang lebih besar. Ini adalah korelasi peringkat positif sempurna. Plot kanan menggambarkan kasus sebaliknya, yaitu korelasi peringkat negatif sempurna

Koefisien Korelasi Spearman

Koefisien korelasi Spearman antara dua fitur adalah koefisien korelasi Pearson antara nilai peringkatnya. Ini dihitung dengan cara yang sama seperti koefisien korelasi Pearson tetapi memperhitungkan peringkatnya, bukan nilainya. Ini sering dilambangkan dengan huruf Yunani rho (ρ) dan disebut rho Spearman

Katakanlah Anda memiliki dua n-tupel, x dan y, di mana

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
92 adalah pengamatan sebagai pasangan nilai yang sesuai. Anda dapat menghitung koefisien korelasi Spearman ρ dengan cara yang sama seperti koefisien Pearson. Anda akan menggunakan peringkat alih-alih nilai sebenarnya dari x dan y

Berikut adalah beberapa fakta penting tentang koefisien korelasi Spearman

  • Itu bisa mengambil nilai nyata dalam rentang −1 ≤ ρ ≤ 1

  • Nilai maksimumnya ρ = 1 sesuai dengan kasus ketika ada fungsi yang meningkat secara monoton antara x dan y. Dengan kata lain, nilai x yang lebih besar sesuai dengan nilai y yang lebih besar dan sebaliknya

  • Nilai minimumnya ρ = −1 sesuai dengan kasus ketika ada fungsi yang menurun secara monoton antara x dan y. Dengan kata lain, nilai x yang lebih besar sesuai dengan nilai y yang lebih kecil dan sebaliknya

Anda dapat menghitung rho Spearman dengan Python dengan cara yang sangat mirip dengan rho Pearson

Koefisien Korelasi Kendall

Mari kita mulai lagi dengan mempertimbangkan dua n-tupel, x dan y. Setiap pasangan x-y

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_92 adalah pengamatan tunggal. Sepasang pengamatan (xᵢ, yᵢ) dan (xⱼ, yⱼ), di mana i < j, akan menjadi salah satu dari tiga hal

  • konkordan jika salah satu (xᵢ > xⱼ dan yᵢ > yⱼ) atau (xᵢ < xⱼ dan yᵢ < yⱼ)
  • sumbang jika salah satu (xᵢ < xⱼ dan yᵢ > yⱼ) atau (xᵢ > xⱼ dan yᵢ < yⱼ)
  • baik jika ada seri di x (xᵢ = xⱼ) atau seri di y (yᵢ = yⱼ)

Koefisien korelasi Kendall membandingkan jumlah pasangan data yang konkordan dan sumbang. Koefisien ini didasarkan pada perbedaan jumlah pasangan konkordan dan diskordan relatif terhadap jumlah pasangan x-y. Ini sering dilambangkan dengan huruf Yunani tau (τ) dan disebut tau Kendall

Menurut

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
2 dokumen resmi, koefisien korelasi Kendall dihitung sebagai τ = (n⁺ − n⁻) / √((n⁺ + n⁻ + nˣ)(n⁺ + n⁻ + nʸ)), di mana

  • n⁺ adalah jumlah pasangan konkordan
  • n⁻ adalah jumlah pasangan sumbang
  • nˣ adalah jumlah ikatan hanya di x
  • nʸ adalah jumlah ikatan hanya di y

Jika dasi terjadi di kedua x dan y, maka itu tidak termasuk dalam nˣ atau nʸ

Halaman Wikipedia tentang koefisien korelasi peringkat Kendall memberikan ungkapan berikut. τ = (2 / (n(n − 1))) Σᵢⱼ(tanda(xᵢ − xⱼ) tanda(yᵢ − yⱼ)) untuk i < j, dimana i = 1, 2, …, n − 1 dan j = 2 . Fungsi tanda sign(z) adalah −1 jika z < 0, 0 jika z = 0, dan 1 jika z > 0. n(n − 1) / 2 adalah jumlah total pasangan x-y

Beberapa fakta penting tentang koefisien korelasi Kendall adalah sebagai berikut

  • Itu bisa mengambil nilai nyata dalam kisaran −1 ≤ τ ≤ 1

  • Nilai maksimumnya τ = 1 sesuai dengan kasus ketika peringkat nilai yang sesuai di x dan y adalah sama. Dengan kata lain, semua pasangan serasi

  • Nilai minimumnya τ = −1 sesuai dengan kasus ketika peringkat di x adalah kebalikan dari peringkat di y. Dengan kata lain, semua pasangan sumbang

Anda dapat menghitung tau Kendall dengan Python mirip dengan cara Anda menghitung r Pearson

Hilangkan iklan

Pangkat. Implementasi Sains

Anda dapat menggunakan

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_2 untuk menentukan peringkat setiap nilai dalam larik. Pertama, Anda akan mengimpor pustaka dan membuat larik NumPy

>>> ________12______7

Sekarang setelah Anda menyiapkan data, Anda dapat menentukan peringkat setiap nilai dalam larik NumPy dengan

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
96

>>> ________12______8

Larik

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8 dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
47 monoton, jadi peringkatnya juga monoton. Nilai terkecil di
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9 adalah
        x       y

x    1.00    0.76
y    0.76    1.00
00 dan sesuai dengan peringkat
        x       y

x    1.00    0.76
y    0.76    1.00
00. Terkecil kedua adalah
        x       y

x    1.00    0.76
y    0.76    1.00
02, yang sesuai dengan peringkat
        x       y

x    1.00    0.76
y    0.76    1.00
02. Nilai terbesar adalah
        x       y

x    1.00    0.76
y    0.76    1.00
_04, yang sesuai dengan peringkat terbesar
        x       y

x    1.00    0.76
y    0.76    1.00
05 karena ada 10 item dalam larik

        x       y

x    1.00    0.76
y    0.76    1.00
06 memiliki parameter opsional
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
4. Ini memberi tahu Python apa yang harus dilakukan jika ada ikatan dalam array (jika dua atau lebih nilai sama). Secara default, ini memberi mereka peringkat rata-rata

>>>

        x       y

x    1.00    0.76
y    0.76    1.00
9

Ada dua elemen dengan nilai

        x       y

x    1.00    0.76
y    0.76    1.00
_02 dan mereka memiliki peringkat
        x       y

x    1.00    0.76
y    0.76    1.00
09 dan
        x       y

x    1.00    0.76
y    0.76    1.00
10. Nilai
        x       y

x    1.00    0.76
y    0.76    1.00
_11 memiliki peringkat
        x       y

x    1.00    0.76
y    0.76    1.00
12 dan nilai
        x       y

x    1.00    0.76
y    0.76    1.00
13 memiliki peringkat
        x       y

x    1.00    0.76
y    0.76    1.00
14. Kemudian, kedua elemen dengan nilai
        x       y

x    1.00    0.76
y    0.76    1.00
_02 akan mendapatkan peringkat yang sama
        x       y

x    1.00    0.76
y    0.76    1.00
16

        x       y

x    1.00    0.76
y    0.76    1.00
06 memperlakukan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06 nilai seolah-olah besar

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
0

Dalam hal ini, nilai

>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
_59 sesuai dengan peringkat terbesar
        x       y

x    1.00    0.76
y    0.76    1.00
14. Anda juga bisa mendapatkan peringkat dengan
        x       y

x    1.00    0.76
y    0.76    1.00
21

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
1

        x       y

x    1.00    0.76
y    0.76    1.00
22 mengembalikan indeks yang akan dimiliki item array dalam array yang diurutkan. Indeks ini berbasis nol, jadi Anda harus menambahkan
        x       y

x    1.00    0.76
y    0.76    1.00
00 ke semuanya

Korelasi Peringkat. Implementasi NumPy dan SciPy

Anda dapat menghitung koefisien korelasi Spearman dengan

        x       y

x    1.00    0.76
y    0.76    1.00
24

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
2

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_4 mengembalikan objek yang berisi nilai koefisien korelasi Spearman dan nilai-p. Seperti yang Anda lihat, Anda dapat mengakses nilai tertentu dengan dua cara

  1. Menggunakan notasi titik (
            x       y
    
    x    1.00    0.76
    y    0.76    1.00
    
    _26 dan
            x       y
    
    x    1.00    0.76
    y    0.76    1.00
    
    27)
  2. Menggunakan Python membongkar (
            x       y
    
    x    1.00    0.76
    y    0.76    1.00
    
    _28)

Anda bisa mendapatkan hasil yang sama jika Anda memberikan larik dua dimensi

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
9 yang berisi data yang sama dengan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8 dan
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9 hingga
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
4

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
3

Baris pertama dari

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
_9 adalah salah satu fitur, sedangkan baris kedua adalah fitur lainnya. Anda dapat memodifikasi ini. Parameter opsional
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
86 menentukan apakah kolom (
        x       y

x    1.00    0.76
y    0.76    1.00
35) atau baris (
        x       y

x    1.00    0.76
y    0.76    1.00
36) mewakili fitur. Perilaku default adalah bahwa baris adalah observasi dan kolom adalah fitur

Parameter opsional lainnya

        x       y

x    1.00    0.76
y    0.76    1.00
37 menentukan cara menangani nilai
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
06. Ini dapat mengambil salah satu dari tiga nilai

  •         x       y
    
    x    1.00    0.76
    y    0.76    1.00
    
    39 mengembalikan
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    06 jika ada nilai
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    06 di antara input. Ini adalah perilaku default
  •         x       y
    
    x    1.00    0.76
    y    0.76    1.00
    
    42 memunculkan
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    20 jika ada nilai
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    06 di antara input
  •         x       y
    
    x    1.00    0.76
    y    0.76    1.00
    
    45 mengabaikan pengamatan dengan nilai
    >>> r = np.corrcoef(x, y)
    >>> r
    array([[1.        , 0.75864029],
           [0.75864029, 1.        ]])
    >>> r[0, 1]
    0.7586402890911867
    >>> r[1, 0]
    0.7586402890911869
    
    06

Jika Anda menyediakan array dua dimensi dengan lebih dari dua fitur, maka Anda akan mendapatkan matriks korelasi dan matriks nilai-p

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
4

Nilai

        x       y

x    1.00    0.76
y    0.76    1.00
_47 pada matriks korelasi menunjukkan bahwa fitur pertama dan ketiga memiliki korelasi peringkat negatif sempurna, yaitu nilai yang lebih besar pada baris pertama selalu sesuai dengan nilai yang lebih kecil pada baris ketiga.

Anda dapat memperoleh koefisien korelasi Kendall dengan

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
5

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
5

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
_5 bekerja seperti
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
4. Dibutuhkan dua array satu dimensi, memiliki parameter opsional
        x       y

x    1.00    0.76
y    0.76    1.00
37, dan mengembalikan objek dengan nilai koefisien korelasi dan nilai-p

Namun, jika Anda hanya menyediakan satu larik dua dimensi sebagai argumen, maka

>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
5 akan memunculkan. Jika Anda melewatkan dua larik multidimensi dengan bentuk yang sama, larik tersebut akan diratakan sebelum perhitungan

Hilangkan iklan

Korelasi Peringkat. Implementasi Panda

Anda dapat menghitung koefisien korelasi Spearman dan Kendall dengan Panda. Sama seperti sebelumnya, Anda mulai dengan mengimpor

        x       y

x    1.00    0.76
y    0.76    1.00
54 dan membuat beberapa
>>> r, p = scipy.stats.pearsonr(x, y)
>>> r
0.7586402890911869
>>> p
0.010964341301680829
9 dan
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
0 instance

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
6

Sekarang setelah Anda memiliki objek Pandas ini, Anda dapat menggunakan

>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
2 dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
79 seperti yang Anda lakukan saat menghitung koefisien korelasi Pearson. Anda hanya perlu menentukan koefisien korelasi yang diinginkan dengan parameter opsional
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
4, yang defaultnya adalah
>>> import pandas as pd
>>> x = pd.Series(range(10, 20))
>>> x
0    10
1    11
2    12
3    13
4    14
5    15
6    16
7    17
8    18
9    19
dtype: int64
>>> y = pd.Series([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> y
0     2
1     1
2     4
3     5
4     8
5    12
6    18
7    25
8    96
9    48
dtype: int64
>>> x.corr(y)                     # Pearson's r
0.7586402890911867
>>> y.corr(x)
0.7586402890911869
>>> x.corr(y, method='spearman')  # Spearman's rho
0.9757575757575757
>>> x.corr(y, method='kendall')   # Kendall's tau
0.911111111111111
5

Untuk menghitung rho Spearman, berikan

        x       y

x    1.00    0.76
y    0.76    1.00
61

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
7

Jika Anda menginginkan tau Kendall, gunakan

        x       y

x    1.00    0.76
y    0.76    1.00
62

>>> ________23______8

Seperti yang Anda lihat, tidak seperti SciPy, Anda dapat menggunakan struktur data dua dimensi tunggal (kerangka data)

Visualisasi Korelasi

Visualisasi data sangat penting dalam statistik dan ilmu data. Ini dapat membantu Anda lebih memahami data Anda dan memberi Anda wawasan yang lebih baik tentang hubungan antar fitur. Di bagian ini, Anda akan mempelajari cara merepresentasikan secara visual hubungan antara dua fitur dengan plot x-y. Anda juga akan menggunakan peta panas untuk memvisualisasikan matriks korelasi

Anda akan mempelajari cara menyiapkan data dan mendapatkan representasi visual tertentu, tetapi Anda tidak akan membahas banyak penjelasan lainnya. Untuk mempelajari lebih lanjut tentang Matplotlib secara mendalam, lihat Python Plotting With Matplotlib (Panduan). Anda juga dapat melihat dokumentasi resmi dan Anatomi Matplotlib

Untuk memulai, pertama-tama impor ________12______63

>>>

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
>>> scipy.stats.pearsonr(x, y)    # Pearson's r
(0.7586402890911869, 0.010964341301680832)
>>> scipy.stats.spearmanr(x, y)   # Spearman's rho
SpearmanrResult(correlation=0.9757575757575757, pvalue=1.4675461874042197e-06)
>>> scipy.stats.kendalltau(x, y)  # Kendall's tau
KendalltauResult(correlation=0.911111111111111, pvalue=2.9761904761904762e-05)
9

Di sini, Anda menggunakan

        x       y

x    1.00    0.76
y    0.76    1.00
_64 untuk mengatur gaya plot. Jangan ragu untuk melewati baris ini jika Anda mau

Anda akan menggunakan array

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
8,
>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
9,
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
47, dan
>>> r = np.corrcoef(x, y)
>>> r
array([[1.        , 0.75864029],
       [0.75864029, 1.        ]])
>>> r[0, 1]
0.7586402890911867
>>> r[1, 0]
0.7586402890911869
24 dari bagian sebelumnya. Anda dapat membuatnya lagi untuk mengurangi pengguliran

>>>

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
0

Sekarang setelah Anda mendapatkan data, Anda siap merencanakan

Plot X-Y Dengan Garis Regresi

Pertama, Anda akan melihat cara membuat plot x-y dengan garis regresi, persamaannya, dan koefisien korelasi Pearson. Anda bisa mendapatkan kemiringan dan perpotongan garis regresi, serta koefisien korelasi, dengan

>>> import numpy as np
>>> import scipy.stats
>>> x = np.arange(10, 20)
>>> y = np.array([2, 1, 4, 5, 8, 12, 18, 25, 96, 48])
8

>>>

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
1

Sekarang Anda memiliki semua nilai yang Anda butuhkan. Anda juga bisa mendapatkan string dengan persamaan garis regresi dan nilai koefisien korelasi. f-string sangat nyaman untuk tujuan ini

>>>

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
2

Sekarang, buat plot x-y dengan ________12______70

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
_3

Output Anda akan terlihat seperti ini

Korelasi antara dua time series python

Kotak merah mewakili pengamatan, sedangkan garis biru adalah garis regresi. Persamaannya tercantum dalam legenda, bersama dengan koefisien korelasinya

Hilangkan iklan

Peta Panas Matriks Korelasi

Matriks korelasi bisa menjadi sangat besar dan membingungkan ketika Anda memiliki banyak fitur. Untungnya, Anda dapat menyajikannya secara visual sebagai peta panas di mana setiap bidang memiliki warna yang sesuai dengan nilainya. Anda memerlukan matriks korelasi

>>>

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
4

Akan lebih mudah bagi Anda untuk membulatkan angka dalam matriks korelasi dengan

        x       y

x    1.00    0.76
y    0.76    1.00
71, karena angka tersebut akan ditampilkan di peta panas

Terakhir, buat peta panas Anda dengan

        x       y

x    1.00    0.76
y    0.76    1.00
_72 dan matriks korelasi sebagai argumennya

>>> scipy.stats.pearsonr(x, y)[0]    # Pearson's r
0.7586402890911869
>>> scipy.stats.spearmanr(x, y)[0]   # Spearman's rho
0.9757575757575757
>>> scipy.stats.kendalltau(x, y)[0]  # Kendall's tau
0.911111111111111
5

Output Anda akan terlihat seperti ini

Korelasi antara dua time series python

Hasilnya adalah tabel dengan koefisien. Sepertinya keluaran Panda dengan latar belakang berwarna. Warna membantu Anda menginterpretasikan output. Dalam contoh ini, warna kuning melambangkan angka 1, hijau melambangkan 0. 76, dan ungu digunakan untuk bilangan negatif

Kesimpulan

Anda sekarang tahu bahwa koefisien korelasi adalah statistik yang mengukur hubungan antara variabel atau fitur kumpulan data. Mereka sangat penting dalam ilmu data dan pembelajaran mesin

Anda sekarang dapat menggunakan Python untuk menghitung

  • Koefisien korelasi momen produk Pearson
  • Koefisien korelasi peringkat Spearman
  • Koefisien korelasi peringkat Kendall

Sekarang Anda dapat menggunakan fungsi dan metode korelasi NumPy, SciPy, dan Pandas untuk menghitung statistik ini (dan lainnya) secara efektif, bahkan saat Anda bekerja dengan kumpulan data besar. Anda juga tahu cara memvisualisasikan data, garis regresi, dan matriks korelasi dengan plot dan peta panas Matplotlib

Jika Anda memiliki pertanyaan atau komentar, silakan taruh di bagian komentar di bawah ini

Tandai sebagai Selesai

🐍 Trik Python 💌

Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python

Korelasi antara dua time series python

Kirimi Saya Trik Python »

Tentang Mirko Stojiljkovic

Korelasi antara dua time series python
Korelasi antara dua time series python

Mirko memiliki Ph. D. di Teknik Mesin dan bekerja sebagai profesor universitas. Ia adalah seorang Pythonista yang menerapkan metode hybrid optimization dan machine learning untuk mendukung pengambilan keputusan di sektor energi

» Lebih lanjut tentang Mirko


Setiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah

Korelasi antara dua time series python

Aldren

Korelasi antara dua time series python

Bryan

Korelasi antara dua time series python

Geir Arne

Korelasi antara dua time series python

Jaya

Korelasi antara dua time series python

Joanna

Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista

Tingkatkan Keterampilan Python Anda »

Guru Keterampilan Python Dunia Nyata
Dengan Akses Tak Terbatas ke Real Python

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista

Tingkatkan Keterampilan Python Anda »

Bagaimana menurut anda?

Nilai artikel ini

Tweet Bagikan Bagikan Email

Apa takeaway # 1 Anda atau hal favorit yang Anda pelajari?

Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami

Bagaimana Anda menemukan korelasi antara dua deret waktu?

Korelasi serial atau autokorelasi lag , , dari deret waktu stasioner orde kedua diberikan oleh autokovarians deret yang dinormalisasi oleh perkalian penyebaran. Artinya, ρ k = C k σ 2 .

Bagaimana Anda menemukan korelasi antara dua seri dengan Python?

Dengan menggunakan fungsi corr() kita bisa mendapatkan korelasi antara dua kolom dalam kerangka data.

Apa itu salib

Korelasi silang adalah cara untuk mengukur tingkat kesamaan antara deret waktu dan versi lag dari deret waktu lain . Jenis korelasi ini berguna untuk dihitung karena dapat memberi tahu kita apakah nilai dari satu deret waktu merupakan prediksi dari nilai deret waktu lainnya di masa mendatang.

Bisakah Anda menggunakan korelasi dengan deret waktu?

Korelasi berarti bahwa sepasang deret waktu juga terlihat sebagai dua variabel yang terkait satu sama lain . Hubungan itu bisa jadi salah satunya. kausal. satu variabel adalah hasil dari yang lain. relevan tetapi tidak kausal. kedua variabel tersebut relevan, tetapi tidak kausal.