在操作之前需要先下载Julia的Distributions包,这个包用于进行相关概率分布的函数调用。
在输入 ] 进入Julia包管理模式后输入:
add Distributions
这里我使用我们自己实验室的实测数据 ,平均值=0.67,方差=0.11,数据分布服从于正态分布,使用 Normal() 函数:
d = Normal(0.67, 0.11)
测试次数为3次一组,属于小样本量,所以使用 n-1 作为分母来得到无偏估计
#平均值
average = (data1 + data2 + data3) / 3
#标准差(无偏样本标准差,分母为 n-1)
standard_deviation = sqrt(((data1 - average)^2 + (data2 - average)^2 + (data3 - average)^2) / 2)
完整版Julia代码
using Distributions
# 创建一个均值为 0.67,标准差为 0.11 的正态分布对象
d = Normal(0.67, 0.11)
# 指定要生成的行数
num_rows = 10
open("BBGoy.csv", "w") do file
write(file, "数据1,数据2,数据3,平均值,标准差\n")
for i = 1:num_rows
# 从指定的正态分布中随机生成三个样本
data1 = rand(d)
data2 = rand(d)
data3 = rand(d)
# 平均值
average = (data1 + data2 + data3) / 3
# 标准差(无偏样本标准差,分母为 n-1)
standard_deviation = sqrt(((data1 - average)^2 + (data2 - average)^2 + (data3 - average)^2) / 2)
csv_row_data = [data1, data2, data3, average, standard_deviation]
formatted_csv_row = join(map(x -> "$(round(x, digits=4))", csv_row_data), ",")
write(file, formatted_csv_row * "\n")
end
end
R语言代码
#设置随机数种子
set.seed(123)
# 均值为 0.67,标准差为 0.11 的正态分布
mu <- 0.67
sigma <- 0.11
num_rows <- 10
results <- data.frame(数据1 = numeric(num_rows),
数据2 = numeric(num_rows),
数据3 = numeric(num_rows),
平均值 = numeric(num_rows),
标准差 = numeric(num_rows))
for (i in 1:num_rows) {
data1 <- rnorm(1, mean = mu, sd = sigma)
data2 <- rnorm(1, mean = mu, sd = sigma)
data3 <- rnorm(1, mean = mu, sd = sigma)
average <- (data1 + data2 + data3) / 3
# 小样本量通常使用 n-1 作为分母来得到无偏估计
n <- 3
variance <- ((data1 - average)^2 +
(data2 - average)^2 + (data3 - average)^2) / (n - 1)
standard_deviation <- sqrt(variance)
results[i, ] <- c(data1, data2, data3, average, standard_deviation)
}
# 保留四位小数
formatted_results <- data.frame(lapply(results, function(x)
format(x, digits = 4, nsmall = 4)))
write.table(formatted_results, file = "BBGoy.csv",
row.names = FALSE, col.names = TRUE, sep = ",", quote = FALSE)
生成数据