📄 linreg.m
字号:
function [b, Ib, e, s, Is] = linreg(y,x,C,sym,pmax)%LINREG Linear or polynomial regression%% linreg(y,x)% [b, Ib, e, s, Is] = linreg(y,x,C,sym,pmax)%% The output b is the point estimate of the parametars % in the model y = b(1)*x + b(2) + error.% The columns of Ib are the corresponding confidence % intervals. The residuals are in e. The standard deviation % of the residuals is s.%% A pointwise confidence band for the expected y-value is% plotted, as well as a dashed line which indicates the% prediction interval given x. The input C is the confidence% which is 0.95 by default. C = [] gives no plotting% of confidence band or prediction band.%% Input sym is plotting symbol, with 'o' as default. For % polynomial regression give input pmax a desired value, % the model is then y = [x^pmax, ... x^2, x, 1] * b' + error.%% See also LSFIT and LSSELECT.% GPL Copyright (c) Anders Holtsberg, 1995, 1998if nargin < 3, C = 0.95; endif nargin < 4 | ~exist('sym'), sym = 'o'; endif isempty(sym), sym = 'o'; endif nargin < 5, pmax = 1; endy = y(:); x = x(:);if length(x) ~= length(y) error('Error in input format to linreg')endn = length(x);X = ones(n,pmax+1);for i = pmax:-1:1 X(:,i) = x .* X(:,i+1);end[b, Ib, e, s, Is] = lsfit(y,X,C);mn = 1.1*min(x)-0.1*max(x);mx = 1.1*max(x)-0.1*min(x);xx = linspace(mn,mx,50)';V = xx(:,ones(1,pmax+1));V = V .^ (ones(length(xx),1)*(pmax:-1:0));yy = V*b;h = ishold;plot(x,y,sym)hold onplot(xx,yy)if ~isempty(C) R = chol(X'*X); E = V/R; t = qt(1-(1-C)/2, n-pmax); d = sum((E.*E)')'; dd = t*s*sqrt(d); ym = yy - dd; yp = yy + dd; dd1 = t*s*sqrt(1+d); ym1 = yy - dd1; yp1 = yy + dd1; plot(xx,ym) plot(xx,yp) plot(xx,ym1,'--') plot(xx,yp1,'--')endif ~h, hold off; end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -