我有一个简单的问题,虽然我无法在任何地方找到答案。我有以下数据集:
data.set <- c(7,7,8,8,7,8,9)
Basic Stats 书中的问题是:对于大小为 2 的样本,样本均值的抽样分布是什么?是否有可能在 R 指挥官(或使用命令行)中计算这一点。
我有一个简单的问题,虽然我无法在任何地方找到答案。我有以下数据集:
data.set <- c(7,7,8,8,7,8,9)
Basic Stats 书中的问题是:对于大小为 2 的样本,样本均值的抽样分布是什么?是否有可能在 R 指挥官(或使用命令行)中计算这一点。
以下是在进行简单随机样本而不进行替换时查看样本分布的几种方法:
# Exact
data.set <- c(7,7,8,8,7,8,9)
samps <- combn(data.set, 2)
xbars <- colMeans(samps)
table(xbars)
prop.table(table(xbars))
barplot(table(xbars))
# Simulated
data.set <- c(7,7,8,8,7,8,9)
out <- replicate( 10000, mean( sample(data.set, 2) ) )
prop.table(table(out))
hist(out)
确切的版本适用于小群体(如这个),但对于大群体/样本不实用,例如,如果您的群体规模为 100 并且您的样本大小为 10 并且您可以每秒计算 10,000 个均值,它仍然会需要将近 55 年的时间来制作确切的版本,因此在这种情况下模拟版本会好得多。
这个
mean2 <- function(x,y){ (x+y)/2 }
table(outer(data.set, data.set, "mean2")) / length(data.set)^2
会给
7 7.5 8 8.5 9
0.18367347 0.36734694 0.30612245 0.12244898 0.02040816
这可能是您正在寻找的那种东西。概率是 9、18、15、6 和 1 的 1/49。
补充:无需更换
mean2 <- function(x,y){ (x+y)/2 }
L <- length(data.set)
table(outer(data.set, data.set, "mean2")[- ((L+1)*(1:L)-L) ] ) / (L*(L-1))
给予
7 7.5 8 8.5
0.1428571 0.4285714 0.2857143 0.1428571
分别是 1/7、4/7、2/7、1/7,