如何使用ggplot绘制R中一个变量的方程式变化值

问题描述

我有一个方程,给出一个介于1和0之间的值,并且想在R中使用ggplot来绘制如何改变方程中的变量(年龄)如何改变输出值。我希望X轴的范围是从0到100的变量,并在X轴上绘制方程的输出值。

我设置传递给方程式的变量,如下所示:

age = 100
d <- (365/4)*age
k <- 5
N <-8
m <- 15000000
Nm <- N*m
p <- 1 - (1 - (1 - (1 - u)^d)^k)^Nm

我确信R中必须有一种简单的方法来给出一定范围的年龄值,以传递到方程式并将P的所得值绘制为一条线。但是我不确定如何最好地做到这一点。我是否需要事先填写范围内的值表,或者可以将范围本身放入ggplot命令中?

预先感谢

解决方法

您可以使用stat_function

p <- function(age,u,k,N,m)
{
  1 - (1 - (1 - (1 - u)^((365/4) * age))^k)^(N * m)
}

ggplot(data.frame(age = 1:100),aes(x = age)) + 
  stat_function(fun = p,args = list(u = 0.000005,k = 5,N = 8,m = 15000000)) +
  labs(y = "p")

enter image description here

问题中没有定义变量u,但这是一条逻辑曲线,将u设置为0.000005可使范围的中位数为p = 0.5,因此u大概在这个值附近。