Saya memiliki data sampel yang ingin saya hitung interval kepercayaannya, dengan asumsi distribusi normal.
Saya telah menemukan dan menginstal paket numpy dan scipy dan mendapatkan numpy untuk mengembalikan mean dan deviasi standar (numpy.mean (data) dengan data menjadi daftar). Setiap saran tentang mendapatkan interval kepercayaan sampel akan sangat dihargai.
python
numpy
statistics
confidence-interval
Bmayer0122
sumber
sumber
Jawaban:
Anda bisa menghitung seperti ini.
sumber
scipy
tidak selalu mengimpor semua subpaket secara otomatis. Lebih baik mengimpor sub-paketscipy.stats
secara eksplisit.sp.stats.t._ppf
. Saya tidak nyaman dengan itu di sana tanpa penjelasan lebih lanjut. Lebih baik gunakansp.stats.t.ppf
secara langsung, kecuali Anda yakin tahu apa yang Anda lakukan. Pada pemeriksaan cepat sumber ada cukup banyak kode yang dilewati_ppf
. Mungkin jinak, tetapi juga upaya pengoptimalan yang tidak aman?*ss.t._ppf((1+conf)/2.,n-1)
bingkai.sem
data panda bawaan sehingga Anda tidak perlu khawatirapply
Berikut adalah versi singkat dari kode shasan, menghitung interval kepercayaan 95% dari mean array
a
:Tetapi menggunakan StatsModels '
tconfint_mean
bisa dibilang lebih bagus:Asumsi yang mendasari keduanya adalah bahwa sampel (larik
a
) diambil secara independen dari distribusi normal dengan deviasi standar yang tidak diketahui (lihat MathWorld atau Wikipedia ).Untuk ukuran sampel besar n, mean sampel terdistribusi normal, dan seseorang dapat menghitung interval kepercayaannya menggunakan
st.norm.interval()
(seperti yang disarankan dalam komentar Jaime). Tetapi solusi di atas juga benar untuk n kecil, di manast.norm.interval()
memberikan interval kepercayaan yang terlalu sempit (yaitu, "kepercayaan palsu"). Lihat jawaban saya untuk pertanyaan serupa untuk lebih jelasnya (dan salah satu komentar Russ di sini).Berikut adalah contoh di mana opsi yang benar memberikan (pada dasarnya) interval kepercayaan yang identik:
Dan akhirnya, hasil yang salah menggunakan
st.norm.interval()
:sumber
st.t.interval(0.05)
untuk mendapatkan interval kepercayaan 95%.st.t.interval(0.95)
benar untuk interval kepercayaan 95%, lihat dokumen untukscipy.stats.t
. SciPy menyebutkan argumen tersebutalpha
tampaknya kurang dari ideal.Mulailah dengan mencari nilai z untuk interval kepercayaan yang Anda inginkan dari tabel pencarian . Interval kepercayaan kemudian
mean +/- z*sigma
, di manasigma
perkiraan deviasi standar rata-rata sampel Anda, diberikan olehsigma = s / sqrt(n)
, di manas
deviasi standar dihitung dari data sampel dann
ukuran sampel Anda.sumber
scipy.stats.norm.interval(confidence, loc=mean, scale=sigma)
sigma
.sigma
dalam jawaban saya harus perkiraan deviasi standar rata-rata sampel, bukan deviasi standar perkiraan distribusi. Saya telah memperbarui jawaban untuk mengklarifikasi itu. Terima kasih telah menunjukkannya.Memulai
Python 3.8
, pustaka standar menyediakanNormalDist
objek sebagai bagian daristatistics
modul:Ini:
Membuat
NormalDist
objek dari sampel data (NormalDist.from_samples(data)
, yang memberi kita akses ke mean sampel dan deviasi standar melaluiNormalDist.mean
danNormalDist.stdev
.Hitung
Z-score
berdasarkan pada distribusi normal standar (diwakili olehNormalDist()
) untuk kepercayaan yang diberikan menggunakan kebalikan dari fungsi distribusi kumulatif (inv_cdf
).Menghasilkan interval kepercayaan berdasarkan deviasi standar dan mean sampel.
Ini mengasumsikan ukuran sampel cukup besar (katakanlah lebih dari ~ 100 poin) untuk menggunakan distribusi normal standar daripada distribusi t siswa untuk menghitung
z
nilai.sumber