You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中是否有二次多元多项式回归函数?若无,MATLAB中如何实现?

二次多元多项式回归在R和MATLAB中的实现方式

在R语言中的实现

R并没有专门针对“二次多元多项式回归”的专属内置函数,但其实我们可以借助基础的线性回归函数lm()轻松实现——因为二次多元多项式回归本质是线性回归的扩展,只需要把二次项和变量间的交互项纳入回归公式即可。

有两种常用的写法:

  • 方法一:利用公式展开式
    如果你的自变量是x1、x2,因变量是y,直接用公式(x1 + x2)^2就行,R会自动将其展开为包含一次项、二次项和交互项的完整多项式形式:

    # 假设数据存储在数据框df中
    model <- lm(y ~ (x1 + x2)^2, data = df)
    summary(model)
    

    这个公式等价于手动写y ~ x1 + x2 + I(x1^2) + I(x2^2) + x1:x2,其中I()用来表示数学上的平方运算,避免被R的公式解析规则误解。

  • 方法二:使用poly()函数
    如果你想更灵活地控制多项式项,可以用poly()生成指定次数的多项式特征,记得设置raw=TRUE来使用原始多项式(而非正交多项式):

    model <- lm(y ~ poly(x1, 2, raw=TRUE) + poly(x2, 2, raw=TRUE) + x1:x2, data = df)
    summary(model)
    

在MATLAB中的实现

MATLAB提供了几种便捷的方式来实现二次多元多项式回归:

  • 方法一:使用fitlm(推荐,语法直观)
    fitlm是MATLAB中用于线性模型拟合的高级函数,支持直接通过公式指定多项式项。假设你有一个包含y、x1、x2的表格tbl:

    % 创建拟合模型
    mdl = fitlm(tbl, 'y ~ x1 + x2 + x1^2 + x2^2 + x1*x2');
    % 查看模型结果
    disp(mdl);
    

    如果你想简化写法,也可以用类似R的公式展开:'y ~ (x1 + x2)^2',MATLAB同样会自动展开所有必要的项。

  • 方法二:使用regress函数(更底层,可控性强)
    如果你习惯手动构造设计矩阵,可以用regress函数。步骤如下:

    % 假设x1、x2是列向量,y是因变量列向量
    n = length(y);
    % 构造设计矩阵:常数项 + 一次项 + 二次项 + 交互项
    X = [ones(n,1), x1, x2, x1.^2, x2.^2, x1.*x2];
    % 执行回归
    b = regress(y, X);
    % 输出系数,b(1)是截距,b(2)-b(3)是一次项系数,b(4)-b(5)是二次项系数,b(6)是交互项系数
    disp('回归系数:');
    disp(b);
    

内容的提问来源于stack exchange,提问作者Shashank Shekhar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:26:23