how to develop a zero inflated weibull distribution in matlab

7 views (last 30 days)
Hey, I am trying to fit a weibull distribution to my dataset which consist of hourly wind speed. However when i plot my pdf, it is clear that there is an excessive amount of zeros within the data. This maybe since the value may have been too small to record. Does anyone have any idea how to handle zero inflation on a dataset or how to fit a zero inflated weibull distribution?
  1 Comment
vedesh Mohit
vedesh Mohit on 3 Apr 2018
Hey Jeff Miller, I excluded the zeros in the doc("original_data") and then I fitted the weibull distribution to the non zero terms. How do I "After you do this, you should verify that the fitted parameters predict about the right proportion of values below the truncation point (i.e., comparable to the percentage of zeros in your original data)."

Sign in to comment.

Accepted Answer

Jeff Miller
Jeff Miller on 1 Apr 2018
1. You might replace the zeros with some small nonzero value (e.g., half-way between 0 and the smallest value that can be recorded).
2. Exclude the zeros and fit a truncated Weibull to the remaining data (with a lower truncation point being the smallest value that can be recorded). After you do this, you should verify that the fitted parameters predict about the right proportion of values below the truncation point (i.e., comparable to the percentage of zeros in your original data).
  1 Comment
John D'Errico
John D'Errico on 1 Apr 2018
I'd think of this as sort of a mixture distribution.
Thus, with probability p, you have a sample from a discrete distribution that always takes on the value zero. With probability 1-p, you have a sample from a Weibull. You can estimate p from the number of samples that were exactly zero, because the Weibull will never yield exactly zero. Or, you can do a bit better and estimate p, along with the Weibull parameters using MLE to fit that mixture distribution.

Sign in to comment.

More Answers (1)

Vitaly Kheyfets
Vitaly Kheyfets on 8 May 2018
I am not sure your original dataset would be considered zero-inflated. Yes, it has some zeros, but if you consider the zero as just another measurement, then the data still appears (roughly) normally distributed.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!