2013-10-26 34 views
6

random.gauss (mu, sigma)Làm thế nào để tạo ra một phân phối với một trung bình nhất định, phương sai, nghiêng và kurtosis trong Python?

Trên đây là một chức năng cho phép để vẽ một cách ngẫu nhiên một số từ phân phối chuẩn với trung bình đưa ra và sai. Nhưng làm thế nào chúng ta có thể rút ra các giá trị từ một phân phối bình thường được xác định bởi hơn hai khoảnh khắc đầu tiên?

cái gì đó như:

random.gauss (mu, sigma, nghiêng, nhọn)

+4

Mọi phân phối bình thường đều nghiêng 0 và kurtosis 0. Sử dụng một nhóm bản phân phối khác. –

+1

Hãy cẩn thận, có một số cách để xác định phép tính cho skew và kurtosis. Khoảnh khắc không tương đương với ý nghĩa, phương sai, nghiêng, và kurtosis, mặc dù chúng có cùng ý chính. –

+2

Ngoài ra, những khoảnh khắc không chỉ định phân phối duy nhất. Xem [câu hỏi tương tự này nhưng hỏi về R: http://stackoverflow.com/questions/4807398/how-to-generate-distributions-given-mean-sd-skew-and-kurtosis-in-r –

Trả lời

1

Cố gắng sử dụng này:

http://statsmodels.sourceforge.net/devel/generated/statsmodels.sandbox.distributions.extras.pdf_mvsk.html#statsmodels.sandbox.distributions.extras.pdf_mvsk

Return các Gaussian chức năng pdf mở rộng được đưa ra trong danh sách thời điểm 1, 2 và nghiêng và Fisher (dư thừa) kurtosis.

Tham số: mvsk: danh sách các mu, mc 2, nghiêng, Kurt

Trông tốt với tôi. Có một liên kết đến nguồn trên trang đó.

Oh, và đây là câu hỏi StackOverflow khác mà chỉ cho tôi có: Apply kurtosis to a distribution in python

+0

Có thuận tiện không cách để vẽ các giá trị từ phân phối này, thay vì chỉ tính toán mật độ? – kuzzooroo

+0

mc2 có ý nghĩa gì ở đây? tôi dự đoán phương sai, nhưng chỉ muốn chắc chắn. –

4

Làm thế nào về việc sử dụng scipy? Bạn có thể chọn phân phối bạn muốn từ continuous distributions in the scipy.stats library.

Chức năng gamma tổng quát có độ lệch bằng không và kurtosis, nhưng bạn sẽ có một ít việc phải làm để tìm ra tham số nào để sử dụng để xác định phân phối để có được giá trị trung bình, sai lệch, sai lệch và kurtosis. Dưới đây là một số mã để giúp bạn bắt đầu.

import scipy.stats 
import matplotlib.pyplot as plt 
distribution = scipy.stats.norm(loc=100,scale=5) 
sample = distribution.rvs(size=10000) 
plt.hist(sample) 
plt.show() 
print distribution.stats('mvsk') 

này sẽ hiển thị một biểu đồ của một mẫu 10.000 phần tử từ một phân phối chuẩn với trung bình 100 và phương sai 25, và in số liệu thống kê của phân phối:

(array(100.0), array(25.0), array(0.0), array(0.0))

Thay thế phân phối chuẩn với gamma tổng quát phân phối,

distribution = scipy.stats.gengamma(100, 70, loc=50, scale=10) 

bạn nhận thống kê [mean, variance, skew, kurtosis] (array(60.67925117494595), array(0.00023388203873597746), array(-0.09588807605341435), array(-0.028177799805207737)).

Các vấn đề liên quan