Diff of /inst/scale_data.m [000000] .. [afe5a1]  Maximize  Restore

  Switch to unified view

a b/inst/scale_data.m
1
# Copyright (C) 2003,2004  Michael Creel <michael.creel@uab.es>
2
# 
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
# 
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
# 
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
# Standardizes and normalizes data matrix,
18
# primarily for use by BFGS
19
20
function [zz, scalecoefs] = scale_data(z);
21
22
  n = rows(z);
23
  k = columns(z);
24
  
25
  # Scale data
26
  s = std(z)';
27
  test = s != 0;
28
  s = s + (1 - test); # don't scale if column is a constant (avoid div by zero)
29
  A = diag(1 ./ s);
30
  
31
  # De-mean all variables except constant, if a constant is present
32
  test = std(z(:,1)) != 0;
33
  if test
34
      warning("ScaleData: no constant present - only scale - no de-mean");
35
      bb = zeros(n,k);
36
      b = zeros(k,1);
37
  else
38
      b = -mean(z)';
39
      test = std(z)' != 0;
40
      # don't take out mean if the column is a constant, to preserve identification
41
      b = b .* test;
42
      b = A*b;
43
      bb = dmult(b, ones(k,n))';
44
  endif   
45
  zz = z*A + bb;
46
  scalecoefs = {A,b};
47
endfunction

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks