title: Analyzing non-linear data with R
body: <p>I have following data in which there seems to be a curvilinear relation between xx and yy: </p>
  
  <pre><code>head(ddf)
    xx yy
  1  1 10
  2  2  9
  3  3 11
  4  4  9
  5  5  7
  6  6  6
  
  ddf = structure(list(xx = 1:23, yy = c(10L, 9L, 11L, 9L, 7L, 6L, 9L, 
  8L, 5L, 4L, 6L, 6L, 5L, 4L, 6L, 8L, 4L, 6L, 8L, 11L, 8L, 10L, 
  9L)), .Names = c("xx", "yy"), class = "data.frame", row.names = c(NA, 
  -23L))
  
  with(ddf, plot(xx,yy))
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/6VHuS.png" alt="enter image description here"></p>
  
  <p>I want to analyze this and get following:</p>
  
  <ol>
  <li>Find the nonlinear relation between xx and yy</li>
  <li>Get its equation</li>
  <li>Get its P value</li>
  <li>If possible get R (correlation coefficient) (nonlinear)</li>
  <li>Plot this curve</li>
  </ol>
  
  <p>I know of nls, which gives me an equation but I have to enter a formula, which may not be correct. Also I cannot get the curve and the R and P values here. </p>
  
  <pre><code>&gt; nls(yy~a*(xx^b), data=ddf)
  Nonlinear regression model
    model: yy ~ a * (xx^b)
     data: ddf
        a       b 
   9.5337 -0.1184 
   residual sum-of-squares: 95.85
  
  Number of iterations to convergence: 8 
  Achieved convergence tolerance: 3.407e-06
  Warning message:
  In nls(yy ~ a * (xx^b), data = ddf) :
    No starting values specified for some parameters.
  Initializing ‘a’, ‘b’ to '1.'.
  Consider specifying 'start' or using a selfStart model
  </code></pre>
  
  <p>I also know of stat_smooth of ggplot which can plot a curve. But that also does not give me the formula, R and P values. </p>