2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 R-project линейная регрессия
Сообщение08.12.2013, 17:58 
Аватара пользователя


28/05/12
15
Что-то я не понимаю, как мне сделать линейную регрессию в 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 


03/04/14
1
Вряд ли еще актуально, но решение такое:

Код:
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group