Cara menghitung mean, median, mode, std dev dari distribusi

9

Bagaimana cara menghitung mean, varians, median, standar deviasi dan modus dari distribusi? Jika saya secara acak menghasilkan angka yang membentuk distribusi normal, saya telah menetapkan mean sebagai m=24.2standar deviasi seperti sd=2.2:

> dist = rnorm(n=1000, m=24.2, sd=2.2)

Maka saya bisa melakukan hal berikut:

Berarti:

> mean(dist)
[1] 24.17485

Perbedaan:

> var(dist)
[1] 4.863573

Median:

> median(dist)
[1] 24.12578

Standar deviasi:

> sqrt(var(dist))
[1] 2.205351

Mode alias Modus (diambil dari sini ):

> names(sort(-table(dist)))[1]
[1] "17.5788181686221"
  1. Apakah ini seluruh keajaiban, atau ada hal lain yang tidak saya sadari?
  2. Dapatkah saya memvisualisasikan distribusi normal berbentuk lonceng saya dengan garis vertikal yang mewakili (rata-rata, median ...)?
  3. Apa yang dikatakan atribut-atribut tersebut tentang distribusi?

PS: kode dalam R

Wakan Tanka
sumber
Tidak jelas apa yang Anda maksud dengan pertanyaan Anda 1. Pertanyaan 3 tampaknya terlalu luas, karena orang bisa menulis banyak tentang masing-masing pertanyaan. Bisakah Anda meninjau halaman wikipedia tentang mean, median, standar deviasi dan mode, dan kemudian bertanya sesuatu yang lebih spesifik?
Glen_b -Reinstate Monica
Juga, judul Anda berbicara tentang "distribusi" tetapi teks tubuh Anda tampaknya merujuk pada sampel . Haruskah judul Anda merujuk pada sampel?
Glen_b -Reinstate Monica
@ Glen_b oleh 1 saya maksudkan bahwa jika metode yang saya posting OK untuk menghitung parameter (rata-rata, varians ...) untuk distribusi atau sesuatu yang lain atau entah bagaimana berbeda harus digunakan? 3 Saya tidak menyadari bahwa itu terlalu luas, saya mengharapkan jawaban seperti: jika median lebih besar dari rata-rata maka data Anda .... Mengenai retitling mungkin OK, memang saya bekerja dengan distribusi normal atau apakah saya salah?
Wakan Tanka
Maaf, saya tidak bisa mengikuti komentar Anda sama sekali.
Glen_b -Reinstate Monica
Anda tidak perlu membuang variabel kontinu sebelum dapat memperkirakan modenya. Lihat stats.stackexchange.com/questions/176112/... untuk diskusi. (Anda harus menghindari binning karena bergantung pada pilihan lebar dan asal bin yang sewenang-wenang.)
Nick Cox

Jawaban:

10

Pertama komentar umum pada mode:

Anda tidak boleh menggunakan pendekatan itu untuk mendapatkan mode (setidaknya secara nosional) data yang didistribusikan terus menerus; Anda tidak mungkin memiliki nilai berulang (kecuali jika Anda memiliki sampel yang sangat besar itu akan menjadi keajaiban kecil, dan bahkan kemudian berbagai masalah numerik dapat membuatnya berperilaku dengan cara yang agak tak terduga), dan umumnya Anda hanya akan mendapatkan nilai minimum yang cara. Ini akan menjadi salah satu cara untuk menemukan salah satu mode global dalam data diskrit atau kategorikal, tetapi saya mungkin tidak akan melakukannya dengan cara itu. Berikut adalah beberapa pendekatan lain untuk mendapatkan mode data diskrit atau kategorikal:

x = rpois(30,12.3)

tail(sort(table(x)),1)   #1: category and count; if multimodal this only gives one

w=table(x); w[max(w)==w] #2: category and count; this can find more than one mode

which.max(table(x))      #3: category and *position in table*; only finds one mode

Jika Anda hanya menginginkan nilai dan bukan hitungan atau posisi, names()akan mendapatkannya dari itu

