comparison scripts/statistics/models/logistic_regression.m @ 3238:041ea33fbbf4

[project @ 1999-03-26 17:48:16 by jwe]
author jwe
date Fri, 26 Mar 1999 17:48:35 +0000
parents e4f4b2d26ee9
children f8dde1807dee
comparison
equal deleted inserted replaced
3237:737b219ab65a 3238:041ea33fbbf4
64 function [theta, beta, dev, dl, d2l, p] ... 64 function [theta, beta, dev, dl, d2l, p] ...
65 = logistic_regression (y, x, print, theta, beta) 65 = logistic_regression (y, x, print, theta, beta)
66 66
67 ## check input 67 ## check input
68 y = round (vec (y)); 68 y = round (vec (y));
69 [my ny] = size (y); 69 [my, ny] = size (y);
70 if (nargin < 2) 70 if (nargin < 2)
71 x = zeros (my, 0); 71 x = zeros (my, 0);
72 endif; 72 endif;
73 [mx nx] = size (x); 73 [mx, nx] = size (x);
74 if (mx != my) 74 if (mx != my)
75 error ("x and y must have the same number of observations"); 75 error ("x and y must have the same number of observations");
76 endif 76 endif
77 77
78 ## initial calculations 78 ## initial calculations
81 ymin = min (y); ymax = max (y); yrange = ymax - ymin; 81 ymin = min (y); ymax = max (y); yrange = ymax - ymin;
82 z = (y * ones (1, yrange)) == ((y * 0 + 1) * (ymin : (ymax - 1))); 82 z = (y * ones (1, yrange)) == ((y * 0 + 1) * (ymin : (ymax - 1)));
83 z1 = (y * ones (1, yrange)) == ((y * 0 + 1) * ((ymin + 1) : ymax)); 83 z1 = (y * ones (1, yrange)) == ((y * 0 + 1) * ((ymin + 1) : ymax));
84 z = z(:, any (z)); 84 z = z(:, any (z));
85 z1 = z1 (:, any(z1)); 85 z1 = z1 (:, any(z1));
86 [mz nz] = size (z); 86 [mz, nz] = size (z);
87 87
88 ## starting values 88 ## starting values
89 if (nargin < 3) 89 if (nargin < 3)
90 print = 0; 90 print = 0;
91 endif; 91 endif;
162 if (nx > 0) 162 if (nx > 0)
163 e = ((x * beta) * ones (1, nz)) + ((y * 0 + 1) * theta'); 163 e = ((x * beta) * ones (1, nz)) + ((y * 0 + 1) * theta');
164 else 164 else
165 e = (y * 0 + 1) * theta'; 165 e = (y * 0 + 1) * theta';
166 endif 166 endif
167 gamma = diff ([(y * 0) exp (e) ./ (1 + exp (e)) (y * 0 + 1)]')'; 167 gamma = diff ([(y * 0), (exp (e) ./ (1 + exp (e))), (y * 0 + 1)]')';
168 endif 168 endif
169 169
170 endfunction 170 endfunction