我正在尝试解决这个问题。假设可变英里是从正态分布的总体中采样的,那么在给出均值和方差估计的情况下,我将如何绘制理论正态分布?
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")
到这里,我得到...的输出
我尝试使用下面的代码将直方图叠加到上面的图上...
hist(data$mile, add = T)
但是结果是...
显然不正确。有人可以帮忙吗?
答案 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
是标准偏差。
在那之后,您可以进行绘图。将mu
和sigma
设置为您的估计值并评估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)