【发布时间】:2012-10-11 08:59:06
【问题描述】:
我有一个数据集,希望将它们拟合到均匀分布并使用 Matlab 计算拟合优度。但是,我发现制服不包含在函数“fitdist”中。 Matlab有什么方法可以做均匀分布拟合吗?
【问题讨论】:
-
我只是想知道我的回答对你有用吗?如果没有,请告诉我原因,也许我可以改进它。干杯。
标签: matlab distribution model-fitting
我有一个数据集,希望将它们拟合到均匀分布并使用 Matlab 计算拟合优度。但是,我发现制服不包含在函数“fitdist”中。 Matlab有什么方法可以做均匀分布拟合吗?
【问题讨论】:
标签: matlab distribution model-fitting
当您说您希望将数据集拟合到均匀分布时,我假设您的意思是您希望估计最适合您的数据集的均匀分布的参数。
这实际上是一个非常有趣的问题。 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 上的其他人知道一些事情,因为我需要自己做一些研究来回答这个问题。祝你好运!
【讨论】:
根据 Colin 的回答,可以使用 Pearson's chi-squared test 计算均匀分布的拟合优度。
如果您可以访问 Matlab 统计工具箱,您可以使用 chi2gof 函数相当简单地执行此操作。文档中的示例 3 展示了如何将其应用于均匀分布。
【讨论】:
将您的变量转换为正态分布变量并使用“kstest”。 因此,如果您有一个从 a 到 b 统一的变量 X,请编写以下代码
X_uni=(X-a)/(b-a); %Uniform 0,1 variable
X_norm=norminv(X_uni); % transform to normal distributed variable
[h,P]=kstest(X_norm) ; %P is the test statistic
【讨论】:
只是为了扩展艾伦的答案,知道如何正确使用Pearson's chi-squared test
N=100; % sample size
a=0; % lower boundary
b=1; % higher boundary
在 a 和 b 之间采样 N 个均匀分布的值。如果您想测试代码,请在第二行添加一些 bais 使其不统一。
x=unifrnd(a,b,N,1);
%x(x<.9) = rand(sum(x<.9),1);
chi2gof
如here 所述,对于chi2gof,您不能使用“假设分布的cdf”,需要指定bin、边缘和预期值。
nbins = 10; % number of bin
edges = linspace(a,b,nbins+1); % edges of the bins
E = N/nbins*ones(nbins,1); % expected value (equal for uniform dist)
[h,p,stats] = chi2gof(x,'Expected',E,'Edges',edges)
chi2cdf
使用此函数,您需要提供卡方检验统计量,$\displaystyle \chi ^{2}$ 可以使用函数histogramm 计算:
h = histogram(x,edges);
chi = sum((h.Values - N/nbins).^2 / (N/nbins));
k = nbins-1; % degree of freedom
chi2cdf(chi, k)
请注意,如果您不使用边来计算每个 bin 的值的数量,histogramm 将从较低的值到最高的值中选择它们,因此最终得分将不同于 chi2gof
最后,您想使用 p 值来回答“我可以安全地拒绝原假设吗(即x 不是来自均匀分布)?”。
是的,如果p 低于significant level (alpha),您可以肯定地说x 不是来自均匀分布。
【讨论】: