Fungsi NumPy np.std
mengambil parameter opsional ddof
: "Delta Degrees of Freedom". Secara default, ini 0
. Setel 1
untuk mendapatkan hasil MATLAB:
>>> np.std([1,3,4,6], ddof=1)
2.0816659994661326
Untuk menambahkan lebih banyak konteks, dalam perhitungan varians (yang deviasinya standarnya adalah akar kuadrat) kita biasanya membagi dengan jumlah nilai yang kita miliki.
Tetapi jika kita memilih sampel acak dari N
elemen dari distribusi yang lebih besar dan menghitung varians, pembagian dengan N
dapat menyebabkan perkiraan varian yang sebenarnya terlalu rendah. Untuk mengatasinya, kita dapat menurunkan angka yang kita bagi ( derajat kebebasan ) ke angka yang kurang dari N
(biasanya N-1
). The ddof
Parameter memungkinkan kita mengubah pembagi dengan jumlah yang kita tentukan.
Kecuali diberitahu sebaliknya, NumPy akan menghitung penduga bias untuk varians ( ddof=0
, dibagi dengan N
). Inilah yang Anda inginkan jika Anda bekerja dengan seluruh distribusi (dan bukan subset nilai yang telah diambil secara acak dari distribusi yang lebih besar). Jika ddof
parameter diberikan, NumPy akan membagi dengan N - ddof
.
Perilaku default MATLAB std
adalah memperbaiki bias untuk varians sampel dengan membaginya dengan N-1
. Ini menghilangkan beberapa (tapi mungkin tidak semua) bias dalam standar deviasi. Ini mungkin yang Anda inginkan jika Anda menggunakan fungsi tersebut pada sampel acak dari distribusi yang lebih besar.
Jawaban bagus dari @hbaderts memberikan detail matematis lebih lanjut.
std([1 3 4 6],1)
setara dengan default NumPynp.std([1,3,4,6])
. Semua ini cukup jelas dijelaskan dalam dokumentasi untuk Matlab dan NumPy, jadi saya sangat menyarankan OP untuk membaca itu di masa mendatang.