2013-07-30 103 views
9

Có phải trường hợp dẫn xuất chính xác của hàm mật độ tích lũy là hàm mật độ xác suất (PDF) không? Tôi tính toán đạo hàm bằng cách sử dụng numpy.diff(), điều này có đúng không? Xem bên dưới mã bên dưới:Tính đạo hàm của hàm mật độ tích lũy trong Python

import scipy.stats as s 
import matplotlib.pyplot as plt 
import numpy as np 

wei = s.weibull_min(2, 0, 2) # shape, loc, scale - creates weibull object 
sample = wei.rvs(1000) 
shape, loc, scale = s.weibull_min.fit(sample, floc=0) 

x = np.linspace(np.min(sample), np.max(sample)) 

plt.hist(sample, normed=True, fc="none", ec="grey", label="frequency") 
plt.plot(x, wei.cdf(x), label="cdf") 
plt.plot(x, wei.pdf(x), label="pdf") 
plt.plot(x[1:], np.diff(wei.cdf(x)), label="derivative") 
plt.legend(loc=1) 
plt.show() 

Compariosn of CDF, PDF and derivative

Nếu vậy, làm thế nào để mở rộng quy mô đạo hàm là tương đương với PDF?

Trả lời

6

Đạo hàm của CDF là PDF.

Dưới đây là một xấp xỉ của đạo hàm của CDF:

dx = x[1]-x[0] 
deriv = np.diff(wei.cdf(x))/dx 

import scipy.stats as s 
import matplotlib.pyplot as plt 
import numpy as np 

wei = s.weibull_min(2, 0, 2) # shape, loc, scale - creates weibull object 
sample = wei.rvs(1000) 
shape, loc, scale = s.weibull_min.fit(sample, floc=0) 

x = np.linspace(np.min(sample), np.max(sample)) 
dx = x[1]-x[0] 
deriv = np.diff(wei.cdf(x))/dx 
plt.hist(sample, normed=True, fc="none", ec="grey", label="frequency") 
plt.plot(x, wei.cdf(x), label="cdf") 
plt.plot(x, wei.pdf(x), label="pdf") 
plt.plot(x[1:]-dx/2, deriv, label="derivative") 
plt.legend(loc=1) 
plt.show() 

sản lượng

enter image description here

Lưu ý rằng x-locations gắn liền với deriv đã được chuyển bởi dx/2 do đó xấp xỉ là trung tâm giữa các giá trị được sử dụng để tính toán nó.

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