Parece que estás preguntando cómo generar bivariado de datos binarios con un pre-especificado odds ratio. Aquí voy a describir cómo se puede hacer esto, como usted puede generar un discretas variables aleatorias (como se describe aquí), por ejemplo.
Si desea generar datos con un determinado odds ratio, estamos hablando de los binarios que viene de una 2×2 tabla, por lo que la distribución normal no es relevante.
Deje X,Y ser los dos resultados binarios; el 2×2 tabla puede ser parametrizado en términos de la célula probabilidades de pij=P(Y=i,X=j). Los parámetros de p11,p01,p10 será suficiente, ya que p00=1−p11−p01−p10.
Se puede demostrar que hay un 1-a-1 es invertible asignación de {p11,p01,p10}⟶{MX,MY,OR} donde MX=p11+p01,MY=p11+p10 son las probabilidades marginales y OR es el odds ratio.
Es decir, podemos mapa de ida y vuelta entre el {celular probabilidades de } { las probabilidades marginales y Odds ratio}. El uso de este hecho, se puede generar bivariado de datos binarios con un pre-especificado odds ratio. Este resto de esta respuesta tendrá que caminar a través de ese proceso y el suministro de algunos crudo, R
código para llevarlo a cabo
El '⟶' es bastante simple; para generar datos con un determinado odds ratio usted tiene para invertir esta asignación. Para un valor fijo de MX,MY, tenemos
log(OR)=log(p11)+log(1−MY−MX+p11)−log(MY−p11)−log(MX−p11).
Es un hecho que
max(0,MX+MY−1)≤p11≤min(MX,MY).
Como p11 se mueve a través de este rango, OR aumenta monótonamente desde 0 a ∞, por lo que existe una única raíz de
log(p11)+log(1−MY−MX+p11)−log(MY−p11)−log(MX−p11)−log(OR)
como una función de la p11. Después de la resolución de esta raíz, p10=MY−p11p01=MX−p11p00=1−p11−p01−p10, punto en el cual tenemos la celda de probabilidades y el problema se reduce a simplemente generar discretas variables aleatorias.
El ancho del intervalo de confianza será una función de la cantidad de glóbulos rojos así que se necesita más información para, precisamente, reproducir los resultados.
Aquí hay algunos crudo, R
código para generar los datos como se especifica anteriormente.
# return a 2x2 table of n outcomes with row marginal prob M1, column marginal prob
# M2, and odds ratio OR
f = function(n, M1, M2, OR)
{
# find p11
g = function(p) log(p) + log(1-M1-M2+p) - log(M1-p) - log(M2-p) - log(OR)
br = c( max(0,M1+M2-1), min(M1,M2) )
p11 = uniroot(g, br)$root
# fill in other cell probabilities
p10 = M1 - p11
p01 = M2 - p11
p00 = 1-p11-p10-p01
# generate random numbers with those cell probabilities
x = runif(n)
n11 = sum(x < p11)
n10 = sum(x < (p11+p10)) - n11
n01 = sum(x < (p11+p10+p01)) - n11 - n10
n00 = n - (n11+n10+n01)
z = matrix(0,2,2)
z[1,] = c(n11,n10)
z[2,] = c(n01,n00)
return(z)
}