R中的I型错误模拟

时间:2018-06-19 21:49:26

标签: r simulation montecarlo

我正在尝试使用蒙特卡洛模拟为双变量正态数据计算i型错误率和相关检验的功效。

但是我得到错误类型和功率的意外值。 (我的错误类型为0.864)

我需要知道我是否做错了。谁能帮我吗?

<input type="radio" name="comm">Yes
<input type="radio" name="comm">No

<div id="error_message"></div>
<button id="btn">Submit</button>

1 个答案:

答案 0 :(得分:2)

您的代码还可以,但是您设置的模拟错误。

在您的代码中,您

  1. 模拟具有强相关性的二元数据rho = 0.8。
  2. 检验H0:rho = 0的假设。

因此,您正在替代假设下模拟数据,这就是为什么您获得0.864的结果的原因。从本质上来说,这是您针对特定替代产品的能力。您可以改为执行以下操作:

首先在原假设下模拟数据

>>> import re
>>> l2 = [re.sub(r"\s{2,}", "", s) for s in l1]
>>> l2
['1,A Ab', '2,B Bc ', '3, C Cd ']

给出约0.05的值。在替代方案中,您可以将代码与相关性0.8(或其他一些数字)一起使用。您可以使用以下代码对此进行概括,以轻松获得多种关联的功能。

sigma <- matrix(c(1,0,0,1),2,2) 
mu <- c(0,0)
#bivariate normal data under H0
sim <- replicate(n=1000, rmvnorm(10, mean=mu, sigma = sigma))

# Test the actual level under H0

result <- sapply(1:1000, function(i) { 
    cor.test(sim[,1,i],sim[,2,i],method = c("pearson"))$p.value})

mean(result < 0.05)

然后您就可以通过绘制关系来查看相关性对功效的影响

rho <- seq(0, .9, .1)
pwr <- sapply(rho, function(r) {
    sigma <- matrix(c(1,r,r,1),2,2) 
    mu <- c(0,0)
    #bivariate normal data 
    sim <- replicate(n=1000, rmvnorm(10, mean=mu, sigma = sigma))

    # Test the actual level
    result <- sapply(1:1000, function(i) { 
        cor.test(sim[,1,i],sim[,2,i],method = c("pearson"))$p.value})

    mean(result < 0.05)
})

enter image description here