Но как вычислить следующее суммирование в r?

#r

#r

Вопрос:

Предоставить данные

 x<-c(80,80,75,62,62,62,62,62,58,58,58,58,58,58,50,50,50,50,50,56,70)
y<-c(42,37,37,28,18,18,19,20,15,14,14,13,11,12,8,7,8,8,9,15,15),
  

рассмотрим линейную регрессию без перехвата y_i=a*x_i epsilon . Я могу вычислить оценку с помощью

       hat{a}=lm(formula = y ~ x   0)
  

что равно 0,3057.

Но как вычислить

  1. sum_{i=1}^21 x_i*y_i

  2. sum_{i=1}^21 (y_i-a*x_i)^2

  3. sum_{i=1}^21 x_i^2

в r.

Комментарии:

1. Что вы пробовали и где вы застряли? (1) равно sum(x * y) … можете ли вы перейти оттуда?

2. следуя комментарию @GregorThomas: все арифметические операции в R векторизованы , поэтому, например x*y , выполняет поэлементное умножение, x^2 возводит в квадрат члены x поэлементно, a*x где a скаляр умножает каждый элемент…

Ответ №1:

Во-первых, a=lm(y~x 0) выводит список с большим количеством информации, сделайте View(a) , чтобы увидеть его. Если вам нужен только коэффициент, сделайте a=lm(y~x 0)$coefficient .

  1. sum(x*y)

  2. sum(resid(lm(y~x 0))^2) или sum(lm(y~x 0)$residuals^2) или sum((y-a*x)^2)

  3. sum(x^2)