我有一个数据集,想使它们服从均匀分布并使用 Matlab 计算拟合优度。但是,我发现 uniform 不包含在函数“fitdist”中。有没有在Matlab中进行均匀分布拟合的方法?
最佳答案
当您说您想要使数据集适应制服时,我假设您的意思是您想要估计最适合您的数据集的均匀分布的参数。
这其实是一个很有趣的问题。 fitdist
没有帮助我并不感到惊讶,因为统一分布有点特殊。例如,可以证明在某些情况下,均匀分布参数的最大似然估计不存在,而在其他情况下,没有唯一解。
那么,怎么办?好吧,均匀分布有两个参数,a
和 b
,它们定义了密度的下限和上限。让 X
表示您的数据集(例如,观察值的列向量)。 a
和 b
的朴素估计是:
a = min(X);
b = max(X);
当然,这些估计几乎肯定会高估(对于a
)和低估(对于b
)真实参数,因为随机的不太可能从密度中抽取的样本将恰好落在边界上。
对于已知a
为0的情况,b
的最小方差无偏估计量为:
b = max(X) + (max(X) / length(X))
这个估算器与著名的German Tank Problem有关.对于一般情况,我实际上并不知道任何估计理论(尽管我确定一定有一些)。我的第一个猜测是使用朴素的最小/最大估计器,但减去并加上数据集中观察值之间的平均距离,即:
a = min(X) - c;
b = max(X) + c;
在哪里
c = (max(X) - min(X)) / length(X)
至于拟合优度,希望 SO 上的其他人知道一些事情,因为我需要自己做一些研究才能回答这个问题。祝你好运!
关于matlab - matlab中的均匀分布拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996380/