我使用高斯过程进行预测。现在让我们假设我在 x
中存储了大小为 1900 X 1 的预测值。现在我想检查它的分布是否遵循高斯分布。我需要这个来比较其他方法预测值的分布函数,如 NN、KNN,以便判断哪个遵循平滑高斯或正态分布函数
我该怎么做?如果我能以数字数据的形式得到一些结果就更好了。代码如下,
m = 均值(ypred); % 均值 r
s = std(ypred); r 的 % 标准差
pd = makedist('正常','mu',m,'sigma',s); % 用 mu = m 和 sigma = s 做概率分布
[h,p] = kstest(ypred,'CDF',pd); % 计算它是正态分布的概率
ypred
值是从matlab 的fitrgp
获得的输出。附上 ypred
值示例 here
最佳答案
你可以制作一个One-sample Kolmogorov-Smirnov test :
x = 1 + 2.*randn(1000,1); % just some random normal distributed data, replace it with your actual 1900x1 vector.
m = mean(x); % mean of r
s = std(x); % stdev of r
pd = makedist('Normal','mu',m,'sigma',s); % make probability distribution with mu = m and sigma = s
[h,p] = kstest(x,'CDF',pd); % calculate probability that it is a normal distribution
在哪里p
是服从正态分布的概率,h = 1
如果原假设被拒绝且显着性为 0.05。由于原假设是“服从正态分布”,h = 0
表示服从正态分布。
自 x
在这个例子中是从正态分布中抽样的,很可能是h = 0
和 p > 0.05
.如果您使用
x = 1 + 2.*rand(1000,1); % sampled from uniform distribution
h
很可能是 1 和 p<0.05
.当然你可以把整个东西写成一行以避免创建 m
, s
和 pd
.
关于matlab - 检查天气预报值是否遵循高斯分布或不使用 matlab?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44631894/