繁体   English   中英

R 中的指数拟合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM