ць) і вектором значень залежної змінної Y:
function rkT=rankreg (X, Y)
[n, m]=size (X);=ones (m, 1);
[rkT, D]=fminsearch (@ (T) Dfunc (Y, X, T), T0);=median (YX * rkT);=[a; rkT];
end
Окремим файлом прописується функція D:
function D=Dfunc (Y, X, T)=YX * T;
[R, trash]=tiedrank (A);=length (Y);=0; i=1: N=D + (A (i) * sqrt (12) * (2 * R (i) - (N + 1))/(2 * N + 2));
end
Додаток № 2
1) Код, що генерує 50 випадкових величин з розподілом Лапласа:
n=50;=- log (rand (n, 1));=- log (rand (n, 1));=z1-z2;
2) Код, що генерує 50 випадкових величин з розподілом Коші:
=50;=tan (pi * rand (n, 1) - pi/2);
% або замість останнього рядка
% ep=tinv (rand (n, 1), 1);
3) Код, що генерує 50 випадкових величин з розподілом Стьюдента з N ступенями свободи:
=50;=2;=tinv (rand (n, 1), N);
4) Код, що генерує 50 випадкових величин з розподілом Тьюки:
n=50;=rand (n, 1);=randn (n, 1);=sqrt (100) * randn (n, 1);=find (p gt;=0.9);
ep (I)=eps (I);
5) Код, що генерує 50 випадкових величин із двогорбим розподілом на основі двох гауссовских:
n=50;=rand (n, 1);=randn (n, 1) +2;=randn (n, 1) - 2;=find (p gt;=0.5);
ep (I)=eps (I);
6) Код, що генерує 50 випадкових величин з трикутним розподілом:
n=50;=rand (n, 1) - 0.5;=rand (n, 1) - 0.5;
ep=u1 + u2;
7) Код, що генерує 50 випадкових величин із двогорбим розподілом на основі двох трикутних:
n=50;=rand(n,1);=rand(n,1)*0.5;=rand(n,1)*0.5;=u1+u2;=-rand(n,1)*0.5;=-rand(n,1)*0.5;=v1+v2;=find(pgt;=0.5);(I)=eps(I);
8) Код, що генерує 50 випадкових величин з логістичним розподілом:
n=50;=- log ((1./rand (n, 1)) - 1);
Додаток № 3
Приклад коду, що обчислює результати експерименту по сравнинию рангової оцінки, МНК- і МНМ-оцінок параметрів для моделі з гауссовским розподілом шумів:
=2;=50;=[2; 5;- 3];=0;=0;=0; k=1: 1000=ones (n, 1);=5 * rand (n, m);=[X1, Xr];=randn (n, 1) ;=X * reT + ep;=((X * X) ^ - 1) * X * Y;=ls + sum ((lsT-reT). ^ 2)/1000;=rankreg (Xr, Y) ;=rk + sum ((rkT-reT). ^ 2)/1000;
[laT, S]=fminsearch (@ (T) LAVal (Y, X, T), ones (m + 1,1));=la + sum ((laT-reT). ^ 2)/1000;
rk
ls
la
Окремим файлом для обчислення наближеної МНМ-оцінки параметрів прописується функція втрат для МНМ:
S=LAVal (Y, X, T)=sum (abs (YX * T));
end
Додаток № 4
Програмний код, що обчислює оцінку параметрів лінійної регресії на використовуваних даних іриси Фішера і зводить графік, який зображає отриману залежність і розсіювання даних:
iris.dat=iris (51: 100,3);=iris (51: 100,1);=iris (51: 100,2); Xc=[X1 X2];=rankreg (Xc, Y)
[x1 x2]=meshgrid (0: 0.1: 75,0: 0.1: 40);=rkT1 (1) + rkT1 (2) * x1 + rkT1(3)*x2;(x1,x2,y,laquo;FaceAlpharaquo;,0.6,laquo;EdgeColorraquo;,laquo;noneraquo;)on(X1,X2,Y,laquo;koraquo;)=[ones(50,1) Xc];=((X * X) ^ - 1) * X * Y
[laT1, S]=fminsearch (@ (T) LAVal (Y, X, T), ones (3,1));=fix (50 * rand (1)); (it )=5 * Y (it);=rankreg (Xc, Y)=((X * X) ^ - 1) * X * Y
[laT2, S]=fminsearch (@ (T) LAVal (Y, X, T), ones (3,1));=sum ((rkT1-rkT2). ^ 2)=sum ((lsT1-lsT2). ^ 2)=sum ((laT1-laT2). ^ 2)