以下代码为(for )nls
引发以下错误。但是类似数据集的相同代码可以正常工作(for )。Convergence failure: singular convergence (7)
fm2
Data2
fm1
Data1
适用于该数据集
Data1 <-
structure(list(D = c(0L, 0L, 0L, 0L, 5L, 5L, 5L, 5L,
10L, 10L, 10L, 10L, 15L, 15L, 15L, 15L, 20L, 20L, 20L, 20L),
Y = c(11.6, 9.3, 10.7, 9.2, 7.8, 8, 8.6, 7.9, 7.7,
7.6, 7.5, 7.5, 7.2, 7.3, 7, 6.5, 6.3, 5.7, 5.6, 6)), .Names = c("D",
"Y"), class = "data.frame", row.names = c(NA, 20L))
fm1 <-
nls(
formula=Y~w*(1-(i*D/(100*(1+i*D/A))))
, data=Data1
, start=list(w=13, i=3, A=80)
, algorithm="port"
)
不适用于此数据集
Data2 <-
structure(list(D = c(0L, 0L, 0L, 0L, 5L, 5L, 5L, 5L,
10L, 10L, 10L, 10L, 15L, 15L, 15L, 15L, 20L, 20L, 20L, 20L),
Y = c(10.8, 10.7, 8.4, 8.5, 8, 8, 8, 7.9, 7.9, 7.2,
7.8, 7.2, 6.6, 6.5, 6.5, 6.4, 2.2, 4.5, 4.2, 6.2)), .Names = c("D",
"Y"), class = "data.frame", row.names = 21:40)
fm2 <-
nls(
formula=Y~w*(1-(i*D/(100*(1+i*D/A))))
, data=Data2
, start=list(w=13, i=3, A=80)
, algorithm="port"
)