服从广义高斯分布样本的参数估计

      图片经过带通滤波(如DCT变换频域系数、小波变换后的小波系数,gabor方向滤波器滤波后的系数)后,其系数服从广义高斯分布,广义高斯分布公式如下所示:


参数是广义高斯分布的形状参数,是与标准差有关的参数,x是带通滤波后的系数。当=2时广义高斯分布就是正态高斯分布,此时是标准差的倍。其中分母中的gamma函数如下所示:

    令,滤波后的系数通过这一变换,转化为变量Y,通过证明可以得出变量Y服从gamma分布其概率密度公式如下所示:

Y的前两阶中心矩为
       
进一步得到关于的方程式:


目前的目的是要求解广义高斯分布形状参数,现在以得到关于的方程式,可以利用Newton–Raphson方法迭代求出该数值解。
当有n个服从广义高斯分布的样本时,可以估算出(这里可以给出一个估算值,后面迭代的时候是逐步收敛到理论值)。


最终由样本数据得出的关于的方程为

利用Newton–Raphson迭代方法得出更新方程为

这里运用求导数的除法公式和指数函数求导公式可以求出。下面是推导过程:
                         
                    

得到后,利用Newton–Raphson迭代运算便可以得到形状参数理论值近似值。
利用形状参数估计

下面给出其实现的matlab代码,该代码是在文献“A globally convergent and consistent method for estimating the shape parameter of a generalized Gaussian distribution”基础理论基础之上编写而成。
function [theta, sigma] = ggd_fit(x, theta0)
%
%[theta, sigma] = ggd_fit(x, theta0);
% 根据样本估计单维广义高斯分布的参数值
% x是样本向量
% theta0是形状参数的初始值
% theta是迭代完成后的形状参数值
% sigma是迭代完成后与方差有关的参数值
% 该程序是根据文献    A globally convergent and consistent method for estimating the shape parameter of a generalized Gaussian distribution
% 编写而成,在原作者Lingyun Zhang 基础上修改某些部分 增强了程序的鲁棒性。


% number of sample points
x = x(find(abs(x)>0.001));
n = length(x);

% estimate the shape parameter
theta = theta0;
i=1;
T(1)=theta0;
while (1)
    Y1 = mean(abs(x).^theta);
    Y2 = mean(abs(x).^(2*theta));
    Z = Y2 / Y1 / Y1 - (theta+1);
    U1 = mean(abs(x).^theta.*log(abs(x)));%Y1对theta求导
    U2 = mean(abs(x).^(2*theta).*log(abs(x)));%Y2平方对theta求导
    Z_dot = 2*U2/Y1/Y1 - 2*U1*Y2/Y1/Y1/Y1 - 1;%Z求导结果
    theta = theta - Z/Z_dot;
    i=i+1;
    T(i) = theta;
    if theta<0.001
         theta= theta0+4;
           thta0=theta;
           T(i) = theta;
    
    else if abs(T(i-1)-T(i))<10e-10 
        if theta>0.001
        break; 
        else
           theta= theta0+4;
           thta0=theta;
           T(i) = theta;
        end
        end
    end
end;

% estimate the scale parameter
sigma = ((theta/n) * sum(abs(x).^theta)) .^ (1/theta);
       利用该代码对1000个服从均值为0,标准差为2的正态分布样本进行参数估计,得出结果为theta=1.7871,sigma=2.6512;因为标准高斯分布形状参数为2,所以估计值1.7871合适。对于标准高斯分布sigma是标准差的倍,所以估计出的标准差为2.6512/1.412=1,8747,与理论值2接近,所以此次参数估计是成功的。增加样本个数可以提高估计精度。







你可能感兴趣的:(算法)