2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 R-project линейная регрессия
Сообщение08.12.2013, 17:58 
Аватара пользователя
Что-то я не понимаю, как мне сделать линейную регрессию в R-project'е. Кто-нибудь им пользуется вообще? (я надеюсь, что да)

1. Пробовал сделать вот так:
Используется синтаксис Java
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. Вот как ещё я пробовал сделать:
код: [ скачать ] [ спрятать ]
Используется синтаксис Java
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

Построить линейную модель: $f(x) = \beta_0+\beta_1x+\beta_2 x^2$
В коде я заполняю недостающие $x^2$ и $x^0=1$
Вот....... помогите плз

-- 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

Получить коэффициенты линейной регрессии $\beta_0, \beta_1, \beta_2$

 
 
 
 Re: R-project линейная регрессия
Сообщение03.04.2014, 20:55 
Вряд ли еще актуально, но решение такое:

Код:
dataX <- c(-1, 0, 0, 1, 2)
dataY <- c(1, -2, 1, 7, 8)

dataX2<-dataX^2

result<-lm(formula=dataY~dataX+dataX2)
coefficients(result)


Результат получается такой:
Код:
(Intercept)       dataX      dataX2
           1           2           1


Первое число - свободный коэффициент (X0), второй и третий соответственно коэффициенты при X и X2

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group