0

考虑以下随机数据:

set.seed(123456)
# generate random normal data
x <- rnorm(100, mean = 20, sd = 5)
weights <- 1:100
df1 <- data.frame(x, weights)

#
library(ggplot2)
ggplot(df1, aes(x)) + stat_ecdf()

我们可以创建一个一般的累积分布图。

但是,我想将我的曲线与 20 年前使用的数据进行比较。从论文中,我只知道数据是“最好由 x 截距为 1.1 且平均值为 18 的移位指数分布建模”

如何将这样的功能添加到我的情节中?

+ stat_function(fun=dexp, geom = "line", size=2, col="red", args = (mean=18.1))

但我不确定如何处理移位(x 截距)

4

2 回答 2

0

我不完全确定我是否理解指数函数的均值概念。但是,通常,当您将函数作为参数传递时,fun=dexp在您的情况下,您可以传递自己的修改函数fun = function(x) dexp(x)+1.1,例如:。也许尝试使用此功能将使您找到解决方案。

于 2016-12-07T09:00:45.163 回答
0

我认为这样的情况最好通过在通话function之外进行第一次处理ggplot

dexp不带参数mean,而是使用与 .rate相同的参数lambda。这意味着您需要rate = 1/18.1基于指数分布的属性。另外,我认为dexp这里没有多大意义,因为它显示了密度,我认为你真的想要 is 的概率pexp

您的代码可能如下所示:

library(ggplot2)
test <- function(x) {pexp(x, rate = 1/18.1)}
ggplot(df1, aes(x)) + stat_ecdf() +
    stat_function(fun=test, size=2, col="red")

在此处输入图像描述

你可以改变你的pexp分布这样做:

test <- function(x) {pexp(x-10, rate = 1/18.1)}
ggplot(df1, aes(x)) + stat_ecdf() +
    stat_function(fun=test, size=2, col="red") +
    xlim(10,45)

在此处输入图像描述

只是为了好玩,这是 usingdexp产生的:

在此处输入图像描述

于 2016-12-07T10:03:29.123 回答