Bagaimana python digunakan dalam statistik?

Pemodelan statistik memberi Anda kemampuan untuk menilai, memahami, dan membuat prediksi tentang data, ini berada di bagian paling bawah dari statistik inferensial dan dapat dianggap sebagai topik yang "harus diketahui"

Foto Oleh Lukas di Unsplash. comDaftar Isi
  • pengantar
  • Representasi grafis dan plot
  • Memilih fungsi yang tepat
  • Estimasi parameter
  • Penilaian kebaikan seorang prediktor
  • Tes statistik
  • Tes normalitas
pengantar

Dalam analisis statistik, salah satu kemungkinan analisis yang dapat dilakukan adalah memverifikasi bahwa data cocok dengan distribusi tertentu, dengan kata lain, bahwa data “cocok” dengan model teoritis tertentu.

Jenis analisis ini disebut pencocokan distribusi dan terdiri dari menemukan fungsi matematika interpolasi yang mewakili fenomena yang diamati

Contohnya adalah ketika Anda memiliki serangkaian pengamatan 𝑥1,𝑥2,𝑥𝑛… dan Anda ingin memverifikasi apakah pengamatan tersebut berasal dari populasi tertentu yang dijelaskan oleh fungsi kerapatan 𝑓(𝑥,θ), di mana θ adalah vektor parameter untuk

Dalam warna oranye. fungsi linier yang cocok (interpolasi) sekumpulan pengamatan (berwarna biru)

Dua tujuan utama dari analisis statistik adalah untuk mendeskripsikan dan menyelidiki

  • Untuk menggambarkan. perkirakan rata-rata bergerak, hitung data yang hilang...
  • Menginvestigasi. untuk mencari model teoritis yang cocok untuk memulai pengamatan yang kita miliki

Fungsi interpolasi yang berbeda dipasang pada data yang sama

Proses ini dapat dipecah menjadi empat fase

  • Memilih model yang lebih cocok dengan data
  • Estimasi parameter model
  • Hitung "kesamaan" antara model yang dipilih dan model teoretis
  • Terapkan serangkaian uji statistik untuk menilai kebaikan kecocokan
Representasi grafis dan plot

Pendekatan pertama untuk mengeksplorasi data adalah analisis grafis. Menganalisis data secara grafis, dengan histogram, dapat banyak membantu menilai model yang tepat untuk dipilih

Mari menggambar sampel acak berukuran 500, rata-rata 50, dan standar deviasi 2 dan plot histogram

import numpy as npimport matplotlib.pyplot as pltx_norm = np.random.normal(50, 2, 500)plt.hist(x_norm)

Cara lain untuk menampilkan data kami adalah dengan memperkirakan fungsi kepadatan probabilitas

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_

Hanya dengan mengamati representasi tersebut, mungkinkah untuk merumuskan beberapa ide tentang model teoretis yang lebih sesuai dengan data kita. Dimungkinkan juga untuk menghitung fungsi distribusi empiris

plt.plot(np.sort(x_norm), np.linspace(0, 1, len(x_norm)))plt.title(‘Empirical CDF for x_norm’)

Instrumen grafis lain yang dapat membantu adalah plot QQ, yang menunjukkan pada sumbu y kuantil dari data yang diamati VS kuantil teoretis dari model matematika

Dengan istilah kuantil, kami mengidentifikasi bagian pengamatan yang berada di bawah nilai tertentu, kuantil. Misalnya, 0. 75 kuantil (atau 75%) adalah titik di mana 75% data (sampel) berada di bawah nilai ini dan 25% di atas

from scipy import statsstats.probplot(x_norm, plot=plt)

Ketika titik-titik pada plot cenderung terletak pada garis diagonal, itu berarti data (sampel) cocok dengan model Gaussian dengan cara yang "baik".

Jika kita memiliki pengamatan lain, misalnya, fungsi kerapatan Weibull, kita dapat melakukan hal berikut

x_wei = np.random.weibull(2, 500) # A Weibull sample of shape 2and size 500plt.hist(x_wei)
_

Dan plot QQ relatif

stats.probplot(x_wei, plot=plt)

Bentuk pabrik

Edit deskripsi

