Mercurial > repos > vipints > rdiff
comparison rDiff/src/locfit/m/lfplot.m @ 0:0f80a5141704
version 0.3 uploaded
author | vipints |
---|---|
date | Thu, 14 Feb 2013 23:38:36 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:0f80a5141704 |
---|---|
1 function lfplot(varargin) | |
2 | |
3 % Plot (for one or two dimensions) a locfit() fit. | |
4 % | |
5 % Usage: | |
6 % fit = locfit(x,y); | |
7 % lfplot(fit); | |
8 % | |
9 % Plot the fitted smooth curve, and add a scatterplot of the data. | |
10 % | |
11 % Required argument: | |
12 % fit (produced by locfit()). | |
13 % | |
14 % Optional arguments: | |
15 % 'nodata' - don't add data to plot. | |
16 % 'contour' - for 2-d predictors, use contour instead of surf. | |
17 % 'direct' - fit directly, instead of using interpolation | |
18 % (see the predict() function). | |
19 % 'what' - locfit what argument ('coef', 'infl', 'vari', 'band' etc). | |
20 % Any additional arguments are passed to Matlab's plot(), contour() | |
21 % or surf() function as appropriate. | |
22 % | |
23 % To add confidence bands, use the lfband() function. | |
24 % | |
25 % Author: Catherine Loader. | |
26 | |
27 fit = varargin{1}; | |
28 data = fit.data; | |
29 xdata = data.x; | |
30 n = size(xdata,1); | |
31 d = size(xdata,2); | |
32 fali = fit.fit_points.family_link; | |
33 ydata = data.y; | |
34 wdata = data.weights; | |
35 cdata = data.censor; | |
36 if (length(cdata)==1) cdata = zeros(n,1); end; | |
37 showdata = (fit.evaluation_structure.derivative==0); | |
38 ppargs = {}; | |
39 plotargs = {}; | |
40 | |
41 type = 's'; | |
42 na = 2; | |
43 while na <= length(varargin) | |
44 inc = 0; | |
45 if (strcmp(varargin{na},'contour')) | |
46 type = 'c'; | |
47 inc = 1; | |
48 end; | |
49 if (strcmp(varargin{na},'what')) | |
50 ppargs = {ppargs{:}, 'what', varargin{na+1}}; | |
51 showdata = 0; | |
52 inc = 2; | |
53 end; | |
54 if (strcmp(varargin{na},'nodata')) | |
55 showdata = 0; | |
56 inc = 1; | |
57 end; | |
58 if (strcmp(varargin{na},'direct')) | |
59 ppargs = {ppargs{:} 'direct'}; | |
60 inc = 1; | |
61 end; | |
62 if (inc==0) | |
63 plotargs = {plotargs{:} varargin{na}}; | |
64 inc = 1; | |
65 end; | |
66 na = na+inc; | |
67 end; | |
68 | |
69 xfit = lfmarg(fit); | |
70 yfit = predict(fit,xfit,ppargs{:}); | |
71 yfit = invlink(yfit,fali); | |
72 fam = mod(fali(1),64); | |
73 if (fam>4) | |
74 ydata = ydata ./ wdata; | |
75 end; | |
76 | |
77 if (d==1) | |
78 plot(xfit{1},yfit,plotargs{:}); | |
79 if (showdata) | |
80 hold on; | |
81 if (length(ydata)==1) ydata = zeros(n,1); end; | |
82 plotbyfactor(xdata,ydata,cdata); | |
83 hold off; | |
84 end; | |
85 end; | |
86 | |
87 if (d==2) | |
88 x1 = xfit{1}; | |
89 x2 = xfit{2}; | |
90 yfit = reshape(yfit,length(x1),length(x2)); | |
91 if (type=='c') | |
92 [C h] = contour(x1,x2,yfit',plotargs{:}); | |
93 clabel(C,h); | |
94 if (showdata) | |
95 hold on; | |
96 plotbyfactor(xdata(:,1),xdata(:,2),cdata); | |
97 hold off; | |
98 end; | |
99 else | |
100 surf(x1,x2,yfit',plotargs{:}); | |
101 end; | |
102 end; | |
103 | |
104 return; |