Untuk mengidentifikasi mode (mungkin ada lebih dari satu mode lokal) untuk data kontinu dalam mode dasar, Anda bisa menampar data (seperti dengan histogram) atau Anda dapat memuluskannya (menggunakan densitymisalnya) dan mencoba menemukan satu atau lebih mode seperti itu.

Jumlah histogram yang lebih sedikit akan membuat estimasi mode Anda lebih sedikit noise, tetapi lokasi tidak akan disematkan menjadi lebih baik daripada lebar bin (yaitu Anda hanya mendapatkan interval). Lebih banyak tempat sampah memungkinkan lebih banyak presisi dalam sebuah tempat sampah, tetapi suara dapat membuatnya melompati banyak tempat sampah seperti itu; perubahan kecil dalam asal-usul atau lebar nampan dapat menghasilkan perubahan mode yang relatif besar. (Ada tradeoff varians yang sama di seluruh statistik.)

Catatan yang summaryakan memberi Anda beberapa statistik dasar.

[Anda harus menggunakan sd(x)daripada sqrt(var(x)); lebih jelas untuk satu hal]

-

Sehubungan dengan q.2 ya; Anda tentu bisa menunjukkan rata-rata dan median data pada tampilan seperti histogram atau plot kotak. Lihat di sini untuk beberapa contoh dan kode yang harus dapat digeneralisasi untuk kasus apa pun yang Anda butuhkan.

Glen_b -Reinstate Monica
sumber
Terima kasih, bisakah Anda menjelaskan perbedaan antara penjilidan dan penghalusan?
Wakan Tanka
@Wakan Apa yang mengikat?
Glen_b -Reinstate Monica
1
Sangat bermanfaat. Sangat mengejutkan bahwa Proyek R tidak menjadikan ini sebagai fungsi dasar.
Hack-R
7

Beberapa statistik deskriptif tambahan tambahan dan tidak terlalu terkenal.

x<-rnorm(10)

sd(x) #Standard deviation

fivenum(x) #Tukey's five number summary, usefull for boxplots

IQR(x) #Interquartile range

quantile(x) #Compute sample quantiles

range(x) # Get minimum and maximum

Saya yakin Anda dapat menemukan banyak lainnya di salah satu Rmanual yang tersedia secara bebas .

JohnK
sumber
Bisakah Anda memposting beberapa situasi ketika Anda telah menggunakannya (fivenum, IQR, quantile ...) dan itu berguna?
Wakan Tanka
0

Seperti yang dijelaskan @Glen_b mode distribusi kontinu tidak semudah untuk vektor bilangan bulat.

Kode R ini akan mendapatkan mode untuk distribusi kontinu, menggunakan fungsi yang sangat berguna hist()dari basis R. Seperti yang dijelaskan @Glen_b ini melibatkan memasukkan pengamatan ke dalam sampah - kategori diskrit di mana jika pengamatan berada dalam interval bin, itu dihitung sebagai turunan dari bin itu, yang mengatasi masalah itu menjadi sangat tidak mungkin dalam distribusi kontinu untuk mengamati nilai yang sama persis dua kali.

set.seed(123)
dist <- rnorm(n=1000, m=24.2, sd=2.2)
h <- hist(dist, # vector
          plot = F, # stops hist() from automatically plotting histogram
          breaks = 40) # number of bins

Sekarang kita memperlakukan titik tengah interval bin yang memiliki jumlah maksimum di dalamnya sebagai mode

h$mids[which.max(h$counts)] 

# [1] 23.75

Voila! Mode.

ps Anda juga bisa memperlakukan awal interval sebagai mode via h$breaks[which.max(h$counts)]. Karena mode yang didiskusikan untuk distribusi kontinu tidak sederhana dan memerlukan keputusan untuk dibuat, maka mengapa tidak ada fungsi sederhana untuk mereka seperti ada bersama mean()danmedian()

llewmills
sumber
Jadi ini bermula untuk mengatakan bahwa untuk menemukan mode Anda menemukan bin paling sering terjadi. Apa yang Anda lakukan ketika ada ikatan? Bagaimana Anda memilih tempat sampah secara sistematis?
Nick Cox
Ini adalah pertanyaan yang sangat bagus @Nick Cox? Ingin tahu jawabannya. Saya kira Anda akan membutuhkan aturan ketika ada ikatan.
llewmills