2013-12-21 4 views
6

Я пытаюсь запустить нелинейную множественной регрессии в R с набором данных, он имеет тысячи строк, так что я просто положить первые несколько здесь:Нелинейный регрессионный в R

 Header.1 Header.2 Header.3 Header.4 Header.5 Header.6 Header.7 
1   -60  -45 615 720  1.8318   0.428 -11.614 
2   -59  -45 616 720  1.8322   0.429 -11.498 
3   -58  -45 617 720  1.8326   0.430 -11.383 
4   -57  -45 618 720  1.8330   0.430 -11.267 
5   -56  -45 619 720  1.8334   0.431 -11.152 
6   -55  -45 620 720  1.8338   0.432 -11.036 
7   -54  -45 621 720  1.8342   0.433 -10.921 
8   -53  -45 622 720  1.8346   0.433 -10.806 
9   -52  -45 623 720  1.8350   0.434 -10.691 
10   -51  -45 624 720  1.8354   0.435 -10.576 
11   -50  -45 625 720  1.8357   0.435 -10.461 
12   -49  -45 626 720  1.8361   0.436 -10.347 
13   -48  -45 627 720  1.8365   0.437 -10.232 
14   -47  -45 628 720  1.8369   0.438 -10.118 
15   -46  -45 629 720  1.8373   0.438 -10.003 
16   -45  -45 630 720  1.8377   0.439  -9.889 
17   -44  -45 631 720  1.8381   0.440  -9.775 
18   -43  -45 632 720  1.8385   0.440  -9.660 
19   -42  -45 633 720  1.8389   0.441  -9.546 
20   -41  -45 634 720  1.8393   0.442  -9.432 
21   -40  -45 635 720  1.8397   0.442  -9.318 
22   -39  -45 636 720  1.8400   0.443  -9.205 
23   -38  -45 637 720  1.8404   0.444  -9.091 
24   -37  -45 638 720  1.8408   0.445  -8.977 
25   -36  -45 639 720  1.8412   0.445  -8.864 
26   -35  -45 640 720  1.8416   0.446  -8.751 
27   -34  -45 641 720  1.8420   0.447  -8.637 
28   -33  -45 642 720  1.8424   0.447  -8.524 

Может кто-то пожалуйста, объясните мне очень простыми словами, как запустить множественную регрессию с использованием заголовков.1 и заголовка 2 в качестве независимых переменных и заголовка.7 в качестве зависимой переменной? Я успешно выполнял линейную множественную регрессию с использованием lm(), но когда я попытался использовать nls(), я получил сообщение об ошибке:

Ошибка в getInitial.default (func, data, mCall = as.list (соответствие .call (FUNC,: ни один метод «getInitial» найдено «функции» не возражает

Если Вам необходима дополнительная информация для того, чтобы иметь возможность запускать регрессию, дайте мне знать, спасибо

+3

Можете ли вы показать фактический код, который вы пытались запустить? – mgamba

+0

Похоже, вам нужно установить начальные значения - см. R docs для NLS и посмотрите примеры для аргумента «start» для NLS. –

+0

nls (Header.7 ~ Header.1 + Header.2, data = mydataset) У меня есть подозрение, что это совершенно неправильно, но я не уверен, как это сделать правильно. Я сделал это так, как будто я сделал бы с lm(), но я не уверен, что так оно и должно быть сделано. – japem

ответ

6

для того, чтобы использовать.. nls, вам нужно указать как формулу, так и начальные значения для переменных. Поэтому первое, что нужно сделать, это решить, какую нелинейную формулу вы хотите попробовать и как ее поместили.

Например, если вы сделаете это:

m2<-nls(Header.7 ~ Header.1*a + Header.2*b + c,data=data,start=c(a=0,b=0,c=0)) 

, то вы получите (приблизительно) один и тот же результат, как и обычный линейной регрессии, так как модель вы фитинг линейна. Нет нелинейной регрессии по умолчанию, поэтому вам нужно выяснить, какую нелинейную модель вы хотите поместить. См. ?nls.

+1

Ах ... это как-то раздражает. Спасибо, что разобрал это. Я чувствую, что это должно быть возможно, чтобы R разобрался с этим сам по себе, без необходимости устанавливать некоторые коэффициенты, но что бы то ни было. – japem

+0

Как вы определяете, с чего начать .. В этом случае, когда есть 4 предиктора, должен быть лучший способ начать, чем просто идти с любой моделью и попробовать все возможности? – Kira

3

Таким образом, в линейной модели, параметры задаются неявно:

fit <- lm(Header.7 ~ Header.1 + Header.2, data=...) 

будет соответствовать модели:

Header.7 = a * Header.1 + b * Header.2 + c 

В нелинейной модели, вы должны указать параметры в явном виде, как демонстрирует @mrip. Конечно, в нелинейной модели, модель формула может быть сколь угодно сложной:

fit <- nls(Header.7 ~ exp(a*Header.1 + b/Header.2), data=..., start=c(...)) 

Наконец, старт не является обязательным: NLS (...) будет сделать предположение. Но нет никакой гарантии, что модель сходится к значимым значениям параметров или даже сходится вообще.

Смежные вопросы