# Sumation inside a for loop

**URL:** <https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166>\
**Category:** General Usage\
**Created:** [February 26, 2020, 1:39pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166 "2020-02-26T13:39:50Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![marouane1994](https://avatars.discourse-cdn.com/v4/letter/m/74df32/32.png) [@marouane1994](https://discourse.julialang.org/u/marouane1994)\
**Post date:** [February 26, 2020, 1:39pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/1 "2020-02-26T13:39:51Z")

</div>

i have tried to do a simple code for MCMC as you see below:

```julia
traget(x)= (1/sqrt(2*pi*2^2))*exp((-(x-10)^2)/(2*2^2))
proposal(x)=Normal(x,1)
initial=-40
result=[]
Iteration=10000
chain=zeros(Iteration)
accept_rate= zeros(Iteration)

for i in 1:Iteration
    accept=0
    current= initial
    proposed= rand(proposal(current)) 
    C= traget(proposed)/traget(current)
    ratio= min(1, C)
    uniform=rand()
    if uniform< ratio
        push!(result, proposed)
        current= proposed
        
        accept+=1
    else
        current=current
        
    end
    chain[i]= current
    accept_rate[i]= accept/i
end

```

my problem is when i want to know how many values have passed the test which i can know by `length(result)` or just `accept` but when i type `accept` it shows me only either 0 or 1 and i want to show the number of the proposed values that have passed the MCMC test

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 26, 2020, 1:41pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/2 "2020-02-26T13:41:57Z")

</div>

You reset `accept` to zero at every step of your iteration, therefore it can only ever be `1` (if the last iteration produced a proposal that was accepted) or `0` (if it didn’t).

You prpbably meant to set `accept = 0` outside you iteration loop.

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [February 26, 2020, 1:47pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/3 "2020-02-26T13:47:53Z")

</div>

If the above code runs in the REPL and if you put `accept = 0` outside the loop, don’t forget to change the counting line to

```julia
global accept+=1

```

Looking at your code, I guess, that you put accept=0 into the loop, because you run into some error messages you didn’t fully understand.  
If this is the case, you may have some insights reading this:  
[https://docs.julialang.org/en/v1/manual/variables-and-scoping/](https://docs.julialang.org/en/v1/manual/variables-and-scoping/)

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [February 26, 2020, 2:07pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/4 "2020-02-26T14:07:47Z")

</div>

In addition to the advice above: it is much easier to work with this kind of code in functions instead of “scripts”.

Incidentally, you almost surely want to work with log pdfs.

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [February 26, 2020, 2:09pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/5 "2020-02-26T14:09:30Z")

</div>

> [@Tamas\_Papp](#):
>
> work with log pdfs

I am afraid this needs some further explanation 😉

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [February 26, 2020, 2:18pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/6 "2020-02-26T14:18:32Z")

</div>

Log probability density functions.

```julia
log_target(x) = (-(x-10)^2)/(2*2^2)

...

log_C = log_target(proposed) - target(current)

```

etc.

---

<div class="post-metadata">

**Author:** ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)\
**Post date:** [February 26, 2020, 2:20pm UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/7 "2020-02-26T14:20:24Z")

</div>

> [@Tamas\_Papp](#):
>
> probability density functions

= pdf

I was stuck in mind with Portable Document Format 😃

---

<div class="post-metadata">

**Author:** ![marouane1994](https://avatars.discourse-cdn.com/v4/letter/m/74df32/32.png) [@marouane1994](https://discourse.julialang.org/u/marouane1994)\
**Post date:** [February 27, 2020, 8:16am UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/8 "2020-02-27T08:16:06Z")

</div>

just to make sure you mean `log_target(proposed)-log_target(current)`right ? not `log_target(proposed) - target(current)`

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [February 27, 2020, 8:32am UTC](https://discourse.julialang.org/t/sumation-inside-a-for-loop/35166/9 "2020-02-27T08:32:02Z")

</div>

Sure, that’s a typo.
