3 условия неприемлемы в условии if в R - PullRequest
0 голосов
/ 25 июня 2019

Объявите, что процесс неуправляем, если Y>=UCL1, Y<=LCL1 (UCL1 и LCL1 контрольные пределы называются внешними контрольными пределами).

Объявите, что процесс находится под контролем, если LCL2<=Y<=UCL2 (и называются пределами внутреннего контроля). Однако, если UCL2<Y<=UCL1 или LCL1<Y<=LCL2, перейдите к шагу I и повторите процесс. Теперь это полный код R, пожалуйста, проверьте его и скажите, почему он не работает. когда я запускаю этот код, я не получаю никаких результатов.

ld=0.20;n=10; ssize=10000
p0=0.5;
k1=runif(ssize,0,3.2);k1
k2=runif(ssize,0,3.2);k2
mu.x=asin(sqrt(0.5));
var.x=1/(4*n)
M=c(); ARL=c();ARL=370;
shift=c(0.05,0.10,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.46,0.47,0.48,0.49,0.50,0.51,0.52,0.53,0.54,0.55,0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95)
UCL1=mu.x+k1*sqrt(var.x)*sqrt((ld/(2-ld)));UCL1
LCL1=mu.x-k1*sqrt(var.x)*sqrt((ld/(2-ld)));LCL1
UCL2=mu.x+k2*sqrt(var.x)*sqrt((ld/(2-ld)));UCL2
LCL2=mu.x-k2*sqrt(var.x)*sqrt((ld/(2-ld)));LCL2
for(l in 1:length(shift))
{
  p1=shift[l]
  x=c();rl=c();

  for(j in 1:10000){

    for(t in 1:10000){

      x[t]=asin(sqrt(rbinom(1,n,p1)/n))
      if(t==1){M[t]=ld*x[t]+(1-ld)*mu.x} else{M[t]=ld*x[t]+(1-ld)*M[t-1]}       # new Modified EWMA Statistic

      if((M[t]>UCL2 & M[t]<LCL2) | (M[t]>UCL1 & M[t]<UCL2) | (M[t]>LCL2 & M[t]<LCL1)) { 
        rl[j]=t
      }   
      else{ 
        rl[j]=0
      }
    }
  }
  ARL[l]=mean(rl)


}

print(cbind(shift,ARL,LCL1,LCL2,UCL1,UCL2))

1 Ответ

0 голосов
/ 25 июня 2019

Хорошо, одна из главных проблем - переменная цикла j никогда не определяется.Также вы должны заключить цикл for в фигурные скобки.

Как это:

for(j in 1:10000){
  for(t in 1:10000){
    if(Y>UCL2 | (Y<LCL2 & Y>UCL1) | (Y<UCL2 & Y>LCL2) | Y<LCL1) { 
      rl[j]=t
    }   
    else{ 
      rl[j]=0
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...