tanpa henti-pencipta-2481. ck. halaman

Memilih fungsi yang tepat

Kami melihat bahwa dalam beberapa keadaan jenis model (fungsi) dapat dikurangkan dari struktur dan sifat model. Kemudian model dipilih dan kami memverifikasi apakah mengikuti data yang diamati

Dalam kasus lain, representasi grafis dapat membantu. bentuk histogram adalah mungkin untuk mendekati fungsi yang lebih baik mewakili data, bagaimanapun, metode ini dapat dikenakan bias

Metode yang absen dari bias, untuk memilih fungsi yang tepat yang paling cocok dengan data, adalah kriteria Pearson

Kriteria Pearson berasal dari resolusi persamaan diferensial yang “menghasilkan” keluarga dari berbagai jenis fungsi yang mewakili distribusi empiris yang berbeda. Fungsi itu tergantung secara eksklusif pada empat karakteristik yang berbeda

  • berarti
  • perbedaan
  • asimetri
  • kurtosis

Saat menstandarkan distribusi, jenis kurva (fungsi) hanya bergantung pada ukuran asimetri dan kurtosis

Estimasi parameter

Setelah fungsi yang lebih mewakili data dipilih, perlu untuk memperkirakan parameter yang mencirikan model ini berdasarkan data yang tersedia. Beberapa metode yang paling umum termasuk metode penaksir momen, kuadrat terkecil, dan penaksir kemungkinan maksimum. Dalam pengantar ini kita akan menggali metode berikut

  • metode naif
  • metode momen
  • kemungkinan maksimum

Metode naif adalah yang paling dasar dan cukup intuitif. itu terdiri dalam memperkirakan parameter model dengan memperkirakan, misalnya, rata-rata sampel yang diambil dari distribusi normal dengan rata-rata sampel yang diteliti

>>> print(np.mean(x_norm))
50.03732572479421
Metode momen

Metode momen terdiri dari ekspresi momen populasi sebagai fungsi dari parameter yang diminati. Ini kemudian diatur sama dengan momen teoretis yang ditentukan oleh fungsi yang dipilih dan jumlah parameter yang akan diestimasi

Mari kita lihat cara mengatasi masalah ini dengan python

x_gamma = np.random.gamma(3.5, 0.5, 200) # simulate a gamma distribution of shape 3.5 and scale (λ) 0.5mean_x_gamma = np.mean(x_gamma) # mean of the datavar_x_gamma = np.var(x_gamma) # variance of the datal_est = mean_x_gamma / var_x_gamma # lambda estimation (rate)a_est = (mean_x_gamma ** 2) / l_est # alpha estimationprint(‘Lambda estimation: {}’.format(l_est))print(‘Alpha estimation: {}’.format(a_est))Lambda estimation: 2.25095711229392 
Alpha estimation: 1.2160321117648123
Metode kemungkinan maksimum

Metode kemungkinan maksimum adalah metode yang digunakan dalam statistik inferensial. Dimulai dengan memiliki fungsi kerapatan 𝑓(𝑥,θ). Ini terdiri dari memperkirakan θ dengan memaksimalkan fungsi kemungkinannya atau, dalam praktiknya, seringkali nyaman untuk bekerja dengan logaritma natural dari fungsi kemungkinan, yang disebut log-likelihood

Mari kita lihat aksinya

# generate datax = np.linspace(0,20, len(x_gamma))y = 3*x + x_gammaimport statsmodels.api as smols = sm.OLS(y, x_gamma).fit()print(ols.summary())
_

Paket yang sangat berguna adalah paket

plt.plot(np.sort(x_norm), np.linspace(0, 1, len(x_norm)))plt.title(‘Empirical CDF for x_norm’)
_1, yang secara default memperkirakan distribusi dari mana sampel diambil. Ini cukup berguna karena tidak diperlukan untuk mengetahui fungsi kemungkinan, tetapi cukup hanya menentukan sampel dan daftar distribusi untuk diuji dapat diteruskan

#!pip install fitterfrom fitter import Fitterf = Fitter(x_gamma, distributions=[‘gamma’, ‘dweibull’, ‘uniform’])f.fit()f.summary()

Penilaian kebaikan seorang prediktor

