理论部分

矩形分布(均匀分布),是指在某一区间内,随机变量取任何值的概率都是相同的。这种分布的概率密度函数在一个特定的区间内是一个常数,因此其图形呈现出一个矩形的形状,故得名为“矩形分布”。在概率论和统计学中,这是一种非常重要的概率分布方式,具有广泛的应用。在实际应用中,当某一随机变量在一区间内取值的可能性没有偏向时,就可以采用矩形分布(均匀分布)来描述这种随机性,比如实验室技术报告中计算B类不确定度。

矩形分布定义及PDF函数
X i X_{i} Xi独立时,可根据一系列的测量值分析,为 X i X_{i} Xi设定 P D F g x ( ξ ) PDFgx(\xi) PDFgx(ξ),当某些测量值 X i X_{i} Xi相互独立时,对它们的每一个设定PDF,而其余的 X i X_{i} Xi设定联合PDF。

某量X的可获信息
对于某量X,仅知其下限为 a a a,上限为 b b b, a < b a<b a<b

X所设定的分布
矩形分布: R ( a , b ) R(a,b) R(a,b)

矩形分布的PDF函数
g x ( ξ ) = { 1 b − 1 , a ≤ ξ ≤ b 0 , 其他 gx(\xi)= \begin{cases} \frac{1}{b-1}, a \leq \xi \leq b \\ 0, 其他 \end{cases} gx(ξ)={b11,aξb0,其他

使用R语言计算并验证

矩形分布图形绘制

library(ggplot2)  

a <- 0  # 矩形分布下限  
b <- 1  # 矩形分布上限
height <- 1 / (b - a)  # 矩形分布高度,即1除以区间的宽度  

x <- seq(a - 0.2, b + 0.2, length.out = 300)  # 扩展x范围以显示分布之外的区域  
# y值表示矩形分布的概率密度函数  
y <- ifelse(x >= a & x <= b, height, 0) 
df <- data.frame(x = x, y = y)  

ggplot(df, aes(x = x, y = y)) +  
  geom_line(colour = "blue", linewidth = 1.0) +  
  geom_vline(xintercept = c(a, b), linetype = 2, colour = "gray") +  
  labs(x = "x", y = "Density", title = "Uniform Distribution PDF") +  
  theme_minimal()

使用R语言计算矩形分布(均匀分布)并绘制图形-LMLPHP
使用渐近单样本Kolmogorov-Smirnov检验检查数据是否为均匀分布
使用 runif() 函数生成均匀分布随机数后进行检验

set.seed(123) # 设置随机种子 
data <- runif(100, min = 0, max = 1) # 生成100个[0,1]区间内的均匀分布随机数  
# 使用Kolmogorov-Smirnov检验检查数据是否均匀分布  
# 比较数据与标准的均匀分布U(0,1)  
ks_test_result <- ks.test(data, "punif", 0, 1)  
print(ks_test_result)

输出

	Asymptotic one-sample Kolmogorov-Smirnov test

data:  data
D = 0.052204, p-value = 0.9481
alternative hypothesis: two-sided

使用 rnorm() 函数生成正态分布随机数后进行检验

set.seed(123) # 设置随机种子 
data <- rnorm(1000, mean = 0, sd = 1) # 生成1000个均值为0、标准差为1的正态分布随机数  
# 使用Kolmogorov-Smirnov检验检查数据是否均匀分布  
# 比较数据与标准的均匀分布U(0,1)  
ks_test_result <- ks.test(data, "punif", 0, 1)  
print(ks_test_result)

输出

	Asymptotic one-sample Kolmogorov-Smirnov test

data:  data
D = 0.49514, p-value < 2.2e-16
alternative hypothesis: two-sided

以上的备择假设(拒绝原假设时接受的假设)使用的是双侧检验,意味着不考虑数据偏离原假设的方向,只关心偏离的大小。
通过观察两组输出的D值(两者之间的差异度)和P值(观察到的统计量出现概率,假设原假设是真实的。如果p值大于显著性水平(需查表),则不能拒绝原假设。),即不能拒绝数据来自矩形分布的原假设,因为p值远大于常用的显著性水平,而第二组输出显示p值极小,可以拒绝数据来自矩形分布的原假设。

使用Q_Q图验证数据是否属于矩形分布
使用正态分布数据演示

set.seed(123)
data <- rnorm(1000, mean = 0, sd = 1)  # 生成1000个均值为0、标准差为1的正态分布随机数

a <- min(data)
b<- max(data)

# 生成理论上的均匀分布分位数  
uniform_quantiles <- qunif(ppoints(length(data)), a, b)  
# 绘制QQ图  
qqnorm(data)  
qqline(uniform_quantiles, col="red")  
# 如果数据点大致沿着红线分布,则可能服从均匀分布

输出图像(可明显看出差别)
使用R语言计算矩形分布(均匀分布)并绘制图形-LMLPHP

使用矩形分布数据演示(服从状态明显)

set.seed(123)
data <- runif(1000, min = 0.34, max = 0.46) # 生成1000个矩形分布随机数据 
  
# 定义均匀分布的上限a和下限b 
a <- 0.34  
b <- 0.46  

# 生成理论上的均匀分布分位数  
uniform_quantiles <- qunif(ppoints(length(data)), a, b)  
# 绘制QQ图  
qqnorm(data)  
qqline(uniform_quantiles, col="red")  
# 如果数据点大致沿着红线分布,则可能服从均匀分布

使用R语言计算矩形分布(均匀分布)并绘制图形-LMLPHP

04-14 00:52