MATLAB 有序聚类突变检验核心程序

MATLAB 有序聚类突变检验核心程序,第1张

分别运用分层聚类、K均值聚类以及高斯念散混仔衫合模型来进行分析,然后比较三者的结果仔戚氏

生成随机二维分布图形,三个中心

% 使用高斯分布(正态分布)

% 随机生成3个中心以及标准差

s = rng(5,'v5normal')

mu = round((rand(3,2)-0.5)*19)+1

sigma = round(rand(3,2)*40)/10+1

X = [mvnrnd(mu(1,:),sigma(1,:),200)...

mvnrnd(mu(2,:),sigma(2,:),300)...

mvnrnd(mu(3,:),sigma(3,:),400)]

关于MATLAB曲线拟合,我写了一系列的经验,咐盯为穗御了相互统一,采猜简岩用下面的数据:

x=[00.30000.60000.90001.20001.50001.80002.10002.40002.70003.0000]

y=[2.00002.37803.94407.3460 13.2320 22.2500 35.0480 52.2740 74.5760 102.6020 137.0000]

由函数y=4*x^3+3*x^2+2 产生。

MH算法也是一种基于模拟的MCMC技术,一个很重要的应用是从给定的概率分布中抽样。主要原理是构造了一个精妙的Markov链,使得该链的稳态 是你给定的概率密度。它的好处,不用多说,自然是可以对付数学形式复杂的概率密度。有人说,单维的MH算法配上Gibbs Sampler几乎是“无敌”了。

今天试验的冲烂洞过程中发现,MH算法想用好也还不简单,里面的转移参数设定就不是很好弄。即使用最简单的高斯漂移项,方差的确定也是个头疼的问题,需要不同问题不同对待,多试验几次。当然你也可以始终选择“理想”参数。

还是拿上次的混合高斯分布来做模拟,模拟次数为500000次的时候,概率分布逼近的程度如下图。虽然几个明显的"峰"已经出来了,但是数值上还是 有很大差异的。估计是我的漂移方差没有选好。感觉还是inverse sampling好用,历铅迭代次数不用很多,就可以达到相当的逼近程度。

 散枯 试了一下MH算法,

R Code:

p=function(x,u1,sig1,u2,sig2){

(1/3)*(1/(sqrt(2*pi)*15)*exp(-0.5*(x-70)^2/15^2)+1/(sqrt(2*pi)*11)*exp(-0.5*(x+80)^2/11^2)+1/(sqrt(2*pi)*sig1)*exp(-0.5*(x-u1)^2/sig1^2)+1/(sqrt(2*pi)*sig2)*exp(-0.5*(x-u2)^2/sig2^2))

}

MH=function(x0,n){

x=NULL

x[1] = x0

for (i in 1:n){

x_can= x[i]+rnorm(1,0,3.25)

d= p(x_can,10,30,-10,10)/p(x[i],10,30,-10,10)

alpha= min(1,d)

u=runif(1,0,1)

if (u<alpha){

x[i+1]=x_can}

else{

x[i+1]=x[i]

}

if (round(i/100)==i/100) print(i)

}

x

}

z=MH(10,99999)

z=z[-10000]

a=seq(-100,100,0.2)

plot(density(z),col=1,main='Estimated Density',ylim=c(0,0.02),lty=1)

points(a, p(a,10,30,-10,10),pch='.',col=2,lty=2)

legend(60,0.02,c("True","Sim (MH)"),col=c(1,2),lty=c(1,2))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12531933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存