4 votos

Expectativa condicional y la función del piso

Tengo un pedazo de código que produce enteros aleatorios.

    int c = 250 - (int) floor(rand() * 50);
    while (c < 0) {
        c = 250 - (int) floor(rand() * 50);
    }

El floor() función devuelve el mayor valor de punto flotante de menos de o igual al argumento y que es igual a un número entero. El rand() función devuelve los valores de punto flotante dibujado a partir de la distribución normal estándar. Vamos a suponer que tanto funciona como se esperaba y que la pseudo random number generator funciona correctamente, de lo contrario además de la discusión no tendría sentido.

La pregunta es, ¿cuál es la expectativa de los enteros generados por este trozo de código?

Casting el código en términos matemáticos, quiero calcular la esperanza condicional $\mathbb{E}\bigl[250-\lfloor50\cdot Z\rfloor\quad\vert\quad 250-\lfloor50\cdot Z\rfloor\ge0\bigr]$ cuando la variable aleatoria Z es normal estándar distribuido, que es $Z\sim N(0,1)$. La condición se deriva del hecho de que el código anterior arroja números enteros negativos y dibuja de nuevo.

Tenga en cuenta que $\lfloor250 - 50\cdot x\rfloor=250-\lfloor 50\cdot x\rfloor$ mantiene, por lo que la colocación de la función del suelo no debería hacer una diferencia.

La pregunta en este punto es, es este modelo matemático correctamente para describir lo que está pasando en el código? Yo creo que sí, si usted piensa lo contrario, por favor dejar un comentario.

La razón de la transformación lineal $250-50\cdot x$ arriba es simplemente que a través de la rand() sólo una distribución normal estándar está disponible. Y $X=\mu-\sigma\cdot Z$ sólo se convierte en un $N(0,1)$ distribución en un $N(\mu,\sigma^2)$ distribución, aquí $N(250,50^2)$, por lo que la distribución normal estándar se desplaza a la derecha y ampliado.

Rechazando enteros negativos corresponde a truncar $N(250, 50^2)$ $0$ extracción de la parte inferior de la cola. Descuidar la función del suelo por un momento, mi intuición es, que el truncamiento de la distribución y el necesario reescalar debe mover la media más a la derecha, que es $\mathbb{E}\bigl[X\bigr]>250$ al $X\sim N_{\ge0}(250,50^2)$. De hecho, Mathematica confirma

N[Expectation[x,  x \[Distributed] TruncatedDistribution[{0, \[Infinity]}, 
TransformedDistribution[250 - 50*x, x \[Distributed] NormalDistribution[]]]], 30]

250.000074335997045245285622087

Por la definición de la expectativa de una distribución continua que hemos $$ \mathbb{E}\bigl[250-50\cdot Z \quad \vert \quad 250-50\cdot Z\ge0\bigr]=\mathbb{E}[X]=\int_{-\infty}^\infty x f(x)\;dx $$ con $Z\sim N(0,1)$$X\sim N_{\ge0}(250,50^2)$. El pdf $f(x)$ de la truncada y transformó la distribución normal estándar es $$ f(x)=\frac{g(x)}{1-\Phi\left(\frac{0-250}{50}\right)}\qquad g(x)=\begin{cases}0&x<0\\\phi\left(\frac{x-250}{50}\right)&x\ge0\end{casos} $$ donde $\phi(x)$ $\Phi(x)$ son los pdf y el cdf de la distribución normal estándar. El factor de escala $1-\Phi\left(\frac{0-250}{50}\right)$ es simplemente la probabilidad de masa que queda después de truncamiento. Dividiendo por que se asegura de que tenemos una distribución. Y, de hecho, $$ \int_0^\infty f(x)\;dx=1 $$ se comprueba fácilmente.

