I need to move over a discrete set of linearly organized.. let's say "Japan steps" $S=\{0,\dots,c\}, c \in \mathbb{N}^*$. My current position is given by $d \in S$.
On each time step, I need to draw a new position $p \in S$. Let's call ${\cal D}(d)$ the distribution over $S$ that I will draw $p$ from, and $f_d : \left\{\begin{array}{l} S \rightarrow [0,1]\\ x \mapsto \mathbb{P}(p=x)\end{array}\right.$ the associated density function.
For any position $d$, I need ${\cal D}(d)$ to respect:
- $\mathbb{E}(p) = d$ (best expectation is no move)
- $\forall x \in S,\ \ f_d(x) > 0$ (any step can be reached at any time)
- $\forall (x,y) \in S,\ |x-d|<|y-d| \Rightarrow f_d(x) > f_d(y)$ (but don't move too far since I need autocorrelation)
- $\forall d \in S \setminus \{0,c\},\ \sum_{0}^{d-1}{f_d(x)} = \sum_{d+1}^{c}{f_d(x)}$ (symmetry in the motion: no attraction to the edges nor repulsion from them)
And it would just be awesome if we also could have a constant probability $K \in [0,1]$ for "staying here", such that, at least:
$\forall d \in S,\ f_d(d) \approx K$
Is this possible? If yes, what distribution shoud I use?
Well, I managed to hand-build a dirty distribution that works for me. The idea is to paste two geometric distributions together, and to truncate them not to get out of $S$:
$\forall d, x \in S, f_d(x) = \left\{\begin{array}{ll} K & \text{if}\ x = d\\ (1-K) - \frac{(1-\lambda)^{|x-d|}}{a\sum_{1}^{u}{(1-\lambda)^i}} & \text{if}\ x \neq d, \text{with}\ a = \left\{\begin{array}{ll}1 & \text{if}\ d \in \{0,c\} \\ 2 & \text{otherwise}\end{array}\right.,\text{and}\ u = \left\{\begin{array}{ll}d & \text{if}\ x < d \\ c-d & \text{if}\ x> d\end{array}\right.\end{array}\right.$
I don't like it since it doesn't look natural, but it does fulfill the above requirement. Here is some Mathematica script for playing around with it:
Any better idea is still welcome :)