#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.
Но как вычислить
-
sum_{i=1}^21 x_i*y_i
-
sum_{i=1}^21 (y_i-a*x_i)^2
-
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
.
-
sum(x*y)
-
sum(resid(lm(y~x 0))^2)
илиsum(lm(y~x 0)$residuals^2)
илиsum((y-a*x)^2)
-
sum(x^2)