首页 文章

R中的非线性多元回归

提问于
浏览
5

我正在尝试使用数据集在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,:找不到“函数”对象的'getInitial'方法)

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

2 回答

  • 7

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

    例如,如果您这样做:

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

    那么你将获得(大致)与普通线性回归相同的结果,因为你拟合的模型是线性的 . 没有"default"非线性回归,因此您需要确定要适合的非线性模型类型 . 有关详细信息,请参阅 ?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(...)会猜测 . 但是不能保证模型会收敛到有意义的参数值,甚至根本不收敛 .

相关问题