많은 질문이 이미 R에있는 동안 알고 있지만 그 중 대부분이 보이지만 아무도이 문제를 해결하지 못하는 것 같습니다.중첩 된 while 루프 쓰기 R
정확하게 시뮬레이션 할 수없는 변수 (vanq)에 대한 시뮬레이션 스터디를 실행 중입니다. 그래서, 두 그룹에 대해 임의로 vanq 값을 생성 한 다음 다양한 테스트의 견고성을 테스트하는 대신, vanq 관측치의 큰 데이터 세트를 사용하고 그룹에 무작위로 그룹을 할당합니다 (기본적으로 동일한 작업을 수행하지만 역순으로 수행합니다). 각 그룹의 평균 vanq 값보다 작은 차이 각 그룹의
- 평균 vanq 값 미만 0.0001
- 차이 : 제대로 이렇게하려면, 나는 다음과 같은 조건을 모두 충족 그룹을 생성해야 나는 모두를 사용하고 0.0001 (최적 0)
- 세 가지 시험은 p.values 줄>
0.5 지금까지 내가 가지고있는 코드는 이것이다 :
#generate two random groups of equal size
mydata$X.5.NS = rbinom(nrow(mydata),1,0.5)
while(
#any of the tests give p.values less than 0.5
min(
t.test(mydata$vanq~mydata$X.5.NS, var.equal = TRUE)$p.value,
t.test(mydata$vanq~mydata$X.5.NS, var.equal = FALSE)$p.value,
wilcox.test(mydata$vanq~mydata$X.5.NS)$p.value) < 0.5 |
# or the means differ by more than 0.0001
abs(mean(mydata$vanq[ mydata$X.5.NS == 0]) -
mean(mydata$vanq[ mydata$X.5.NS == 1])) > 0.0001 |
#or the medians differ by more than 0
abs(median(mydata$vanq[ mydata$X.5.NS == 0]) -
median(mydata$vanq[ mydata$X.5.NS == 1])) > 0
)
{
#re-assign the random groups
mydata$X.5.NS = rbinom(nrow(mydata),1,0.5)
}
,536,
그러나 p.values를 가져 오는 데 약 12 초가 걸리고 모든 조건을 충족시키는 데 수백 시간이 걸리기 때문에 이러한 조건을 충족하는 데 1 시간 이상이 걸립니다. 일반적으로 나는 그것을 작동 시키도록 할 것이지만, 세 개의 다른 그룹에 대해 이것을 수행 할 필요가있다. 그리고 동일한 절차를 수행하지만, 평균이> 1만큼 다를 때까지 중앙값은 1보다 크고 모든 p.values는 < 0.05이고, 상당히 오래 걸린다.
while(
#the means differ by more than 0.0001
abs(mean(mydata$vanq[ mydata$X.5.NS == 0]) -
mean(mydata$vanq[ mydata$X.5.NS == 1])) > 0.0001 |
#or the medians differ by more than 0
abs(median(mydata$vanq[ mydata$X.5.NS == 0]) -
median(mydata$vanq[ mydata$X.5.NS == 1])) > 0
)
{
#re-assign the random groups
mydata$X.5.NS = rbinom(nrow(mydata),1,0.5)
}
#once the above conditions have been met, then perform the tests,
if(min(
t.test(mydata$vanq~mydata$X.5.NS, var.equal = TRUE)$p.value,
t.test(mydata$vanq~mydata$X.5.NS, var.equal = FALSE)$p.value,
wilcox.test(mydata$vanq~mydata$X.5.NS)$p.value) < 0.5)
{
#if any of the p.values were > 0.5, go back to the top of the while loop
}
아이디어는 평균과 중앙값 조건이 충족되면 테스트하여, 나는 많은이 과정을 빠르게 할 수 있다는 것입니다 : 내가하고 싶은 무엇
이 같은 것입니다. 나는 다른 다양한 흐름 제어 (if
, break
, next
등)를 행운없이 추가하려고했습니다. 내가 정말로 필요로하는 것은 go to line
명령이지만, R에는 존재하지 않는 것 같습니다. 어떤 도움이라도 대단히 감사합니다.
Here's a flow chart of the process I'm trying to code.
닫습니다. 이를 통해 p.values가 0.5 이상이되면 중지되고 평균 또는 중간 차이를 평가하지 않습니다. – JRF1111
@ JRF1111이 경우 유일한 루프 헤드의 모든 조건을 평가하는 것이 유일한 방법이라고 생각합니다. 그러나 단락되지 않은 논리 연산자'&&'와'&|'대신 단락 논리 연산자'&&'와'||'를 사용할 수 있습니다. 이렇게하면 필요한 조건 만 평가됩니다. 첫 번째 테스트가 이미 성공하면 나머지는'|| '에 대해 테스트 할 필요가 없습니다. –
그것은 수치 스럽습니다. 오 잘, 나는 그것이 단지 하루 (또는 2) 동안 달리게 할 것이다 고 생각한다. RE 단락 논리 연산자, 나는 실제로 모든 조건을 충족시켜야합니다. – JRF1111