Penilaian kebaikan suatu prediktor (fungsi biaya, fungsi kerugian) diperlukan untuk mengevaluasi seberapa baik perkiraan antara data yang diamati dan data yang dihitung (diprediksi) oleh model. Oleh karena itu, fungsi kerugian, menghitung perbedaan antara data empiris dan yang diamati, harus memberikan bobot yang sama untuk kesalahan dengan besaran yang sama tetapi tanda yang berbeda dan harus meningkat ketika kesalahan meningkat. Fungsi kerugian bisa relatif atau absolut. Di antara fungsi kerugian paling umum yang bisa kita miliki

Dimana 𝑦 adalah nilai observasi dan 𝑦̂ nilai teoritis (prediksi). Seringkali, nilai tersebut dikalikan dengan 100 untuk menyatakan nilai dalam bentuk persentase

Mari kita lihat contoh dari sampel yang diambil dari distribusi Poisson

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_0

Contoh lain menilai kebaikan prediktor dapat dilakukan dengan tumpang tindih fungsi densitas dengan data

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_1

Tes statistik

Dimungkinkan untuk melakukan uji statistik yang berbeda untuk menilai kebaikan kecocokan, yang berarti seberapa baik model teoretis cocok dengan data. Tes-tes tersebut memperhitungkan sampel berdasarkan sudut pandang "global", dengan mempertimbangkan semua karakteristik sampel yang diteliti (rata-rata, varians, bentuk distribusi ...) dan distribusi-agnostik, yang berarti tidak tergantung pada

Tes pertama yang dianalisis, untuk menilai kebaikan kesesuaian adalah χ2 (chi-kuadrat). Ini didasarkan pada perbandingan antara frekuensi empiris (frekuensi yang diharapkan) dan frekuensi yang diamati, dibangun di atas fungsi kerapatan yang diinginkan. χ2 dapat digunakan baik untuk variabel diskrit maupun kontinu dan rumus matematisnya adalah sebagai berikut

Dimana 𝑂𝑖 adalah frekuensi teramati, 𝐸𝑖 frekuensi teoretis dan 𝑘 jumlah kelas atau interval. Statistik ini terdistribusi secara asimtotik di sekitar variabel acak dalam denominasi χ2 dengan derajat kebebasan 𝑘−𝑝−1, di mana 𝑝 adalah jumlah parameter yang diestimasi oleh model

Hipotesis nol ditolak ketika nilai statistik turun di bawah ambang batas tertentu, sehingga ketika nilai-p lebih tinggi dari tingkat signifikansi yang telah ditetapkan sebelumnya

Tes ini valid dalam kondisi berikut

  • sampel harus cukup besar (karena distribusi asimtotik χ2)
  • Jumlah frekuensi yang diharapkan untuk setiap kelas tidak boleh kurang dari 5
  • Diperlukan untuk menerapkan koreksi Yates untuk kontinuitas (koreksi kontinuitas), yang terdiri dari mengurangkan 0. 5 dari perbedaan antara setiap nilai yang diamati dan nilai yang diharapkan. 𝑂𝑖−𝐸𝑖

Mari kita lihat bagaimana menerapkannya

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_2

Dalam kasus variabel kontinu, dalam hal ini berasal dari distribusi gamma, dengan parameter yang diperkirakan dari data yang diamati, dapat dilakukan sebagai berikut

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_3

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_4

Hipotesis nol untuk uji chi-square adalah bahwa tidak ada hubungan antara frekuensi yang diamati dan yang diharapkan, namun dalam kasus ini, nilai-p kurang dari tingkat signifikansi 0. 05, dengan demikian kami menolak hipotesis nol

Uji statistik lain yang banyak digunakan adalah uji Goodness of fit Kolmogorov-Smirnov. Tes ini adalah tes non-parametrik yang dapat digunakan baik untuk data diskrit, data kontinyu binned di kelas (Namun, beberapa penulis tidak setuju dengan hal ini), dan variabel kontinyu. Pengujian ini didasarkan pada perbandingan jarak antara fungsi distribusi empiris dari data dan fungsi distribusi kumulatif dari distribusi yang bersangkutan

