Mercurial > hg > octave-nkf
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 |