我正在尝试使用数据集在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 回答
要使用
nls
,您需要同时指定变量的公式和起始值 . 因此,首先要做的是确定您想要尝试和拟合的非线性公式 .例如,如果您这样做:
那么你将获得(大致)与普通线性回归相同的结果,因为你拟合的模型是线性的 . 没有"default"非线性回归,因此您需要确定要适合的非线性模型类型 . 有关详细信息,请参阅
?nls
.因此,在线性模型中,隐式指定参数:
适合模型:
在非线性模型中,您必须明确指定参数,如@mrip所示 . 当然,在非线性模型中,模型公式可以是任意复杂的:
最后,start是可选的:nls(...)会猜测 . 但是不能保证模型会收敛到有意义的参数值,甚至根本不收敛 .