问题描述
我有一个方程,给出一个介于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")
问题中没有定义变量u
,但这是一条逻辑曲线,将u
设置为0.000005可使范围的中位数为p = 0.5,因此u
大概在这个值附近。