美文网首页
回归与内差

回归与内差

作者: HAPPYers | 来源:发表于2019-08-14 22:09 被阅读0次

多项式曲线拟合(线性回归拟合)

polyfit函数
拟合一次函数 实例代码:

x = [-1.2, -0.5, 0.3, 0.9, 1.8, 2.6, 3.0, 3.5];
y = [-15.6, -8.5, 2.2, 4.5, 6.6, 8.2, 8.9, 10.0];
fit = polyfit(x, y, 1); % 1 means the max Order number, here is y=ax+b
% here fit(1)=a fit(2)=b

% plot now
xfit = x(1):0.1:x(end);
yfit = fit(1) * xfit + fit(2);
plot(x,y,'ro',xfit,yfit);
set(gca,'FontSize',14);
legend('Location','northwest');
legend('data points','best-fit');

散点图和线性相关系数

scatter(x,y)绘制散点图
corrcoef()线性相关系数r (r属于-1到1)。当r接近1时,呈正相关;当r接近-1时,呈负相关

例如

x = [-1.2, -0.5, 0.3, 0.9, 1.8, 2.6, 3.0, 3.5];
y = [-15.6, -8.5, 2.2, 4.5, 6.6, 8.2, 8.9, 10.0];
scatter(x, y);
box on;
axis square;
corrcoef(x, y)

结果

ans =

    1.0000    0.9202
    0.9202    1.0000

可知,线性相关系数是0.9202,具有较高的线性相关性。

higher order polynomials

实例代码

x = [-1.2, -0.5, 0.3, 0.9, 1.8, 2.6, 3.0, 3.5];
y = [-15.6, -8.5, 2.2, 4.5, 6.6, 8.2, 8.9, 10.0];
figure('Position', [50 50 1500 400]);

% try different high order
N = 3;

for i = 1:N
    subplot(1, N, i);
    p = polyfit(x, y, i);
    xfit = x(1):0.1:x(end);
    yfit = polyval(p, xfit); % p: all coefficients
    plot(x, y, 'ro', xfit, yfit);
    set(gca, 'FontSize', 14);
    ylim([-17, 11]);
    legend('Data points', 'Fitted curve', 'Location', 'southeast');
end

这里用polyval将polyfit拟合好的多项式系数用xfit代入,以产生yfit
结果(分别是一次拟合、二次拟合、三次曲线拟合)

多元线性回归

regress()

测试数据集

load carsmall

实例程序

load carsmall;

y = MPG;
x1 = Weight;
x2 = Horsepower;
X = [ones(length(x1), 1) x1 x2];
b = regress(y, X);
x1fit = min(x1):100:max(x1);
x2fit = min(x2):10:max(x2);
[X1FIT, X2FIT] = meshgrid(x1fit, x2fit);
YFIT = b(1) + b(2) * X1FIT + b(3) * X2FIT;
scatter3(x1, x2, y, 'filled');
hold on;
mesh(X1FIT, X2FIT, YFIT);
hold off;

xlabel('Weight');
ylabel('Horsepower');
zlabel('MPG');
view(50, 10);

这里用regress函数来拟合,其中,常数项通过ones(length(x1), 1)来处理

曲线拟合工具 cftool

为了拟合非线性函数,我们可以选择cftool工具箱
在matlab命令窗口中输入cftool以打开cftool

在cftool中可以选择工作区中已有的变量数据。
例如,我们用上一节carsmall的数据,通过这个工具箱来fit曲线。


Interpolation内差

hermite和spline两种拟合


spline做二维内差

2D Interpolation Using spline
在interp2的最后一个参数中传入'cubic'即可。
这样就是光滑拟合了
实例程序

xx = -2:0.5:2;
yy = -2:0.5:3;
[X, Y] = meshgrid(xx, yy);
Z = X .* exp(-X.^2 - Y.^2);
xx_i = -2:0.1:2;
yy_i = -2:0.1:3;
[X_i, Y_i] = meshgrid(xx_i, yy_i);
Z_c = interp2(xx, yy, Z, X_i, Y_i, 'cubic');
surf(X_i, Y_i, Z_c);
hold on;
plot3(X, Y, Z + 0.01, 'ok', 'MarkerFaceColor', 'r');
hold off;
Spline

如果要线性拟合,只要把上面的Z_c = interp2(xx, yy, Z, X_i, Y_i, 'cubic');改为Z_c = interp2(xx, yy, Z, X_i, Y_i);,可得:

Linear

相关文章

  • 回归与内差

    多项式曲线拟合(线性回归拟合) polyfit函数拟合一次函数 实例代码: 散点图和线性相关系数 scatter(...

  • 统计学 残差

    残差与逻辑回归的诊断 文献:Residuals and regression diagnostics: focus...

  • 名词解释

    残差 残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。“残差”蕴含了有关模型基本假设的重要信息。如果回归...

  • 内观--回归

    高嘉慕 7月份参加“觉性科学”慈心禅专修营课程结束后,便加入了100天练习打卡活动。每天根...

  • 2020.01 双重差分法DID

    虚拟变量回归:政策评估与双重差分 双重差分法(DID)指,若其他变量不可观测,但它们不随时间变化而变化,则可考虑使...

  • 开车时常见的“内轮差”,究竟是什么?

    开车时常见的“内轮差”,究竟是什么? 开车会有专业术语,例如很多媒体和官方宣传的注意“内轮差”,那么“内轮差”究竟...

  • R语言 逻辑回归logistic regression

    @[toc] 普通OLS回归 普通OLS回归:对回归模型中的自变量、回归系数以及残差项的取值都没有任何限制,作为自...

  • 2020-10-20确定线性回归标准差与水平值的关系

    01直接假定函数关系 直接说线性回归中的水平值之间都有不同的的实验室内之间的标准差与实验室间的标准差,为确定不同水...

  • ARIMA模型原理

    ARIMA(Auto-Regressive Integrated Moving Average),自回归差分移动平...

  • 统计学(75)-回归系数的正确理解

    残差是帮助我们观察回归模型好坏的,但最终你要解释的仍是回归系数,所以很多人更喜欢看回归系数的大小。 1、回归系数 ...

网友评论

      本文标题:回归与内差

      本文链接:https://www.haomeiwen.com/subject/xmrojctx.html