Matlab:PDF来自马尔可夫链

Matlab:PDF来自马尔可夫链,matlab,markov-chains,Matlab,Markov Chains,我已经用Matlab生成了马尔可夫链。根据生成的马尔可夫链,我需要计算概率密度函数(PDF) 我该怎么做? 我应该在任何PDF函数中直接使用生成的马尔可夫链吗? 或 我应该在找到PDF之前对数据进行任何预处理吗 使用以下代码生成马尔可夫链: % x = the quantity corresponding to each state, typical element x(i) % P = Markov transition matrix, typical element

我已经用Matlab生成了马尔可夫链。根据生成的马尔可夫链,我需要计算概率密度函数(PDF)

  • 我该怎么做?
    我应该在任何PDF函数中直接使用生成的马尔可夫链吗?

    我应该在找到PDF之前对数据进行任何预处理吗
使用以下代码生成马尔可夫链:

%  x     = the quantity corresponding to each state, typical element x(i)
%  P     = Markov transition matrix, typical element p(i,j) i,j=1,...n
%  pi0   = probability distribution over initial state
%  T     = number of periods to simulate 
%  chain = sequence of realizations from the simulation

n = length(x); % what is the size of the state vector?
E = rand(1,T); % T-vector of draws from independent uniform [0,1]  

cumsumP = P*triu(ones(size(P)));
E0   = rand(1,1);
ppi0 = [0,cumsum(pi0)];
s0   = ((E0<=ppi0(2:n+1)).*(E0>ppi0(1:n)))';
s    = s0; 

for t=1:T,
state(:,t) = s;
ppi        = [0,s'*cumsumP];
s          = ((E(t)<=ppi(2:n+1)).*(E(t)>ppi(1:n)))';
end

chain = x'*state;    
%x=每个状态对应的数量,典型元素x(i)
%P=马尔可夫转移矩阵,典型元素P(i,j)i,j=1,…n
%pi0=初始状态的概率分布
%T=要模拟的周期数
%链=模拟实现的顺序
n=长度(x);%状态向量的大小是多少?
E=兰特(1,T);%独立均匀分布的T向量[0,1]
cumsuld=P*triu(一个(尺寸(P));
E0=兰特(1,1);
ppi0=[0,累计(pi0)];
s0=((E0ppi0(1:n)));
s=s0;
对于t=1:t,
状态(:,t)=s;
ppi=[0,s'*c];
s=((E(t)ppi(1:n)));
结束
链=x'*状态;
生成马尔可夫链之后,我需要计算概率密度

  • 如何使用Matlab计算概率密度

如果在vector
链中将状态作为单个值,只需制作一个直方图并将其规格化即可

chainPdf = hist(chain) / length(chain);

调用时,您可能需要指定存储箱或存储箱中心的数量。

您看过Matlab的-函数吗?这是其中的一部分。@Schorsch ya,我使用了pdf函数“ksdensity”,如下所示,[f,xi]=ksdensity(chain,bin,'function','pdf');它是否正确?如果没有更具体地说明您遇到了什么,很难说您使用的
kdensity
是否正确。它看起来确实像是一辆汽车。