根据r

时间:2017-01-15 10:02:33

标签: r ggplot2 distribution

我是r的新人,我会问你们一些帮助。我有x(值)和prob(它的概率)如下:

  • x < - c(0.00,1.08,2.08,3.08,4.08,4.64,4.68)
  • prob&lt; - c(0.000,0.600,0.370,0.010,0.006,0.006,0.006)

我的目标是根据这些值构建估算分布图。到目前为止,我使用qplot(x,prob,geom=c("point", "smooth"),span=0.55)制作它并在此处显示 https://i.stack.imgur.com/aVgNk.png

我的问题是:

  1. 还有其他方法来构建这样的好分发 不使用qplot?
  2. 我需要检索所有x值(即0.5,1,1.2等)及其相应的概率值。我可以这样做吗?
  3. 我一直在寻找,但没有运气。

    谢谢大家

2 个答案:

答案 0 :(得分:1)

如果您希望为prob的给定值预测x的值,则这是一种方法。请注意,我在此处使用了loess预测功能(因为我认为它是ggplot smooth geom的默认设置,您可以使用x <- c(0.00, 1.08, 2.08, 3.08, 4.08, 4.64, 4.68) prob <- c(0.000, 0.600, 0.370, 0.010, 0.006, 0.006, 0.006) {/ 1}}已使用过),可能适合您,也可能不适合您。

df <- data.frame( datapoints = seq.int( 0, max(x), 0.1 ) )

首先制作一个包含一列的数据框,我会将大量数据点放入该列,只是为了做出一堆预测。

predict

然后创建一个预测列。我正在使用loess函数,将loess平滑函数传递给它。 predict函数会为您提供输入数据,并要求loess使用df$datapoints中的函数来预测df$predicted <- predict( loess( prob ~ x, span = 0.55 ), df$datapoints )

的值
> head( df )
  datapoints  predicted
1        0.0 0.01971800
2        0.1 0.09229939
3        0.2 0.15914675
4        0.3 0.22037484
5        0.4 0.27609841
6        0.5 0.32643223

这是输出的样子。

ggplot2

在情节方面,qplot是一个很好的方式,所以我没有理由在这里回避ggplot2。如果您希望从ggplot2获得更多灵活性,可以更明确地编写函数代码(正如@Jan Sila在另一个答案中提到的那样)。这是plot <- ggplot( data = df, mapping = aes( x = datapoints, y = predicted ) ) + geom_point() + geom_smooth( span = 0.55 ) plot 更常见(也更灵活)语法的一种方式:

git clone git@github.com:bitnine-oss/agens-graph.git

答案 1 :(得分:0)

一旦指定了概率分布,就可以得到观察结果。Have a look here。这将帮助您并引导您完成MASS包。

..更好的图表?我认为ggplot是最好的(也很确定grapgh来自ggplot2)。如果你想要那样,那么你需要一个蓝色的geom_line,并在其上添加geom_point并使用相同的映射:)尽量熟悉教程,或者我们可以帮助你解决这个问题。 / p>