[英]Exponential Fitting in R
我有一个包含两列的数据集,我想拟合指数曲线并在图表上显示方程。 你能帮我写代码吗?
x<-1:6
y<-c(86000,114597,165576,207467,328745,531531)
df<-as.data.frame(cbind(x,y))
ggplot(df,aes(x,y))+
geom_point()+
geom_line(colour=" dark blue")+
geom_smooth(method = "nls",se = F)+
scale_y_continuous(labels = scales::comma)+
theme_economist()+
xlab("Grade")+
ylab("Salary avg")
当我尝试使用 nls 时,我看不到 ggplot 上的曲线。
设置:
library(ggplot2)
df <- data.frame(x=1:6,
y=c(86000,114597,165576,207467,328745,531531))
gg0 <- ggplot(df,aes(x,y))+
geom_point()+
geom_line(colour=" dark blue")+
scale_y_continuous(labels = scales::comma)+
ggthemes::theme_economist()+
xlab("Grade")+
ylab("Salary avg")
一种方法是将 GLM 与高斯族和日志链接相匹配:
gg0 + geom_smooth(method="glm",
formula=y~x,
method.args=list(family=gaussian(link="log")))
您可以使用nls
,但这有点棘手。 我在这里使用了自启动的方法,但是(1)必须安装存档的package,(2)无论如何都必须指定start
(我认为它被忽略但需要在那里)
## remotes::install_version("drLumi",version="0.1.2")
gg0 + geom_smooth(method="nls",
formula=y~drLumi::SSexp(x,b,y0),
se=FALSE,
method.args=list(start=list(b=1,y0=1)))
提取回归方程的不完整尝试:
g1 <- glm(y~x, data=df, family=gaussian(link="log"))
library(latex2exp)
library(equatiomatic)
s <- TeX(extract_eq(g1,ital_vars=TRUE))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.