Error with pred $ fit using nls in ggplot2

So, I use nls in ggplot2 to plot the power curve below:

mass <- c(4120,4740,5550,5610,6520,6870,7080,8500,8960,10350,10480,10550,11450,11930,12180,13690,13760,13800,14050,14700,15340,15790,15990,17300,18460,18630,18650,20050,23270,24530,25030,27540,28370,33460,33930,34450,34500) solv_acc <- c(2760,2990,2990,3180,3900,4010,4140,4680,4750,5330,4980,5860,5930,5570,5910,6790,6690,7020,6240,6620,6600,6860,7940,7600,8250,8530,7410,9160,9140,10300,10440,10390,11020,12640,11920,12110,12650) df <- data.frame(Mass=log(mass),Solv=log(solv_acc)) plotter <- (ggplot(df, aes(x=Mass, y=Solv)) + geom_point(shape=1) + stat_smooth(method = "nls", formula = y~i*x^z, start=list(i=1,z=0.2))) plotter <- plotter + labs(x = "Mass kDa" ,y = "Solvent Accessibility") print(plotter) 

By running the above code, I get the following error:

 Error in pred$fit : $ operator is invalid for atomic vectors 

I assume the error occurs when it tries to use predict() ?

When I execute nls without using ggplot2 in the same data frame, I do not receive an error message

 > nls1=nls(Solv~i*Mass^z,start=list(i=1,z=0.2),data=df) > predict(nls1) [1] 7.893393 7.997985 8.115253 8.123230 8.234519 8.273135 8.295350 8.429871 8.468550 8.574147 8.583270 8.588134 8.647895 8.677831 8.692939 8.777944 8.781648 8.783757 8.796793 8.829609 [21] 8.860502 8.881445 8.890558 8.947512 8.994380 9.000995 9.001769 9.053953 9.161073 9.198919 9.213390 9.281841 9.303083 9.420894 9.430834 9.441670 9.442703 

Can someone please indicate why I am getting the error message?

+7
r ggplot2
source share
1 answer

To the question in this question, the ggplot2 mailing list is listed. In short

According to the documentation for predict.nls, it cannot create standard errors for forecasts, so they must be disabled by calling stat_smooth ..

So, we have to disable standard errors:

 ggplot(df, aes(x=Mass, y=Solv)) + stat_smooth(method="nls", formula=y~i*x^z, se=FALSE, start=list(i=1,z=0.2)) + geom_point(shape=1) 
+8
source share

All Articles