使用stat_functions进行基本计算 - 绘制危险函数

时间:2017-11-26 21:10:26

标签: r ggplot2 statistics hazard

我目前正在尝试使用R ggplot2绘制一些密度分布函数。我有以下代码:

f <- stat_function(fun="dweibull",
                   args=list("shape"=1),
                             "x" = c(0,10))
stat_F <- stat_function(fun="pweibull",
                   args=list("shape"=1),
                             "x" = c(0,10))
S <- function() 1 - stat_F

h <- function() f / S
wei_h <- ggplot(data.frame(x=c(0,10))) +
         stat_function(fun=h) +
         ...

基本上我想根据具有不同参数的Weibull分布绘制危险函数,这意味着我想绘制:

https://i.stack.imgur.com/w2nlZ.gif

上面的代码给了我这个错误:

  

stat_function()中的计算失败:   未使用的参数(x_trans)

我也尝试过直接使用

S <- 1 - stat_function(fun="pweibull", ...)

而不是使用自定义函数构造的“解决方法”。这引发了另一个错误,因为我试图在一个对象上做数字算术:

  

二元运算符的非数字参数

我收到了这个错误,但我不知道解决方案。

我做了一些研究,但没有成功。我觉得这应该是直截了当的。另外我想尽可能“手动”做到这一点,但如果没有简单的方法可以做到这一点,那么打包的解决方案也很好。

提前感谢任何建议!

PS:我基本上想要重新创建您在链接PDF文件第10页的Kiefer, 1988中找到的图表。

1 个答案:

答案 0 :(得分:1)

三条评论:

  1. stat_function是ggplot2的函数统计量,您不能将两个stat_function表达式相互划分,也不能在数学表达式中使用它们,如S <- 1 - stat_function(fun="pweibull", ...)中所示。这是对stat_function的基本误解。始终需要将stat_function添加到ggplot2图中,如下例所示。

  2. fun的{​​{1}}参数将函数作为参数,而不是字符串。如果您需要那些尚不存在的功能,您可以动态定义功能。

  3. 您需要通过stat_function功能设置美学地图。

  4. 此代码有效:

    aes

    enter image description here