多次采样并使用趋势线计算平均值的标准偏差和标准误差

Multiple samplings and calculating Standard deviation and standard error of the Mean using a trend line

假设我有以下数据:

df1<-rnorm(100,000, 20,5)

我想从 df1 中获取以下样本,每个样本进行 50 次试验:

C=( 25,50,100,200,300,400,500,600)

接下来,我要绘制趋势线。在趋势线图中,x 轴 = 样本大小,y 轴 是 SDSEM。抱歉,我无法绘制情节,但希望我的描述很清楚。谢谢你的帮助。

我不确定你想在这里做什么,但这是我认为你想要的第一次通过:

library(ggplot2)

my_theme = theme_minimal() + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"), legend.title = element_blank())

df1 <- rnorm(100000, 20, 5)

df <- data.frame(sample_size = c(25,50,100,200,300,400,500,600))

samples <- lapply(df$sample_size, function (x) {sample(df1, x)})

df$std <- sapply(samples, sd)
df$se <- sapply(samples, function(x) {sd(x)/sqrt(length(x))})


ggplot(data = df) + geom_point(aes(x = sample_size, y = std, colour = "std")) + geom_point(aes(x = sample_size, y = se, colour = "se")) + 
    geom_smooth(aes(x = sample_size, y = std), method = "lm",) +
    geom_smooth(aes(x = sample_size, y = se), method = "lm") + my_theme

我更喜欢使用 ggplot2 库来绘图,而不是使用 base R 自带的库。你可以忽略 my_theme 部分,这正是我喜欢的美学。这是情节:

如果这不是您要查找的内容,您应该能够修改此处的内容以获得您想要的内容,除非我完全误解了您的问题。无论如何,重要的部分是使用 lapplysampledf1 中获取样本列表。然后,您可以使用 sapplysd 计算每个的标准差,使用 sapplysdsqrt 和 [=20 计算标准误差=].

sapplylapply 都非常有用,特别是因为用户定义的函数可以作为参数就地传递。我建议查看 lapply 以了解它在做什么(sapply 只是 lapply 的包装器,returns 是一个向量)。