Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melakukan ujian Grubbs dalam Python

Bagaimana untuk melakukan ujian Grubbs dalam Python

WBOY
WBOYke hadapan
2023-08-28 15:49:07798semak imbas

Pengenalan

Ujian Grubbs ialah kaedah ujian hipotesis statistik yang digunakan untuk mengesan outlier dalam set data. Outlier ialah pemerhatian yang diberikan kepada pengedaran data, juga dikenali sebagai anomali. Set data dengan outlier cenderung lebih terdedah kepada overfitting daripada data dengan taburan normal/Gaussian. Oleh itu, adalah perlu untuk menangani outlier sebelum pemodelan pembelajaran mesin. Sebelum memproses, kita mesti mengesan dan mencari outlier dalam set data. Teknik pengesanan outlier yang paling popular ialah QQPlot, julat antara kuartil dan ujian statistik Grubbs. Walau bagaimanapun, artikel ini hanya akan membincangkan ujian Grubbs untuk mengesan outlier. Anda akan belajar: Apakah ujian Grubbs dan cara melaksanakannya dalam Python.

Apakah itu outlier?

Outlier ialah pemerhatian data yang jauh secara berangka daripada nilai data lain. Nilai ini berada di luar julat data taburan normal. Set data mesti mengandungi 67% daripada rekod pada sisihan piawai pertama, 95% daripada data pada sisihan piawai kedua, dan 99.7% daripada mata pada sisihan piawai ketiga untuk mencapai taburan normal. Dalam erti kata lain, titik data harus terletak di antara julat kuartil pertama dan ketiga. Kami menganggap rekod di bawah kuartil pertama dan di atas kuartil ketiga sebagai outlier atau outlier.

Merebut Ujian Hipotesis Statistik

Seperti mana-mana ujian hipotesis statistik lain, ujian Grubbs juga boleh meluluskan atau menolak hipotesis nol (H0) atau hipotesis alternatif (H1). Ujian Grubbs ialah ujian yang mengesan outlier dalam set data.

Kami boleh melakukan ujian Grubbs dalam dua cara: Ujian satu sisi dan Ujian dua belah, untuk set data univariate atau sampel hampir normal dengan taburan sekurang-kurangnya tujuh pembolehubah. Ujian ini juga dipanggil ujian sisihan pelajar melampau atau ujian baki ternormal maksimum.

Ujian Grubbs menggunakan andaian berikut -

  • Null (H0): Set data tidak mempunyai outlier.

  • Alternatif (H1): Set data hanya mempunyai satu outlier.

Ujian Grabbs dalam Python

Python boleh menangani sebarang cabaran pengaturcaraan dengan koleksi perpustakaannya yang luas. Perpustakaan ini menyediakan kaedah terbina dalam yang boleh digunakan secara langsung untuk melaksanakan sebarang operasi, ujian statistik, dsb. Begitu juga, Python mempunyai perpustakaan yang mengandungi kaedah untuk melaksanakan ujian Grubbs untuk mengesan outlier. Walau bagaimanapun, kami akan meneroka dua cara untuk melaksanakan ujian Grubbs dalam Python: fungsi terbina dalam dalam perpustakaan dan melaksanakan formula dari awal.

Perpustakaan outlier dan Smirnov_grubbs

Mari kita pasang perpustakaan outlier_utils dahulu menggunakan arahan berikut.

!pip install outlier_utils

Sekarang mari buat set data yang mengandungi outlier dan lakukan ujian Grubbs.

Pemeriksaan Grubb dua muka

Tatabahasa

grubbs.test(data, alpha=.05)

Parameter

data - Vektor angka nilai data.

alpha - Tahap kepentingan ujian.

Arahan

Dalam kaedah ini, pengguna mesti menggunakan fungsi smirnov_grubbs.test() daripada pakej outlier dan lulus data yang diperlukan sebagai input untuk menjalankan ujian Grubb.

Contoh

import numpy as np
from outliers import smirnov_grubbs as grubbs
 
#define data
data = np.array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40])
 
#perform Grubbs' test
grubbs.test(data, alpha=.05)

Output

array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22,  8, 21, 28, 11,  9, 29])

Kod di atas hanya bermula dengan memuatkan perpustakaan dan data, dan akhirnya menggunakan kaedah "ujian" untuk melakukan ujian Grubbs pada data ini. Ujian ini mengesan outlier pada kedua-dua belah (kiri dan kanan), atau nilai di bawah kuartil pertama dan di atas kuartil ketiga. Data hanya mempunyai 1 outlier (40), yang telah dialih keluar menggunakan ujian Grubbs.

Ujian Grubbs satu sisi

Synatx

grubbs.max_test(data, alpha=.05)

Arahan

