Hàm NumPy np.std
nhận một tham số tùy chọn ddof
: "Delta Degrees of Freedom". Theo mặc định, đây là 0
. Đặt nó thành 1
để nhận kết quả MATLAB:
>>> np.std([1,3,4,6], ddof=1)
2.0816659994661326
Để thêm một chút ngữ cảnh, trong phép tính phương sai (trong đó độ lệch chuẩn là căn bậc hai), chúng ta thường chia cho số giá trị chúng ta có.
Nhưng nếu chúng ta chọn một mẫu ngẫu nhiên của N
các phần tử từ một phân phối lớn hơn và tính phương sai, phép chia cho N
có thể dẫn đến đánh giá thấp phương sai thực tế. Để khắc phục điều này, chúng ta có thể hạ thấp số chúng ta chia cho ( bậc tự do ) xuống một số nhỏ hơn N
(thông thường N-1
). Các ddof
tham số cho phép chúng ta thay đổi số chia bởi số lượng chúng tôi chỉ định.
Trừ khi được quy định khác, NumPy sẽ tính toán công cụ ước lượng chệch cho phương sai ( ddof=0
, chia cho N
). Đây là những gì bạn muốn nếu bạn đang làm việc với toàn bộ phân phối (chứ không phải một tập hợp con các giá trị đã được chọn ngẫu nhiên từ một phân phối lớn hơn). Nếu ddof
tham số được đưa ra, N - ddof
thay vào đó NumPy sẽ chia cho .
Hành vi mặc định của MATLAB std
là sửa sai lệch cho phương sai mẫu bằng cách chia cho N-1
. Điều này giúp loại bỏ một số (nhưng có lẽ không phải tất cả) sai lệch trong độ lệch chuẩn. Đây có thể là những gì bạn muốn nếu bạn đang sử dụng hàm trên một mẫu ngẫu nhiên của một phân phối lớn hơn.
Câu trả lời hay của @hbaderts cung cấp thêm chi tiết toán học.
std([1 3 4 6],1)
tương đương với mặc định của NumPynp.std([1,3,4,6])
. Tất cả điều này được giải thích khá rõ ràng trong tài liệu dành cho Matlab và NumPy, vì vậy tôi thực sự khuyên OP nên đọc những tài liệu đó trong tương lai.