R语言 ggplot2中的打印模型

2hh7jdfx  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(89)

我想用ggplot而不是plot函数重新绘制图形,但很难得到相同的值。
包growthcurver产生我想用ggplot绘图的模型。

> data
   time         T1
1     0 0.01666667
2     1 0.06000000
3     2 0.12000000
4     3 0.34000000
5     4 0.29666667
6     5 0.34000000
7     6 1.23666667
8     7 2.21333333
9     8 2.64333333
10   24 3.89000000

model<- growthcurver:: SummarizeGrowth(data$time, data$T1)

plot(model.wt)

tibble(t = data$time, pred = model$model$m$fitted(),   N = data$T1) |> 
  ggplot(aes(t, pred)) +
  geom_point(aes(y = N)) +
  geom_line()

yhxst69z

yhxst69z1#

我已经回答了你之前的问题,我可以看到你当前的数据不太好用-特别是如果你有差距。借用一些后台代码到包中的绘图函数,你可以为这个类创建一个新的predict方法并使用它:

library(growthcurver)
library(tidyverse)

data <- tribble(
  ~time,  ~T1,
  0,      0.01666667,
  1,      0.06000000,
  2,      0.12000000,
  3,      0.34000000,
  4,      0.29666667,
  5,      0.34000000,
  6,      1.23666667,
  7,      2.21333333,
  8,      2.64333333,
  24,     3.89000000
  )

gc_mod <- SummarizeGrowth(data$time, data$T1)

当给定一组新的自变量时,该软件包中的NAtT函数会生成整组拟合值:

tibble(x = seq(min(data$time), max(data$time), length = 30),
       y = NAtT(gc_mod$vals$k, gc_mod$vals$n0, gc_mod$vals$r, x)) |> 
  ggplot(aes(x, y)) +
  geom_line()

我们可以用它来为gcfit对象类型定制一个新的predict函数:

predict.gcfit <- function(gc_mod, new_data = NULL) {
  
  if(is.null(new_data)) {
    new_data <- gc_mod$data$t
  } 
  
  pred <- NAtT(gc_mod$vals$k, gc_mod$vals$n0, gc_mod$vals$r, new_data)
  
  pred
}

tibble(time = seq(0, 24),
       pred = predict(gc_mod, new_data = time)) |> 
  left_join(data, by = "time") |> 
  ggplot(aes(time)) +
  geom_point(aes(y = T1)) +
  geom_line(aes(y = pred), colour = "red")
#> Warning: Removed 15 rows containing missing values (`geom_point()`).

相关问题