# [R] Error messages using nonlinear regression function (nls)

Wed Oct 18 17:58:11 CEST 2017

```Hi all,

I am trying to use nonlinear regression (nls) to analyze some seed germination data, but am having problems with error codes.

The data that I have closely matches the germination dataset included in the drc package.

Here is the head of the data

temp species start end germinated TotSeeds TotGerminated Prop
1   10   wheat     0   1          0       20             0  0.0
2   10   wheat     1   2          0       20             0  0.0
3   10   wheat     2   3          0       20             0  0.0
4   10   wheat     3   4          0       20             0  0.0
5   10   wheat     4   5          0       20             0  0.0
6   10   wheat     5   6          4       20             4  0.2

temp is the temperature under which the seeds were germinated, species denotes the species (wheat, mungbean, or rice)
Start and end denote the beginning and end of a period of time and germinated denotes how many seeds germinated during
that period of time. Prop represents the proportion of seeds that have germinated.

I have attempted to mimic Fox and Weisberg's appendix to Nonlinear Regression found here.
https://socserv.socsci.mcmaster.ca/jfox/Books/Companion/appendix/Appendix-Nonlinear-Regression.pdf

My first step is to look at a single species, wheat, and use nls on the individual temperatures.

I have tried to use both the nlsList function and to attempt to estimate the parameters using lm(), but I
receive error messages on both. Here is the code.

library(drc) ### for germination dataset
data(germination)

wheat = germination[germination\$species == "wheat",] ### subset by wheat
scatterplot(Prop ~ end|temp,data=wheat,box=FALSE,reg=FALSE) ### view the data
wheat\$temp = as.factor(wheat\$temp) ### convert to factor

### First, try to use nlsList
wheat.list <- nlsList(Prop ~ SSlogis(end,phi1,phi2,phi3)| temp,pool=FALSE,data=wheat) ###

### next, try to use lm to estimate starting parameters.
wheat.list = list()

for (i in 1:length(levels(wheat\$temp))){
tmpDat = wheat[wheat\$temp == levels(wheat\$temp)[i],]
tmp.lm <- lm(Prop ~ end,data = tmpDat)
tmp.nls <- nls(Prop ~ theta1 / (1 + exp(-(theta2 + theta3*end))),
start = list(theta1 = .5,theta2=coef(tmp.lm),theta3 = coef(tmp.lm)),
data = tmpDat,trace=TRUE)
tmp2.nls <- nls(Prop ~ SSlogis(end,phi1,phi2,phi3),data=tmpDat)
wheat.list[i] <- tmp.nls
}
#### End code
nlsList just returns an empty list.

When I try to loop through the individual temperatures, for the first temperature, nls converges when I provide
starting values, but when I try to use SSlogis(), I get the error messsage

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
NA/NaN/Inf in 'x'

For the second temperature (16), I get the following error message when provided initial values using lm:

Error in nls(Prop ~ theta1/(1 + exp(-(theta2 + theta3 * end))), start = list(theta1 = 0.5,  :