⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gradt.m

📁 计量工具箱
💻 M
字号:
function grdd = gradt(funfcn,x0,varargin)% PURPOSE: computes gradient vector%          for the likelihood function f evaluated at b%---------------------------------------------------% USAGE:gradd = gradt(f,b,y,x,varargin)% where:    f = a string containing the likelihood function%           b = a parameter vector (k x 1)%           y = data vector%           x = data matrix%    varargin = arguments list passed to func%---------------------------------------------------       % NOTE: f must take the form f(b,y,x,args)%       where: b = parameter vector (k x 1)%           args = any # of arguments passed to the function%---------------------------------------------------       % RETURNS: gradd = gradient vector (1 x k)      %---------------------------------------------------       % SEE ALSO: updateh, hessian%---------------------------------------------------       % written by:% James P. LeSage, Dept of Economics% University of Toledo% 2801 W. Bancroft St,% Toledo, OH 43606% jpl@jpl.econ.utoledo.edufunfcn = fcnchk(funfcn,length(varargin));[k junk] = size(x0);if k == 1x0 = x0';end;% NOTE: we assume an nobs vector or matrix here%       pretty shoddy practice really[n junk] = size(varargin{1});          xarg = x0;    f0 = feval(funfcn,x0,varargin{:});    gradd = zeros(n,k);    epsilon = sqrt(eps);    iota = ones(k,1);    absx0 = abs(x0);    tst0 = find(absx0 == 0);    absx0(tst0) = 0.00001*ones(length(tst0),1);           if x0 == 0;       dabsx0 = 1;    else        dabsx0 = x0./absx0;    end;    dh = epsilon*max(([absx0; (1e-2)*iota])').*dabsx0;    xdh = x0+dh;    dh = xdh-x0;          tst0 = find(dh == 0);    dh(tst0) = 0.00001*ones(length(tst0),1);    tmp = zeros(k,k);    for i=1:k;    tmp(:,i) = x0;    end;          for i=1:k;    tmp(i,i) = xdh(i,1);    end;        for i = 1:k;       xarg = tmp(:,i);       gradd(:,i) = feval(funfcn,xarg,varargin{:});    end;    tmp2 = zeros(n,k);    for i=1:k;    tmp2(:,i) = gradd(:,i) - f0;    end;    gradd = zeros(n,k);    dhp = dh';    for i=1:n;    gradd(i,:) = tmp2(i,:)./dhp;    end;           grdd = sum(gradd);    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -