【问题标题】:MATLAB Weighted Multiple RegressionMATLAB 加权多元回归
【发布时间】:2015-06-15 08:09:00
【问题描述】:

我有一组数据,其中包含 821 个观测值,每个观测值都有 20 个测量值。我想使用 MATLAB 中的多元线性回归对一组单因变量进行回归。但是,我还想根据我自己的计算在回归中对每个观察结果进行不同的加权。例如,我想给第一个观察值赋予 1 的权重,给第二个观察值赋予 1.6 的权重,这样可以理想地将回归拉向权重更大的第二个观察值。

在 MATLAB 中可以进行这样的计算吗?如果是这样,什么函数最适合进行这种类型的计算?

感谢您的帮助!

【问题讨论】:

    标签: matlab linear-regression weighted


    【解决方案1】:

    您实际上并不需要 Statistics Toolbox 来执行此操作。内置函数lscov 会做你想做的一切。

    [b,bse] = lscov(X,y,w)

    将提供加权 OLS 估计值及其标准误。如果你想要回归中的常数,那么在 X 中包含一列。

    【讨论】:

    • 感谢您的回复。这个函数的结果会与LinearModel.fit 方法的结果完全不同吗?另外,有没有办法使用这个函数查看调整后的 R 平方值?
    • 两种方法的结果是一样的。使用 LinearModel 类可能更方便(输出汇总统计和拟合统计,接受更多数据类型作为输入),但并不是每个人都可以访问 Statistics Toolbox。如果您想要使用lscov 的 R 平方或调整后的 R 平方,那么您必须通过将模型预测与实际数据进行比较来计算它(完全简单——如果您需要,维基百科文章有公式)。
    【解决方案2】:

    借助 Statistics Toolbox,您可以使用 fitlm 创建线性回归模型,并应用 Weights 选项来提供您的权重。

    注意,在旧版本的 MATLAB 中,您需要使用 LinearModel.fit 而不是 fitlm,但它们的作用相同。

    【讨论】:

    • 太好了,谢谢!那么代码的正确实现是否类似于mdl = LinearModel.fit(X,y,'linear','Weights',w),其中w 是相应观察权重的821x1 向量?
    猜你喜欢
    • 2011-10-11
    • 2016-07-11
    • 1970-01-01
    • 2014-09-21
    • 2021-01-04
    • 2020-04-11
    • 2015-07-19
    • 2011-05-27
    • 2012-03-17
    相关资源
    最近更新 更多