给定变量的均值和方差的估计值,我将如何绘制理论正态分布?

时间:2019-11-13 18:41:20

标签: r plot normal-distribution

我正在尝试解决这个问题。假设可变英里是从正态分布的总体中采样的,那么在给出均值和方差估计的情况下,我将如何绘制理论正态分布?

data <- read.csv("data.csv", sep = "\t", header = TRUE)
data

   name    mile
1  dat1    5039
2  dat1    2883
3  dat2    135
4  dat2    104
5  dat3    32
6  dat3    192

我得到的英里的均值和方差如下:

mean(data$mile)
[1] 1397.5

var(data$mile)
[1] 4410420

但是我不确定这是否是要问的。有人以前有过这样的问题吗?任何帮助将不胜感激。

更新

pdf_norm <- function(x,mu,sigma){
  1/(sqrt(2*pi*sigma^2))*exp(-(x - mu)^2/(2*sigma^2))
}

mu <- 1397.5
sigma <- 4410420
x <- seq(mu-3*sigma, mu+3*sigma,length.out = 100) # empirical rule 3 sigma rule
d <- pdf_norm(x, mu,sigma)

plot(x,d, xlab = "X", ylab = "density")

到这里,我得到...的输出

Theoretical Normal Distribution

我尝试使用下面的代码将直方图叠加到上面的图上...

hist(data$mile, add = T)

但是结果是...

Superimposing a histogram

显然不正确。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可以使用rnorm()函数根据给定总体平均值和标准差的正态分布生成随机值,然后使用density()函数和plot()函数创建一个正态分布图。使用数据,您可以执行以下操作:

plot(density(rnorm(n = 100000, mean = mean(data$mile), sd = sd(data$mile))))

我使用了sd()函数来获取标准偏差,但是您也可以使用方差的平方根:sqrt(var(data$mile))

答案 1 :(得分:1)

如果需要绘制理论分布,则需要首先定义其PDF(例如,您可以找到公式here):

pdf_norm <- function(x,mu,sigma){
  1/(sqrt(2*pi*sigma^2))*exp(-(x - mu)^2/(2*sigma^2))
}

在这里,x是随机变量,mu是平均值,sigma是标准偏差。

在那之后,您可以进行绘图。将musigma设置为您的估计值并评估PDF。使用three-sigma rule选择范围。

mu <- 1397.5
sigma <- 4410420
x <- seq(mu-3*sigma, mu+3*sigma,length.out = 100) # empirical rule 3 sigma rule
d <- pdf_norm(x, mu,sigma)

plot(x,d, xlab = "X", ylab = "density")

您还可以确保PDF大约集成到1:

integrate(function(x) pdf_norm(x, mu, sigma), mu-3*sigma, mu+3*sigma)

输出 enter image description here