Considere el generador de potencia \[ x_{n+1}=x_{n}^{d} \bmod N, \quad x_{n+1}<N \] donde \(N\) y \(d\) son los parámetros del generador. Asumiendo \(N=10000000\), \(d=2\) y una semilla \(x_{0}=7\),
G = function(x0, n, N=10000000, d=2){
x = numeric(0)
for(i in 1:n){
x[i] = ifelse(i==1, x0^d%%N, x[i-1]^d%%N)
}
x = x[x!=0]
list("R" = x/N, "x" = x)
}
# Se generan 1000 numeros aleatorios con semilla 7
x = G(x0 = 7, n = 1000); x
Bondad de ajuste
Se realizan pruebas para diferentes valores de semilla, en seguida los resultados:
De ahora en adelante se probarán las pruebas sobre los números pseudo-aleatorios con semilla \(x_0=7\).
Se realiza la prueba de bondad de ajuste:
En seguida el valor p de la prueba \(\chi^2\):
## [1] 1
Como el p-valor es mayor a 0.05, no hay suficiente evidencia estadística para rechazar que las muestras provienen de una distribución uniforme. En otras palabras, los números son aleatorios.
##
## One-sample Kolmogorov-Smirnov test
##
## data: x
## D = 0.03224, p-value = 0.2497
## alternative hypothesis: two-sided
Dado que el p-valor no es inferior al 5% (0.05), entonces no se rechaza la hipoteisis de que la secuencia de numeros aleatorios sea uniforme. Es decir, nuestros numeros aleatorios son uniformes
Aleatoriedad
##
## Runs Test
##
## data: as.factor(x > median(x))
## Standard Normal = 1.139, p-value = 0.2547
## alternative hypothesis: two.sided
Dado que el p-valor es mayor al 5% entonces no rechazamos la hipotesis de aleatoriedad.
Test de pares de numeros pseudoaleatorios
##
## Pearson's Chi-squared test with simulated p-value (based on 2000
## replicates)
##
## data: O
## X-squared = 3.4714, df = NA, p-value = 1
Como el p-valor del test de pares de números no es inferior al 5% no se rechaza la hipótesis de independencia.
Empleando la secuencia de números pseudoaleatorios del punto anterior, resuelva las siguientes integrales
Cambio de variable: \(y = \frac{x}{\pi}\), \(dy = \frac{dx}{\pi}\).
Función a promediar: \(\pi\sin^2\left(\pi y\right)\)
## [1] 1.621441
El valor exacto es \(\pi/2 \approx 1.5708\)
Cambio de variable: \(y = \frac{x}{4}\), \(dy = \frac{dx}{4}\).
Función a promediar: \(4 \cdot 4y \sqrt{(4y)^{2}+9}\)
## [1] 31.57053
El valor exacto es \(98/3 \approx 32.667\)
Cambio de variable: \(y = \frac{1}{1+x}\), \(dy = -y^2dx\).
Función a promediar: \(\frac{1}{y^2\sqrt{exp\left(\frac{1}{y}-1\right)}}\).
## [1] 2.050598
El valor exacto es \(2\)
Primero se reescribe la integral: \(\int_{-\infty}^{\infty} \frac{1}{e^{x}-e^{-x}} dx = \int_{-\infty}^{0} \frac{1}{e^{x}-e^{-x}} d x + \int_{0}^{\infty} \frac{1}{e^{x}-e^{-x}} d x\)
Para el primer término se cambia \(x\) por \(-z\), entonces \(dx = -dz\) y por tanto la integral toma la forma: \(\int_{-\infty}^{\infty} \frac{1}{e^{x}-e^{-x}} dz = -\int_{0}^{\infty} \frac{1}{e^{z}-e^{-z}} d z + \int_{0}^{\infty} \frac{1}{e^{x}-e^{-x}} d x = 0\)
Cambio de variable: \(y = \frac{1}{1+x}\), \(dy = -y^2dx\).
Función a promediar: \(\frac{1}{y^2\left[exp\left(\frac{1}{y}-1\right)-exp\left(1-\frac{1}{y}\right)\right]}\)
Lo mismo para el otro término de la integral
Utilizando una semilla \(x_0=7\) se tiene que el valor de la integral derecha es:
## [1] 4.381672
Mientras que si se utiliza \(x_0=11\) se obtiene:
## [1] 2.752596
Se intentó calcular con otras semillas y el resultado siempre fue diferente. En otras palabras, la integral no converge. Analíticamente esto se debe a la indeterminación de la integral cuando \(x\) tiende a cero por derecha.
\(\int_{0}^{\infty} \frac{1}{e^{x}-e^{-x}} d x = \int_{0}^{\infty} \frac{csch(x)}{2} = \frac{1}{2}log(tanh(x/2))\vert_0^\infty = -\infty\)
A pesar que ambas integrales (la izquierda y la derecha) son iguales, no podemos decir que su valor es cero, porque cada una es indeterminada. Y precisamente se observa de manera numérica, esto explica porque con cada semilla su valor es diferente (no converge).
Se lanza un dado normal y luego se lanza tantas veces como haya mostrado el primer lanzamiento. Defina la variable aleatoria \(X\) que suma las caras superiores de todos los dados lanzados y la variable aleatoria \(Y\) que cuenta el número total de lanzamientos. Crear una función \(R\) que genere este juego 1000 veces, guarde los resultados de \(X\) y \(Y\), y genere el promedio de los valores de \(X\) y \(Y\). Solo escriba el resultado de los promedios de \(X\) y \(Y\) y deje en el archivo .R el código.
Solución
Primero nos aseguramos que el dado sea honesto, es decir, que nuestro generador de números aleatorios pertenezca a una distribución uniforme discreta entre 1 y 6.
Ahora vamos a realizar los 1000 juegos y revisar los promedios:
## [1] "X promedio igual a 12.169"
## [1] "Y promedio igual a 3.515"