Ahora la única manera que conozco de la incorporación de la función del suelo, es por tratarla como lo que es, una función constante a trozos. El siguiente objetivo es convertir esta distribución continua en una función de paso. Cada paso que recoge todos los valores de punto flotante que se asignan por el piso de la función en el mismo entero. Por lo tanto $$ h(a)=\int_a^{+1}f(x)\;dx $$ es la altura del paso a $[a,a+1]$ donde $a\in\mathbb{N_0}$. La comprobación de que la función de paso es una distribución de probabilidad de los rendimientos de $$ \sum_{a=0}^\infty h(a)=1 $$ Ahora el buscado después de la expectativa debe ser simplemente $$ \mathbb{E}\bigl[250-\lfloor50\cdot Z\rfloor \quad \vert \quad 250-\lfloor50\cdot Z\rfloor\ge0\bigr]=\sum_{a=0}^\infty\cdot h(a) $$ Un rápido cálculo con Mathematica evalúa esta suma será

249.5000743384745...

Lo que es desconcertante mí por dos razones.

  1. Mi intuición es que la media debe desplazar a la derecha, no la izquierda, a pesar de los suelos.
  2. De hecho de ejecutar el código, dejando de producir una muestra de enteros aleatorios de tamaño 317440000 produce una media de

    250.507
    

El cálculo de $h(0)$ $h(250)$ y comparándolos con sus respectivas frecuencias relativas de la muestra de rendimientos $$ \begin{align*} h(0)&=0.0000000312698&h(250)&=0.00797832\\ h(1)&=0.0000000345445&h(251)&=0.00797513\\ \hat{h}(0)&=0.0000000346522&\hat{h}(250)&=0.00796824 \end{align*} $$ Un estadístico puede encontrar que es divertido para probar si la hipótesis de que mis derivación de la expectativa es correcta debe ser rechazado. Para mí esto sugiere un off-by-one de error y resulta que tomando el extremo derecho del paso y sumando $$ \sum_{a=0}^\infty (a+1)\cdot h(a) $$ los rendimientos

250.50007433847...

Suponiendo que Mathematica funciona correctamente y la generación de la muestra y su procesamiento son correctos y que esta derivación realmente describe lo que hace el código, esto sugiere que la he hecho un off-by-one de error. Por desgracia no puedo localizar el error.

Así, las preguntas son:

  1. Alguien puede identificar un error en el modelado?
  2. Alguien puede identificar un off-by-one de error?
  3. Alguien puede localizar otro error?
  4. Tal vez mi intuición es errónea, una vez más, y alguien puede confirmar la expectativa de $249.5+\epsilon$ por otro método?
  5. Alguien puede confirmar la expectativa de $250.5+\epsilon$ por otro método?

Por favor, acepte mis disculpas por esta larga publicar, pero no tengo tiempo para escribir uno más corto.

0voto

Dewfy Puntos 113

Después de leer a través de metaMSE voy a responder a la pregunta a mí mismo, como el error en la publicación original se encontró rápidamente, gracias de nuevo! Y pesado de edición de la publicación original destruye el contexto de los comentarios.

