gpt4 book ai didi

r - 在ggplot2中使用nls的pred $ fit错误

转载 作者:行者123 更新时间:2023-12-04 06:51:22 25 4
gpt4 key购买 nike

所以我在ggplot2中使用nls绘制功率曲线代码如下:

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)

运行上面的代码,我得到以下错误:
Error in pred$fit : $ operator is invalid for atomic vectors

我假设尝试使用 predict()时发生错误?

当我在同一数据帧上不使用ggplot2来执行 nls时,我没有收到错误
> 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

谁能指出我为什么会收到错误消息?

最佳答案

在ggplot2邮件列表上的此question中回答了您的问题。简要地,

According to the documentation for predict.nls, it is unable to create standard errors for the predictions, so that has to be turned off in the stat_smooth call. .



因此,我们需要关闭标准错误:
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)

更新2019:对于新版本的ggplot2,我们需要像这样传递 startnls参数:
ggplot(df, aes(x = Mass, y = Solv)) +
stat_smooth(method = "nls",
se = FALSE,
method.args = list(
formula = y ~ i*x^z,
start = list(i=1, z=2)
)) +
geom_point()

关于r - 在ggplot2中使用nls的pred $ fit错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com