Uji Kolmogorov-Smirnov lebih kuat daripada uji chi-kuadrat bila ukuran sampel tidak terlalu besar. Untuk sampel ukuran besar, kedua tes memiliki kekuatan yang sama. Keterbatasan paling serius dari uji Kolmogorov-Smirnov adalah bahwa distribusi harus ditentukan sepenuhnya, yaitu parameter lokasi, skala, dan bentuk tidak dapat diperkirakan dari sampel. Karena keterbatasan tersebut, terkadang lebih disukai menggunakan tes Anderson-Darling. Namun, tes Anderson-Darling hanya tersedia untuk sekumpulan kecil distribusi

Dengan Python, kita dapat melakukan tes ini menggunakan

plt.plot(np.sort(x_norm), np.linspace(0, 1, len(x_norm)))plt.title(‘Empirical CDF for x_norm’)
_2, mari kita terapkan pada dua sampel dari Poisson
plt.plot(np.sort(x_norm), np.linspace(0, 1, len(x_norm)))plt.title(‘Empirical CDF for x_norm’)
3dengan parameter
plt.plot(np.sort(x_norm), np.linspace(0, 1, len(x_norm)))plt.title(‘Empirical CDF for x_norm’)
4dari 0. 6

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_5

Untuk pengujiannya, hipotesis nol menyatakan bahwa tidak ada perbedaan antara kedua distribusi, sehingga keduanya berasal dari distribusi yang sama. Dalam hal ini, p-nilai 0. 68 gagal menolak hipotesis nol, dengan kata lain sampel berasal dari distribusi yang sama

Tapi mari kita lihat antara Poisson dan sampel normal

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_6

Sebaliknya, dalam hal ini, nilai p lebih kecil dari tingkat signifikansi 0. 05, dan ini menunjukkan bahwa kita dapat menolak hipotesis nol, sehingga kedua sampel tersebut berasal dari dua distribusi yang berbeda

Kami juga dapat membandingkan kedua CDF secara grafis

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_7

Tes Normalitas

Tantangan lain yang dapat terjadi adalah untuk memverifikasi jika sampel yang dikumpulkan berasal dari distribusi normal, untuk ini ada keluarga uji yang disebut uji normalitas. Salah satu uji normalitas yang paling ampuh adalah uji Shapiro-Wilk, yang juga bekerja sangat baik pada sampel kecil. Normalitas diuji dengan mencocokkan dua estimasi varians alternatif. estimator non-parametrik, dihitung dengan kombinasi linear dari nilai sampel terurut, dan estimator parametrik

plt.plot(np.sort(x_norm), np.linspace(0, 1, len(x_norm)))plt.title(‘Empirical CDF for x_norm’)
5 juga menyediakan cara untuk melakukan tes ini

from scipy.stats.kde import gaussian_kdefrom numpy import linspace# estimate the probability density function (PDF)kde = gaussian_kde(x_norm)# return evenly spaced numbers over a specified intervaldist_space = linspace(min(x_norm), max(x_norm), 100)# plot the resultsplt.plot(dist_space, kde(dist_space))
_8

Hipotesis nol yang diuji (H0) adalah bahwa data diambil dari distribusi normal, memiliki nilai p (0. 188), dalam hal ini, kami gagal menolaknya, menyatakan sampel berasal dari distribusi normal

Mengapa Python bagus untuk statistik?

Tidak ada pilihan yang salah dalam mempelajari Python atau R. Keduanya merupakan keahlian yang dibutuhkan dan akan memungkinkan Anda melakukan hampir semua tugas analitik data yang akan Anda temui. . Kekuatan dan kelemahan

Apakah Python digunakan untuk analisis statistik?

Python sudah ada sejak 1991. Ini adalah salah satu bahasa pemrograman terbaik yang banyak digunakan dalam analitik data . Mudah digunakan, cepat, dan memanipulasi data dengan mulus. Ini mendukung berbagai aktivitas analitik data seperti pengumpulan data, analisis, pemodelan, dan visualisasi.

Apakah Python alat statistik?

Python adalah bahasa tujuan umum dengan modul statistik . R memiliki lebih banyak fitur analisis statistik daripada Python, dan sintaks khusus.