Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab VAR系数标准中的神秘自由度_Matlab_Time Series - Fatal编程技术网

Matlab VAR系数标准中的神秘自由度

Matlab VAR系数标准中的神秘自由度,matlab,time-series,Matlab,Time Series,我一直在Matlab的计量经济学工具箱中测试向量自回归系数估计vgxvarx。一旦确定了系数,vgxdisp就可以选择显示根据最大似然或最小偏差估计的标准误差。两者之间的唯一区别是分别通过观察次数和自由度进行归一化。因为两者都是常量,所以您应该能够通过从一组转换到另一组来验证这两组标准错误。只需通过一个常数进行非正规化,然后通过另一个常数进行重新正规化 我试着这样做,发现标准误差的最小偏差估计值在自由度上似乎偏离了1。在下面的脚本中,我使用vgxvarx计算VAR模型系数,然后从vgxdisp请

我一直在Matlab的计量经济学工具箱中测试向量自回归系数估计vgxvarx。一旦确定了系数,vgxdisp就可以选择显示根据最大似然或最小偏差估计的标准误差。两者之间的唯一区别是分别通过观察次数和自由度进行归一化。因为两者都是常量,所以您应该能够通过从一组转换到另一组来验证这两组标准错误。只需通过一个常数进行非正规化,然后通过另一个常数进行重新正规化

我试着这样做,发现标准误差的最小偏差估计值在自由度上似乎偏离了1。在下面的脚本中,我使用vgxvarx计算VAR模型系数,然后从vgxdisp请求标准误差的最大似然估计和最小偏差估计(DoFAdj分别为false和true)。为了验证这两种方法,我将标准误差从ML转换为min偏差,方法是通过观察次数(npoint)进行非规范化,并通过自由度减去1(通过试验和误差发现)进行重新规范化。这些比例必须是平方根的,因为它们适用于方差,我们正在比较标准误差

我想知道是否有人能指出我是否缺少一些基本的东西来解释这个神秘的自由度

我最初将此发布到。这里是对原始代码的修改,它本机设置了数据,因此不需要从中获取数据

clear variables
fnameDiary = [mfilename '.out.txt'];
if logical(exist(fnameDiary,'file'))
   diary off
   delete(fnameDiary)
end % if
diary(fnameDiary) % Also turns on diary

CovarType='full' % 'full'
nMaxLag=3
clf

tbChicEgg=table([
   1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 ...
   1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 ...
   1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 ...
   1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 ...
   1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 ...
   1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 ...
   2002 2003 2004 2005 2006 ...
   ]',[
   468491 449743 436815 444523 433937 389958 403446 423921 ...
   389624 418591 438288 422841 476935 542047 582197 516497 ...
   523227 467217 499644 430876 456549 430988 426555 398156 ...
   396776 390708 383690 391363 374281 387002 369484 366082 ...
   377392 375575 382262 394118 393019 428746 425158 422096 ...
   433280 421763 404191 408769 394101 379754 378361 386518 ...
   396933 400585 392110 384838 378609 364584 374000 370000 ...
   373000 380000 356000 356000 353000 363000 371000 380000 ...
   386000 388000 393000 410000 425000 437000 437000 444000 ...
   444000 450000 454000 453000 453000 ...
   ]',[
   3581 3532 3327 3255 3156 3081 3166 3443 3424 3561 3640 3840 ...
   4456 5000 5366 5154 5130 5077 5032 5148 5404 5322 5323 5307 ...
   5402 5407 5500 5442 5442 5542 5339 5358 5403 5345 5435 5474 ...
   5540 5836 5777 5629 5704 5806 5742 5502 5461 5382 5377 5408 ...
   5608 5777 5825 5625 5800 5656 5683 5700 5758 5867 5808 5600 ...
   5675 5750 5892 5992 6158 6233 6367 6458 6650 6908 7058 7175 ...
   7275 7292 7425 7500 7575 ...
   ]', ...
   'VariableNames', {'year' 'chic' 'egg'} ...
);
seriesNames={'chic','egg'};
varChicEgg = vgxset( 'Series', seriesNames, 'n',2 );

chicEgg = table2array(tbChicEgg(:,seriesNames));
dChicEgg = diff(chicEgg);
dChicEgg = bsxfun( @minus, dChicEgg, mean(dChicEgg) ); % Make 0-mean
dChicEgg0 = dChicEgg(1:nMaxLag,:); % Presample-data
dChicEgg = dChicEgg(1+nMaxLag:end,:);
nPoints = length(dChicEgg)
yrs = table2array(tbChicEgg(1+nMaxLag:end,'year'));
yrs = yrs(1:nPoints);

subplot(3,1,1);
plotyy( yrs,dChicEgg(:,1) , yrs,dChicEgg(:,2) );

for DoFAdj = [false true]
   % DoFAdj=1 means std err normalizes by df rather than n, where
   % n=number of observations and df is n less the number of
   % parameters estimated (from vgxdisp or vgxcount's NumParam)

   [est.spec est.stdErr est.LLF est.W] = vgxvarx( ...
      vgxset( varChicEgg, 'nAR',nMaxLag ), ...
      dChicEgg, NaN, dChicEgg0, ...
      'StdErrType', 'all', ...
      'CovarType', CovarType ...
   );

   fprintf('-------------------------\nDoFAdj=%g\n',DoFAdj);

   subplot(3,1,2+DoFAdj)
   plotyy(yrs,est.W(:,1),yrs,est.W(:,2))

   vgxdisp(est.spec,est.stdErr,'DoFAdj',DoFAdj);

end

fprintf('\nConvert ML stderr (DoFAdj=false) to min bias (DoFAdj=true):\n');
fprintf('Number of parameters: ')
[~,NumParam]=vgxcount(est.spec)
degreeFree = nPoints - NumParam
fprintf('\n');

stderr_ML_2_minBias=[
      0.148195
       21.1939
    0.00104974
      0.150127
      0.160034
       22.2911
     0.0011336
      0.157899
      0.147694
       20.9146
    0.00104619
      0.148148
   6.43245e+07
        381484
       3227.54
] ...
   * sqrt( nPoints / ( degreeFree - 1 ) );
for iParam = 1:length(stderr_ML_2_minBias)
   disp(stderr_ML_2_minBias(iParam));
end

%--------------------------------------------------
diary off
% error('Stopping before return.');
return