假设我有以下数据:
df1<-rnorm(100,000, 20,5)
我想从df1获得以下样本,每个样本有50个试验:
C=( 25,50,100,200,300,400,500,600)
接下来,我想绘制一条趋势线。在趋势线图中,x轴=样本大小,y轴是SD和SEM。抱歉,我无法绘制情节,但希望我的描述很清楚。谢谢你的帮助。
我不确定您要在这里做什么,但这是我想通过的第一步:
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库用于绘图,而不是基数R附带的库。您可以忽略my_theme
部分,这只是我所喜欢的美学。这是情节:
如果这不是您要查找的内容,除非我完全误解了您的问题,否则您应该可以修改这里的内容以获取所需的内容。无论如何,重要的部分是使用lapply
和sample
从df1
获取样本列表。然后,您可以仅使用sapply
和sd
计算每个的标准偏差,并使用sapply
,sd
,sqrt
和length
计算标准误差。
sapply
和lapply
都非常有用,特别是因为用户定义的函数可以作为参数传递。我建议查看lapply以了解其作用(sapply
只是lapply
的包装,它返回一个向量)。