我有一些来自未知来源的观察。这组观察结果为x,例如:
x = [97 , 102.3, 95.05 , 89.1 , 117 , ...]; % this is just an example. data set could contain any thing.
如果x足够大,我应该可以说一下概率分布函数,对吗?
那么我怎么能在MATLAB中做到这一点所以我可以得到p(x = 101)
或p(x = 5)
?第一个可能会非常高。
任何类型的假设(正态分布等)都可以,我只想要一个简单的概率答案。也许我不必明确地知道PDF,我只需要一种方法来实现p(x = x_star)
,其中x_star不一定是x的成员。我怎么能这样做?
感谢您的帮助!
最简单的尝试是length(find(x==x_star))/length(x)
,但是如果例如观察中没有101
,则返回零。但是看一下这个分布应该很有可能。
我的功能根据Kamtal的回答:
function p = get_probability_from_sample_set(S, X)
% finds the probability that a sample from S is equal to X
[mu,sigma] = normfit(S);
z = 1:200;
xfit = normpdf(z,mu,sigma);
p = xfit(find(z == X));
end
p
返回[]
。我在哪里做错了?
答案 0 :(得分:0)
x = randi(200,[1000 1]);
[mu,sigma] = normfit(x);
z = 1:200;
xfit = normpdf(z,mu,sigma);
p = xfit(find(z == round(X)));
如果您的值在[0 0.1]
,
x = randi(1000,[1000 1])/10000;
[mu,sigma] = normfit(x);
z = 0:1e-5:0.1;
xfit = normpdf(z,mu,sigma);
nearestToz = z(abs(z - X) == min(abs(z - X)));
p = xfit(find(z == nearestToz));