Finding the mean in a Cumulative Distribution Function
显示 更早的评论
First off, I am working with data from an excel file and trying to model this data as accurately as possible. My function for the model is:F(t)=1-exp(-t/u). Furthermore, it turns out that F(t) is just the cumulative function of f(x)=(1/u)*exp(-x/u). Secondly, F(t) is one column of data in excel file, u is the mean, while t is another column representing time. Essentially, I can plot the exact data on matlab alongside this function F(t) which appears to be a cumulative distribution function. How do I find the mean using matlab? Thank you
5 个评论
bym
2011-7-18
@ Oleg deleted my answer referencing expfit based upon you comment. Thanks
Oleg Komarov
2011-7-18
@ proecsm: but your answer was correct because you wrote expfit(t) % where t is from F(t), so if he has t he can still fit it.
Thomas
2011-7-19
Thomas
2011-7-19
Oleg Komarov
2011-7-20
Is your input data t? If yes just expfit(t).
回答(1 个)
bym
2011-7-19
Here is a not very robust algorithm, but might give you some ideas. Basically it finds where the CDF crosses the 63.2% (mean value for exponential distribution) and outputs the corresponding t. Sometimes it outputs an empty matrix and sometimes more than 1 value, which would have to be adjusted for your data set.
x=1:100; % simulated t
y = expcdf(x,20); % simulated F(t), mu = 20
ynorm = y./max(y); % normalize
tol = 1./(2*max(x)); % tolerance (might have to adjust)
idx = find(y>.6321-tol & y<.6321+tol);
mu = x(idx)
3 个评论
Oleg Komarov
2011-7-20
Why 63.2?
bym
2011-7-20
mean of exponential distribution is where it crosses 63.2% (1-1/e), not 50% like a normal
Oleg Komarov
2011-7-21
Isn't the mean the lambda^-1 or in OP's case 1/u which is exactly what he's trying to find?
类别
在 帮助中心 和 File Exchange 中查找有关 Exploration and Visualization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!