Como $⌊250−50⋅x⌋\neq250−⌊50⋅x⌋$ contrario a lo que escribí anteriormente, la derivación de la expectativa procede como sigue. Tenemos $250-\lfloor50\cdot X\rfloor$ donde $X\sim N(0, 1)$. Siempre que $250-\lfloor50\cdot X\rfloor<0$ es cierto que olvidar el resultado y se vuelve a dibujar. Debido a $$250<\left\lfloor50\cdot \frac{251}{50}\right\rfloor=251$$ aceptamos sólo dibuja dentro de la semi-abierta intervalo de $X\in[-\infty, 251/50)$, en consecuencia la distribución normal truncada a este intervalo. El pdf de este trunca distribución normal es $$ f(x)=\frac{g(x)}{\Phi(251/50)}\qquad g(x)=\begin{cases}0&x\ge \frac{251}{50}\\\phi(x)&x<\frac{251}{50}\end{casos} $$ La integración de $$ \int_{-\infty}^\infty f(x)dx=\frac{1}{\Phi(251/50)}\int_{-\infty}^\infty g(x)dx=\frac{1}{\Phi(251/50)}\int_{-\infty}^{\frac{251}{50}}\phi(x)dx=\frac{\Phi(251/50)}{\Phi(251/50)}=1 $$ confirma que tenemos una distribución de probabilidad. Para calcular la expectativa de $$\mathbb{E}\bigl[250-\lfloor50\cdot X\rfloor\bigr]=250-\int_{-\infty}^\infty\lfloor50\cdot x\rfloor f(x) dx $$ se utiliza el mismo enfoque como en la publicación original y el tratamiento de la función del suelo como lo que es, una función constante a trozos. Creando así una función de paso permite recoger todos los valores de punto flotante que se asignan a la función del suelo a la misma entero $a$. Tenemos $$ \begin{align} 250-\lfloor50\cdot x\rfloor&=a\in\mathbb{N}_0\\ 250-a&=\lfloor50\cdot x\rfloor\Leftrightarrow x\in\left[\frac{250-a}{50},\frac{250-a+1}{50}\right) \end{align}$$ Integrando a lo largo de este intervalo $$ h(a)=\int_{\frac{250-a}{50}}^{\frac{250-a+1}{50}}f(x)dx=\frac{1}{\Phi(251/50)}\int_{\frac{250-a}{50}}^{\frac{250-a+1}{50}}g(x)dx=\frac{\Phi\left(\frac{250-a+1}{50}\right)-\Phi\left(\frac{250-a}{50}\right)}{\Phi(251/50)} $$ nos da la probabilidad de acabar en el intervalo. La comprobación de que en realidad tenemos es una distribución fácil como la suma bien los telescopios. $$ \sum_{a=0}^{\infty}h(a)=\sum_{a=0}^{\infty}\frac{\Phi\left(\frac{250-a+1}{50}\right)-\Phi\left(\frac{250-a}{50}\right)}{\Phi(251/50)}=\frac{\sum_{a=0}^{\infty}\Phi\left(\frac{250-a+1}{50}\right)-\Phi\left(\frac{250-a}{50}\right)}{\Phi(251/50)}=\frac{\Phi\left(\frac{250-0+1}{50}\right)}{\Phi(251/50)}=1$$ Así, la expectativa es simplemente $$ \begin{align} \sum_{a=0}^\infty a\cdot h(a)&=\sum_{a=1}^\infty a\cdot\frac{\Phi\left(\frac{250-a+1}{50}\right)-\Phi\left(\frac{250-a}{50}\right)}{\Phi(251/50)}\\ &=\frac{1}{\Phi(251/50)}\left(\sum_{a=1}^\infty a\cdot \Phi\left(\frac{251-a}{50}\right)-\sum_{a=1}^\infty a\cdot \Phi\left(\frac{250-a}{50}\right)\right)\\ &=\frac{1}{\Phi(251/50)}\left(\sum_{a=0}^\infty (a+1)\cdot \Phi\left(\frac{251-(a+1)}{50}\right)-\sum_{a=1}^\infty a\cdot \Phi\left(\frac{250-a}{50}\right)\right)\\ &=\frac{1}{\Phi(251/50)}\left(\Phi\left(\frac{250}{50}\right)+\sum_{a=1}^\infty (a+1)\cdot \Phi\left(\frac{250-a}{50}\right)-a\cdot \Phi\left(\frac{250-a}{50}\right)\right)\\ &=\frac{1}{\Phi(251/50)}\left(\Phi\left(\frac{250}{50}\right)+\sum_{a=1}^\infty \Phi\left(\frac{250-a}{50}\right)\right)\\ &=\frac{\sum_{a=0}^\infty \Phi\left(\frac{250-a}{50}\right)}{\Phi(251/50)}\approx250.500067... \end{align} $$ Cualquier posibilidad de una forma cerrada de la suma? Probablemente no.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X