функция для взвешенных оценок наименьших квадратов - PullRequest
7 голосов
/ 16 июня 2011

Имеет ли 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 независимые переменные.

Ответы [ 3 ]

12 голосов
/ 16 июня 2011

Да, конечно, есть опция weights= для lm(), основная функция подгонки линейной модели. Быстрый пример:

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.

5 голосов
/ 16 июня 2011

Во-первых, создайте свои наборы данных.Я помещаю их в один data.frame, но это не обязательноПредложения @ Дирка.

Четвертое и самое важное - прочитайте одно или два учебника по регрессии в R. Google считает это лучшим хитом: http://www.jeremymiles.co.uk/regressionbook/extras/appendix2/R/

0 голосов
/ 19 марта 2014

Просто еще один пример.Вы можете сначала создать матрицу весов.Например:

samplevar = var(ydata)

M = diag(40,1/samplevar)

В этот момент M является диагональной матрицей 40x40.Вы можете преобразовать в вектор, применив diag к M:

M_vector = diag(M)

Затем используйте это в lm:

   lm ( YXDATAFRAME, weights=M_vector)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...