Search code examples
rleast-squares

function for weighted least squares estimates


Does R have a function for weighted least squares? Specifically, I am looking for something that computes intercept and slope.

Data sets

  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

The dependent variable is dataset 3 and dataset 1 and 2 are the independent variables.


Solution

  • Yes, of course, there is a weights= option to lm(), the basic linear model fitting function. Quick example:

    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> 
    

    so by weighing later observations more heavily the mean of the sequence 1 to 10 moves from 5.5 to 7.