我正在尝试使用数据集在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作为因变量来运行 nonliner 多元回归吗?我使用lm()成功运行了线性多元回归,但是当我尝试使用nls()时,我收到了以下错误消息:
getInitial.default出错(func,data,mCall = as.list(match.call(func,: 找不到“函数”对象的“getInitial”方法
如果您需要更多信息以便能够运行回归,请告诉我。感谢。
答案 0 :(得分:8)
要使用nls
,您需要指定变量的公式和起始值。所以要做的第一件事就是决定你想要尝试和适合的非线性公式。
例如,如果你这样做:
m2<-nls(Header.7 ~ Header.1*a + Header.2*b + c,data=data,start=c(a=0,b=0,c=0))
然后你会得到(大致)与普通线性回归相同的结果,因为你拟合的模型是线性的。没有“默认”非线性回归,因此您需要确定要适合的非线性模型类型。有关详细信息,请参阅?nls
。
答案 1 :(得分: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(...)会猜测。但是不能保证模型会收敛到有意义的参数值,甚至根本不收敛。