Dalam kaedah ini, pengguna mesti memanggil fungsi grubbs.min_test() untuk mendapatkan nilai outlier minimum daripada set data yang disediakan, atau memanggil fungsi grubbs.max_test() untuk mendapatkan nilai outlier maksimum daripada set data yang disediakan kepada Ujian Grubb satu sisi telah diperolehi.

Contoh

import numpy as np
from outliers import smirnov_grubbs as grubbs
 
#define data
data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40])

#perform Grubbs' test for minimum value is an outlier
print(grubbs.min_test(data, alpha=.05)) 

#perform Grubbs' test for minimum value is an outlier
grubbs.max_test(data, alpha=.05)

Output

[ 5 14 15 15 14 19 17 16 20 22  8 21 28 11  9 29 40]
array([ 5, 14, 15, 15, 14, 19, 17, 16, 20, 22,  8, 21, 28, 11,  9, 29])

Ujian Grubbs satu sisi mengesan outlier di bawah kuartil pertama atau di atas kuartil ketiga. Kita dapat melihat bahawa kaedah min_test mengalih keluar outlier dari bahagian terkecil data, manakala kaedah max_test mengalih keluar outlier dari bahagian atas data.

Pelaksanaan formula

Di sini kita akan menggunakan Python untuk melaksanakan formula ujian Grubbs berikut. Kami akan menggunakan perpustakaan Numpy dan Scipy untuk mencapai ini.

Bagaimana untuk melakukan ujian Grubbs dalam Python

Tatabahasa

g_calculated = numerator/sd_x
g_critical = ((n - 1) * np.sqrt(np.square(t_value_1))) / (np.sqrt(n) * np.sqrt(n - 2 + np.square(t_value_1)))

Algoritma

Langkah pelaksanaan adalah seperti berikut -

  • Kira purata nilai set data.

  • Kira sisihan piawai bagi nilai set data.

  • Untuk melaksanakan formula ujian Grubbs, hitung pengangka dengan menolak nilai setiap nilai dalam set data daripada minnya.

  • Bahagikan nilai pengangka dengan sisihan piawai untuk mendapatkan markah yang dikira.

  • Kira markah kritikal untuk nilai yang sama.

  • Jika nilai kritikal lebih besar daripada nilai yang dikira, tiada outlier dalam set data, jika tidak ada outlier.

Contoh

import numpy as np
import scipy.stats as stats
## define data
x = np.array([12,13,14,19,21,23])
y = np.array([12,13,14,19,21,23,45])

## implement Grubbs test
def grubbs_test(x):
   n = len(x)
   mean_x = np.mean(x)
   sd_x = np.std(x)
   numerator = max(abs(x-mean_x))
   g_calculated = numerator/sd_x
   print("Grubbs Calculated Value:",g_calculated)
   t_value_1 = stats.t.ppf(1 - 0.05 / (2 * n), n - 2)
   g_critical = ((n - 1) * np.sqrt(np.square(t_value_1))) / (np.sqrt(n) * np.sqrt(n - 2 + np.square(t_value_1)))
   print("Grubbs Critical Value:",g_critical)
   if g_critical > g_calculated:
      print("We can see from the Grubbs test that the calculated value is less than the crucial value. Recognize the null hypothesis and draw the conclusion that there are no outliers\n")
   else:
      print("We see from the Grubbs test that the estimated value exceeds the critical value. Reject the null theory and draw the conclusion that there are outliers\n")
grubbs_test(x)
grubbs_test(y)

Output

Grubbs Calculated Value: 1.4274928542926593
Grubbs Critical Value: 1.887145117792422
We can see from the Grubbs test that the calculated value is less than the crucial value. Recognize the null hypothesis and draw the conclusion that there are no outliers

Grubbs Calculated Value: 2.2765147221587774
Grubbs Critical Value: 2.019968507680656
We see from the Grubbs test that the estimated value exceeds the critical value. Reject the null theory and draw the conclusion that there are outliers

Hasil ujian Grubb menunjukkan bahawa tatasusunan x tidak mempunyai apa-apa outlier, tetapi y mempunyai 1 outlier.

Kesimpulan

Kami mempelajari tentang outlier dan ujian Grubbs dalam Python dalam artikel ini. Mari kita akhiri artikel ini dengan beberapa perkara penting.

  • Outlier ialah rekod yang berada di luar julat antara kuartil.

  • Outlier tidak mematuhi taburan normal set data.

  • Kita boleh menggunakan ujian statistik hipotesis Grubbs untuk mengesan outlier.

  • Kami boleh melaksanakan ujian Grubbs menggunakan kaedah terbina dalam yang disediakan dalam perpustakaan outlier_utils.

  • Ujian Grubbs dua belah mengesan dan mengeluarkan outlier di bahagian kiri dan kanan.

  • Walau bagaimanapun, ujian Grubbs sebelah akan mengesan outlier di kedua-dua belah pihak.

Atas ialah kandungan terperinci Bagaimana untuk melakukan ujian Grubbs dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam