Re: [R] Finding Stopping time

2008-11-27 Thread Gustaf Rydevik
Hi Debanjan,

It would be more likely that you get a response if your question was more clear.
Your code is very difficult to read, and it doesn't help that you
don't provide any context, or comment your code with "### This is
calculating the average" kind of statements.
What are you trying to do?

Anyhow, after quite a bit of effort trying to understand what you've
done, I found your (simple!)
mistake:
Since you are resetting the "k" counter after your first try, you need
to change your "k" constant in that big quantity you're calculating to
(k-N[j-1]), like this:
T[k] <-
(((k-N[j-1])/2)*log(theta1/theta2))+(((theta2-theta1)/(2*theta1*theta2))*smm[k])-((k-N[j-1])*(theta2-theta1)/2)

As an aside, try not to use variables defined outside a function in
the function code (in this case your "x"). It makes the code more
difficult to follow, and far more likely to break.

Regards,

Gustaf


On Wed, Nov 26, 2008 at 4:04 PM, Debanjan Bhattacharjee
<[EMAIL PROTECTED]> wrote:
> Can any one help me to solve problem in my code? I am actually trying to
> find the stopping index N.
> So first I generate random numbers from normals. There is no problem in
> finding the first stopping index.
> Now I want to find the second stopping index using obeservation starting
> from the one after the first stopping index.
> E.g. If my first stopping index was 5. I want to set 6th observation from
> the generated normal variables as the first random
> number, and I stop at second stopping index.
>
> This is my code,
>
>
> alpha <- 0.05
> beta <- 0.07
> a <- log((1-beta)/alpha)
> b <- log(beta/(1-alpha))
> theta1 <- 2
> theta2 <- 3
>
> cumsm<-function(n)
>  {y<-NULL
>   for(i in 1:n)
>   {y[i]=x[i]^2}
>   s=sum(y)
>   return(s)
>  }
> psum <- function(p,q)
>   {z <- NULL
>for(l in p:q)
>   { z[l-p+1] <- x[l]^2}
>ps <- sum(z)
>return(ps)
>   }
> smm <- NULL
> sm <- NULL
> N <- NULL
> Nout <- NULL
> T <- NULL
> k<-0
>  x <- rnorm(100,theta1,theta1)
>  for(i in 1:length(x))
>{
>   sm[i] <- psum(1,i)
>   T[i] <-
> ((i/2)*log(theta1/theta2))+(((theta2-theta1)/(2*theta1*theta2))*sm[i])-(i*(theta2-theta1)/2)
>   if (T[i]<=b | T[i]>=a){N[1]<-i
>  break}
>
>}
> for(j in 2:200)
> {
>  for(k in (N[j-1]+1):length(x))
>{  smm[k] <- psum((N[j-1]+1),k)
>   T[k] <-
> ((k/2)*log(theta1/theta2))+(((theta2-theta1)/(2*theta1*theta2))*smm[k])-(k*(theta2-theta1)/2)
>   if (T[k]<=b | T[k]>=a){N[j]<-k
>  break}
> }
> }
>
> But I cannot get the stopping index after the first one.
>
> Tanks
> --
>
>[[alternative HTML version deleted]]
>
> __
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Gustaf Rydevik, M.Sci.
tel: +46(0)703 051 451
address:Essingetorget 40,112 66 Stockholm, SE
skype:gustaf_rydevik

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


[R] Finding Stopping time

2008-11-26 Thread Debanjan Bhattacharjee
Can any one help me to solve problem in my code? I am actually trying to
find the stopping index N.
So first I generate random numbers from normals. There is no problem in
finding the first stopping index.
Now I want to find the second stopping index using obeservation starting
from the one after the first stopping index.
E.g. If my first stopping index was 5. I want to set 6th observation from
the generated normal variables as the first random
number, and I stop at second stopping index.

This is my code,


alpha <- 0.05
beta <- 0.07
a <- log((1-beta)/alpha)
b <- log(beta/(1-alpha))
theta1 <- 2
theta2 <- 3

cumsm<-function(n)
  {y<-NULL
   for(i in 1:n)
   {y[i]=x[i]^2}
   s=sum(y)
   return(s)
  }
psum <- function(p,q)
   {z <- NULL
for(l in p:q)
   { z[l-p+1] <- x[l]^2}
ps <- sum(z)
return(ps)
   }
smm <- NULL
sm <- NULL
N <- NULL
Nout <- NULL
T <- NULL
k<-0
 x <- rnorm(100,theta1,theta1)
 for(i in 1:length(x))
{
   sm[i] <- psum(1,i)
   T[i] <-
((i/2)*log(theta1/theta2))+(((theta2-theta1)/(2*theta1*theta2))*sm[i])-(i*(theta2-theta1)/2)
   if (T[i]<=b | T[i]>=a){N[1]<-i
  break}

}
for(j in 2:200)
{
 for(k in (N[j-1]+1):length(x))
{  smm[k] <- psum((N[j-1]+1),k)
   T[k] <-
((k/2)*log(theta1/theta2))+(((theta2-theta1)/(2*theta1*theta2))*smm[k])-(k*(theta2-theta1)/2)
   if (T[k]<=b | T[k]>=a){N[j]<-k
  break}
 }
}

But I cannot get the stopping index after the first one.

Tanks
--

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.