【问题标题】:function for weighted least squares estimates加权最小二乘估计函数
【发布时间】:2011-09-16 13:37:03
【问题描述】:

R 是否具有加权最小二乘函数?具体来说,我正在寻找计算截距和斜率的东西。

数据集

  1. 1 3 5 7 9 11 14 17 19 25 29
  2. 17 31 19 27 31 62 58 35 29 21 18
  3. 102153 104123 96564 125565 132255 115454 114555 132255 129564 126455 124578

因变量是数据集3,数据集1和2是自变量。

【问题讨论】:

  • 从您的 cmets 看来,您并不是真的想要加权最小二乘,而是需要多元回归。愿意适当地修改您的问题吗?
  • 我仍然不清楚(阅读下面的答案和 cmets)权重是如何进入图片的。
  • 更多关于最小二乘法herehere

标签: r least-squares


【解决方案1】:

这只是另一种看法。您可以先创建一个权重矩阵。例如:

samplevar = var(ydata)

M = diag(40,1/samplevar)

此时 M 是一个 40x40 的对角矩阵。您可以通过将 diag 应用于 M 来转换为向量:

M_vector = diag(M)

然后在lm 中使用它:

   lm ( YXDATAFRAME, weights=M_vector)

【讨论】:

    【解决方案2】:

    首先,创建数据集。我将它们放入单个 data.frame 中,但这不是绝对必要的。

    dat <- data.frame(x1 = c(1,3,5,7,9,11,14,17,19,25, 29)
                      , x2 = c(17, 31, 19, 27, 31, 62, 58, 35, 29, 21, 18)
                      , y  = c(102153, 104123, 96564, 125565, 132255, 115454
                               , 114555, 132255, 129564, 126455, 124578)
                      )
    

    二、估计模型:

    > lm(y ~ x1 + x2, data = dat)
    
    Call:
    lm(formula = y ~ x1 + x2, data = dat)
    
    Coefficients:
    (Intercept)           x1           x2  
      104246.37       906.91        85.76
    

    第三,根据@Dirk 的建议添加您的权重。

    第四个也是最重要的 - 通读一两个关于 R 回归的教程。Google 将其列为热门:http://www.jeremymiles.co.uk/regressionbook/extras/appendix2/R/

    【讨论】:

    • @RyanB - 我会将您的数据添加到您的问题中,以便将所有数据集中在一个地方。此外,如果这回答了您的问题,请单击复选标记“接受”,它将让其他人知道这对您有帮助。
    • @RyanB 那么请注意@Chase 和@Aaron 使用的术语-除非您提供一些权重,否则您所做的不是权重最小二乘法(WLS)。 @Chase 显示的只是普通的最小二乘法。 @Dirk's Answer 向您展示了如何通过 lm() 函数开始使用 WLS。
    • 是的,加文,这两个回答的组合回答了我的问题。
    • 如果您在变量 x1x2 之前有一个随机常数模型,例如 "y ~ \beta_{1} x1 + \beta_{2} x2+error",您假设错误与 x1x2 不相关,那该怎么办?
    【解决方案3】:

    是的,当然,lm() 有一个weights= 选项,基本的线性模型拟合函数。快速示例:

    R> df <- data.frame(x=1:10)
    R> lm(x ~ 1, data=df)            ## i.e. the same as mean(df$x)
    
    Call:
    lm(formula = x ~ 1, data = df)
    
    Coefficients:
    (Intercept)  
            5.5  
    
    R> lm(x ~ 1, data=df, weights=seq(0.1, 1.0, by=0.1))
    
    Call:
    lm(formula = x ~ 1, data = df, weights = seq(0.1, 1, by = 0.1))
    
    Coefficients:
    (Intercept)  
              7  
    
    R> 
    

    因此,通过更重地衡量以后的观察结果,序列 1 到 10 的平均值从 5.5 移动到 7。

    【讨论】:

    • 不确定我是否关注。如果我有 3 个数据集,我将如何估计截距和斜率。数据集1):1 3 5 7 9 11 14 17 19 25 29数据集2:17 31 19 27 31 62 58 32 21 18 DataSet 3:102153 104123 965412255124555 132255 124555 132255 124555 132255 124555 132255 124534 126455 124555 132255 124555 132255 1245551D1B将参与变量是DATASET 3和数据集1和2是自变量
    • 现在我们不跟随了。您要使用的权重是多少?
    • 那么听起来你毕竟不需要加权最小二乘。
    • @Dirk:你能详细说明"x ~ 1" 的真正含义吗? Chase 的回复推断诸如 "y ~ x1 + x2" 之类的东西就像“依赖变量 VS 独立变量”还是我过度解释了?
    • @hhh: x~1 是一个仅截距回归模型。这些公式是 R 中回归建模的基础:如果您需要进行回归,您应该首先阅读 Introduction to R 中的相关部分(以及可能在 R 网站的贡献文档部分中的 Faraway 的线性建模书稿) - - 另请参阅大通的答案中的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多