shirleyyan
想对如下数据做非线性回归分析:
data.May=data.frame(x=x,y=y);data.May
[data] x y
1 1 1.3669917
2 1 3.0652425
3 1 1.5193280
4 1 3.4405248
5 1 2.8383748
6 1 1.2031523
7 1 4.9369418
8 1 3.2041654
9 1 1.3334222
10 1 1.4631190
11 1 2.3333956
12 1 3.8038884
13 1 4.8692406
14 1 2.4414559
15 1 1.4424959
16 1 2.8557441
17 1 2.4574251
18 1 2.4863767
19 1 0.7235192
20 1 2.0027638
21 3 5.6272184
22 3 4.2037413
23 3 5.3967706
24 3 3.4516879
25 3 5.7399551
26 3 1.4542634
27 3 4.3007832
28 6 5.8457653
29 6 4.5799687
30 6 7.1513707
31 6 4.4432220
32 6 5.0830619
33 6 6.4076702
34 6 4.8312513
35 12 7.6654880
36 12 9.5422068
37 12 5.9341546
38 12 8.3311514
39 12 8.4397810
40 12 6.9388227
41 12 8.8727001
[/data]
nls(y~a*exp(b*x),data=data.May,start=list(a=1,b=-1))
错误于nls(y~a*exp(b*x),data=data.May,start=list(a=1, :
奇异梯度
请问这是怎么回事呢?
这里的a,b一般怎么设置呢?我的数据大致呈对数增加趋势
</p>
nan.xiao
1. 顶个老帖
2. 给LZ一个初始值:
<br />
tmp = nls(y ~ a * exp(b * x), start=list(a=2.7, b=0.1))<br />
summary(tmp)<br />
</p>
输出:
[data]
Formula: y ~ a * exp(b * x)
Parameters:
Estimate Std. Error t value Pr(>|t|)
a 2.709962 0.236863 11.44 4.95e-14 ***
b 0.092437 0.009569 9.66 6.75e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.321 on 39 degrees of freedom
Number of iterations to convergence: 3
Achieved convergence tolerance: 2.679e-06
[/data]
Dirk001
[未知用户]
同问,我做的分析如下:
> cl<-data.frame(
+ X=c(95.3, 87.18, 44.94, 26.36, 18.12, 84.68, 37.24, 33.04, 23.46, 9.72, 97.92, 71.44, 44.52, 24.44, 15.26),
+ Y=c(521.5, 689.78, 1284.71, 2018.8, 2560.46, 524.91, 989.05, 1646.32, 2239.65, 2972.96, 478.54, 875.52, 1432.5, 2144.74, 2629.2)
+ )
> nls.sol<-nls(Y~exp(a*X^b), data=cl,start = list( a= 0.1, b = 0.01 ))
Error in nls(Y ~ exp(a * X^b), data = cl, start = list(a = 0.1, b = 0.01)) :
奇异梯度
> nls.sol<-nls(Y~exp(a*X^b), data=cl,start = list( a= 1, b = 1 ))
Error in nls(Y ~ exp(a * X^b), data = cl, start = list(a = 1, b = 1)) :
循环次数超过了50这个最大值
> nls.sum<-summary(nls.sol); nls.sum
Error in summary(nls.sol) : 找不到对象'nls.sol'
>
a,b的起始值该如何设置的急求
luluhoy
nls(y~a*exp(b*x),data=data.May,start=list(a=0.5,b=1))
:-)
luluhoy
nls.sol<-nls(Y~exp(a*X^b), data=cl,start = list( a=10, b=0.1 ))
:-)