R中的非线性多元回归

问题描述 投票:5回答:2

我正在尝试使用数据集在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

有人可以用非常简单的术语向我解释如何使用Header.1和Header.2作为自变量和Header.7作为因变量来运行非线性多元回归吗?我使用lm()成功运行了线性多元回归,但是当我尝试使用nls()时,我得到了folloiwng错误消息:

getInitial.default中的错误(func,data,mCall = as.list(match.call(func,:找不到“function”对象的'getInitial'方法)

如果您需要更多信息以便能够运行回归,请告诉我。谢谢。

r regression nls non-linear-regression
2个回答
8
投票

为了使用nls,您需要指定变量的公式和起始值。因此,首先要做的是确定您想要尝试和适合的非线性公式。

例如,如果您这样做:

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

那么你将获得(大致)与普通线性回归相同的结果,因为你拟合的模型是线性的。没有“默认”非线性回归,因此您需要确定要适合的非线性模型类型。有关详细信息,请参阅?nls


4
投票

所以在线性模型中,隐式指定参数:

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(...))

最后,start是可选的:nls(...)将进行猜测。但是不能保证模型会收敛到有意义的参数值,甚至根本不收敛。

© www.soinside.com 2019 - 2024. All rights reserved.