Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绘制R中的密度柯西分布_R - Fatal编程技术网

绘制R中的密度柯西分布

绘制R中的密度柯西分布,r,R,只是好奇你如何从维基百科生成dcauchy发行版: 通常,你有 dcauchy(x, location = 0, scale = 1, log = FALSE) 对于单线密度p(x)v.s x 我假设为了从wiki生成图表,需要一个data.frame cauchy_dist <- data.frame(cauchy1 = rcauchy(10, location = 0, scale = 1, log = FALSE), cauchy2 = ....... , cauchy3 =

只是好奇你如何从维基百科生成dcauchy发行版:

通常,你有

dcauchy(x, location = 0, scale = 1, log = FALSE) 
对于单线密度p(x)v.s x

我假设为了从wiki生成图表,需要一个data.frame

cauchy_dist <- data.frame(cauchy1 = rcauchy(10, location = 0, scale = 1, log = FALSE), cauchy2 = ....... , cauchy3 = ..... ) 

然后给它添加行

您可以按如下方式创建数据:

location <- c(0, 0, 0, -2)
scale <- c(0.5, 1, 2, 1)
x <- seq(-5, 5, by = 0.1)
cauchy_data <- Map(function(l, s) dcauchy(x, l, s), location, scale)
names(cauchy_data) <- paste0("cauchy", seq_along(location))
cauchy_tab <- data.frame(x = x, cauchy_data)
head(cauchy_tab)
##      x     cauchy1    cauchy2    cauchy3    cauchy4
## 1 -5.0 0.006303166 0.01224269 0.02195241 0.03183099
## 2 -4.9 0.006560385 0.01272730 0.02272830 0.03382677
## 3 -4.8 0.006833617 0.01324084 0.02354363 0.03600791
## 4 -4.7 0.007124214 0.01378562 0.02440091 0.03839685
## 5 -4.6 0.007433673 0.01436416 0.02530285 0.04101932
## 6 -4.5 0.007763656 0.01497929 0.02625236 0.04390481
等等。然后我把柯西数据和x坐标向量一起放在一个数据框中,
x
。这样就有了所需的数据表

当然,有很多方法可以描述这一点。我更喜欢使用
ggplot
并向您展示如何绘图作为示例:

图书馆(tidyr)

库(ggplot2)

curve_labs您可以使用ggplot2的
stat_函数

ggplot(data.frame(x = c(-5, 5)), aes(x)) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = 0, scale = 0.5), aes(color = "a"), size = 2) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = 0, scale = 1), aes(color = "b"), size = 2) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = 0, scale = 2), aes(color = "c"), size = 2) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = -2, scale = 1), aes(color = "d"), size = 2) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_color_discrete(name = "",
                       labels = c("a" = expression(x[0] == 0*","~ gamma == 0.5),
                                  "b" = expression(x[0] == 0*","~ gamma == 1),
                                  "c" = expression(x[0] == 0*","~ gamma == 2),
                                  "d" = expression(x[0] == -2*","~ gamma == 1))) +
  ylab("P(x)") +
  theme_bw(base_size = 24) +
  theme(legend.position = c(0.8, 0.8),
        legend.text.align = 0)

注意,我不会使用
p(x)
作为轴标签。PDF并不能真正描述概率。
dcauchy(x, location[1], scale[1])
library(ggplot2)
curve_labs <- paste(paste("x0 = ", location), paste("gamma = ", scale), sep = ", ")
plot_data <- gather(cauchy_tab, key = curve, value = "P", -x )
ggplot(plot_data, aes(x = x, y = P, colour = curve)) + geom_line() +
   scale_colour_discrete(labels = curve_labs)
ggplot(data.frame(x = c(-5, 5)), aes(x)) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = 0, scale = 0.5), aes(color = "a"), size = 2) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = 0, scale = 1), aes(color = "b"), size = 2) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = 0, scale = 2), aes(color = "c"), size = 2) +
  stat_function(fun = dcauchy, n = 1e3, args = list(location = -2, scale = 1), aes(color = "d"), size = 2) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_color_discrete(name = "",
                       labels = c("a" = expression(x[0] == 0*","~ gamma == 0.5),
                                  "b" = expression(x[0] == 0*","~ gamma == 1),
                                  "c" = expression(x[0] == 0*","~ gamma == 2),
                                  "d" = expression(x[0] == -2*","~ gamma == 1))) +
  ylab("P(x)") +
  theme_bw(base_size = 24) +
  theme(legend.position = c(0.8, 0.8),
        legend.text.align = 0)