stat_functions 的基本计算 -- 绘制危险函数
Basic Calculations with stat_functions -- Plotting hazard functions
我目前正在尝试用 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 分布绘制危险函数,这意味着我想绘制:
上面的代码给我这个错误:
Computation failed in stat_function()
:
unused argument (x_trans)
我也试过直接用
S <- 1 - stat_function(fun="pweibull", ...)
而不是上面 "workaround" 自定义函数构造。这引发了另一个错误,因为我试图对一个对象进行数值运算:
non-numeric argument for binary operator
我收到该错误,但我不知道解决方案。
我做了一些研究,但没有成功。我觉得这应该很简单。我也想尽可能地做到这一点"manually",但是如果没有简单的方法可以做到这一点,那么打包解决方案也可以。
提前感谢您的任何建议!
PS:我基本上想重新创建您可以在链接的 PDF 文件第 10 页的 Kiefer, 1988 中找到的图表。
三条评论:
stat_function
是 ggplot2 的函数统计,您不能将两个 stat_function
表达式彼此相除或以其他方式在数学表达式中使用它们,如 S <- 1 - stat_function(fun="pweibull", ...)
.这是对 stat_function
的根本误解。 stat_function
始终需要添加到 ggplot2 图中,如下例所示。
stat_function
的 fun
参数将函数作为参数,而不是字符串。如果您需要尚不存在的函数,您可以即时定义函数。
您需要通过aes
函数设置美学映射。
此代码有效:
args = list("shape" = 1.2)
ggplot(data.frame(x = seq(0, 10, length.out = 100)), aes(x)) +
stat_function(fun = dweibull, args = args, color = "red") +
stat_function(fun = function(...){1-pweibull(...)}, args = args, color = "green") +
stat_function(fun = function(...){dweibull(...)/(1-pweibull(...))},
args = args, color = "blue")
我目前正在尝试用 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 分布绘制危险函数,这意味着我想绘制:
上面的代码给我这个错误:
Computation failed in
stat_function()
: unused argument (x_trans)
我也试过直接用
S <- 1 - stat_function(fun="pweibull", ...)
而不是上面 "workaround" 自定义函数构造。这引发了另一个错误,因为我试图对一个对象进行数值运算:
non-numeric argument for binary operator
我收到该错误,但我不知道解决方案。
我做了一些研究,但没有成功。我觉得这应该很简单。我也想尽可能地做到这一点"manually",但是如果没有简单的方法可以做到这一点,那么打包解决方案也可以。
提前感谢您的任何建议!
PS:我基本上想重新创建您可以在链接的 PDF 文件第 10 页的 Kiefer, 1988 中找到的图表。
三条评论:
stat_function
是 ggplot2 的函数统计,您不能将两个stat_function
表达式彼此相除或以其他方式在数学表达式中使用它们,如S <- 1 - stat_function(fun="pweibull", ...)
.这是对stat_function
的根本误解。stat_function
始终需要添加到 ggplot2 图中,如下例所示。stat_function
的fun
参数将函数作为参数,而不是字符串。如果您需要尚不存在的函数,您可以即时定义函数。您需要通过
aes
函数设置美学映射。
此代码有效:
args = list("shape" = 1.2)
ggplot(data.frame(x = seq(0, 10, length.out = 100)), aes(x)) +
stat_function(fun = dweibull, args = args, color = "red") +
stat_function(fun = function(...){1-pweibull(...)}, args = args, color = "green") +
stat_function(fun = function(...){dweibull(...)/(1-pweibull(...))},
args = args, color = "blue")