【问题标题】:Exponential Fitting in RR中的指数拟合
【发布时间】:2020-12-15 23:02:13
【问题描述】:

我有一个包含两列的数据集,我想拟合指数曲线并在图表上显示方程。 你能帮我写代码吗?

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 上看不到曲线。

【问题讨论】:

  • 我认为您可以使用 ggpmisc 包方便地做到这一点。
  • 有什么特别的功能可以看吗? (ggpmisc 里面有很多东西。)它是否适用于 glm/nls 适合(我见过的一些框架仅适用于 lm
  • 你能帮我写代码吗?我是 R 编程新手,抱歉

标签: r ggplot2 curve-fitting curve exponential


【解决方案1】:

设置:

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)必须安装一个归档包,(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))

【讨论】:

  • 谢谢!!!以及如何在图表上显示该等式?只是为了知道指数和 y 值来拟合曲线
  • 其他人将不得不提供帮助。 (您可以在ggplot2 之外拟合glmnls 以检索系数)
猜你喜欢
  • 2017-04-27
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
相关资源
最近更新 更多