Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 随样本量增加的自举相关系数_R_Ggplot2_Replication_Correlation_Confidence Interval - Fatal编程技术网

R 随样本量增加的自举相关系数

R 随样本量增加的自举相关系数,r,ggplot2,replication,correlation,confidence-interval,R,Ggplot2,Replication,Correlation,Confidence Interval,我想演示相关性周围95%置信区间的宽度如何随样本量的增加而变化,从n=10到n=100,每轮增加5个样本。我假设我们可以使用bootstrap函数来实现这一点,并将每轮复制1000次。如何在R中实现这一点? 见: 我们可以使用钻石数据: data(diamonds) x <- diamonds$price y <- diamonds$carat 数据(菱形) x您可以使用sapply循环您的样本大小,并为每个样本大小抽取1000个适当大小的随机样本,报告置信区间的平均宽度: se

我想演示相关性周围95%置信区间的宽度如何随样本量的增加而变化,从n=10到n=100,每轮增加5个样本。我假设我们可以使用bootstrap函数来实现这一点,并将每轮复制1000次。如何在R中实现这一点? 见:

我们可以使用钻石数据:

data(diamonds)
x <- diamonds$price
y <- diamonds$carat
数据(菱形)

x您可以使用
sapply
循环您的样本大小,并为每个样本大小抽取1000个适当大小的随机样本,报告置信区间的平均宽度:

set.seed(144)
ci.widths <- sapply(seq(10, 100, 5), function(x) mean(replicate(1000, {
  r <- sample(nrow(diamonds), x, replace=TRUE)
  diff(cor.test(diamonds$price[r], diamonds$carat[r])$conf.int)
})))
plot(seq(10, 100, 5), ci.widths, xlab="Sample size", ylab="CI width")
set.seed(144)

ci.widths您可以使用
sapply
循环您的样本大小,并为每个样本大小抽取1000个适当大小的随机样本,报告置信区间的平均宽度:

set.seed(144)
ci.widths <- sapply(seq(10, 100, 5), function(x) mean(replicate(1000, {
  r <- sample(nrow(diamonds), x, replace=TRUE)
  diff(cor.test(diamonds$price[r], diamonds$carat[r])$conf.int)
})))
plot(seq(10, 100, 5), ci.widths, xlab="Sample size", ylab="CI width")
set.seed(144)

ci.widths您可以自己添加图表和轴标题,但这段代码实现了我认为您使用ggplot2和“心理测量”软件包需要的功能:

library(ggplot2)
library(psychometric)

corSamp <- function(x) {
# return the correlation between price and carat on diamonds for a given sample size
  index <- sample(1:nrow(diamonds), x)
  carat <- diamonds$carat[index]
  price <- diamonds$price[index]
  return(cor(carat, price))
}

cors <- sapply(seq(5,100,5), corSamp)
lower <- sapply(1:20, function(i) return(CIr(r = cors[i], n = seq(5,100,5)[i], level = 0.95)[1]))
upper <- sapply(1:20, function(i) return(CIr(r = cors[i], n = seq(5,100,5)[i], level = 0.95)[2]))

myData <- data.frame(cbind(cors, lower, upper, seq(5,100,5)))

myPlot <- ggplot(myData, aes(x = V4, y = cors)) + geom_line() + geom_ribbon(aes(ymin = lower, ymax = upper), alpha = 0.5)
库(ggplot2)
图书馆(心理测量学)

corSamp您可以自己添加图表和轴标题,但这段代码实现了我认为您在使用ggplot2和“心理测量”软件包时需要的功能:

library(ggplot2)
library(psychometric)

corSamp <- function(x) {
# return the correlation between price and carat on diamonds for a given sample size
  index <- sample(1:nrow(diamonds), x)
  carat <- diamonds$carat[index]
  price <- diamonds$price[index]
  return(cor(carat, price))
}

cors <- sapply(seq(5,100,5), corSamp)
lower <- sapply(1:20, function(i) return(CIr(r = cors[i], n = seq(5,100,5)[i], level = 0.95)[1]))
upper <- sapply(1:20, function(i) return(CIr(r = cors[i], n = seq(5,100,5)[i], level = 0.95)[2]))

myData <- data.frame(cbind(cors, lower, upper, seq(5,100,5)))

myPlot <- ggplot(myData, aes(x = V4, y = cors)) + geom_line() + geom_ribbon(aes(ymin = lower, ymax = upper), alpha = 0.5)
库(ggplot2)
图书馆(心理测量学)

corSamp非常好!是否有可能加强这一点,因此对于每个样本量(5到100),我们重复绘制1000次,并以类似的方式报告每个样本量的相关性平均值,以及相应的上限和下限CI?[见下面josilber的回答]那么你不是在寻找给定样本量的相关性的数学确定置信区间,你实际上想要为每个样本量引导1000个集合,并获得相关性分布的CI?你应该能够通过结合我们的答案来做到这一点。使用他的答案生成样本,然后将geom_ribbon的上限和下限设为上限和下限CI值。非常好!是否有可能加强这一点,因此对于每个样本量(5到100),我们重复绘制1000次,并以类似的方式报告每个样本量的相关性平均值,以及相应的上限和下限CI?[见下面josilber的回答]那么你不是在寻找给定样本量的相关性的数学确定置信区间,你实际上想要为每个样本量引导1000个集合,并获得相关性分布的CI?你应该能够通过结合我们的答案来做到这一点。使用他的答案生成示例,然后将geom_功能区的上下界设置为CI值的上下界。