Что-то я не понимаю, как мне сделать линейную регрессию в R-project'е. Кто-нибудь им пользуется вообще? (я надеюсь, что да)
1. Пробовал сделать вот так:
dataX <- c(-1, 0, 0, 1, 2)
dataY <- c(1, -2, 1, 7, 8)
createData = function()
{
dataX = lapply(dataX, function(x) c(1, x, x^2))
m <- list(dataX, dataY)
}
m <- createData()
names(m) <- c("X", "Y")
result = lm(formula = Y ~ X, m, x = TRUE, y = TRUE)
(это не Java, это R-project или S или как его)
Ругается: Ошибка в data.frame(X = list(c(1, -1, 1), c(1, 0, 0), c(1, 0, 0), c(1,...:аргументы подразумевают разные количества строк: 3, 5
2. Вот как ещё я пробовал сделать:
dataX <- c(-1, 0, 0, 1, 2)
dataY <- c(1, -2, 1, 7, 8)
createData = function()
{
dataX0 = rep(1, length(dataX))
dataX2 = dataX
for (i in 1:length(dataX2))
{
dataX2[i] = dataX2[i]^2
}
m <- list(dataX0, dataX, dataX2, dataY)
}
m <- createData()
names(m) <- c("X0", "X", "X1", "Y")
result = lm(formula = Y ~ X, m, x = TRUE, y = TRUE)
Выдаёт:
Код:
Call:
lm(formula = Y ~ X, data = m, x = TRUE, y = TRUE)
Coefficients:
(Intercept) X
1.769 3.077
Шта? но мне надо 3 коэффициента, а тут я вижу один, да и вообще не понятно как с этим работать
А задача в том, чтобы по вот таким данным
Код:
x: -1 0 0 1 2
y: 1 -2 1 7 8
Построить линейную модель:
В коде я заполняю недостающие
и
Вот....... помогите плз
-- 08.12.2013, 18:45 --вообще я так понял, что функция lm принимает объекты типа data.frame, а я передаю туда list. Не хорошо получается. Но как получить из нужных данных объект типа data.frame, я не понял. Что указывается в formula = ... я
вообще не понял. Всё что мне нужно (в данной конкретной задаче, а потом - чем дальше - тем хуже) - это по матрице типа такой
Код:
0 1 2 Y
x x x y
x x x y
x x x y
Получить коэффициенты линейной регрессии