5 votos

¿Cómo simular un diseño factorial no replicado?

Estoy tratando con un diseño factorial no replicado. Tengo algunos ejemplos ilustrativos pero necesito simular algunos diseños factoriales no replicados. No sé cómo y qué utilizar. Puede $R$ ¿manejar esto?

Por ejemplo, me gustaría analizar un $2^{4}$ diseño factorial (los factores son A, B, C y D) con una sola ejecución y 15 contrastes. Tengo una sola columna para la respuesta. Me gustaría comparar algunos métodos de la literatura para ver qué método detecta mejor los efectos activos. Así, establezco que los efectos activos tengan la misma magnitud de $1.5\sigma$ y me gustaría generar $100$ vectores de respuesta utilizando errores que son i.i.d. con $\mathcal N(0 ,1)$ . Mi modelo real tiene cuatro efectos activos y me gustaría simular $100$ vectores de respuesta utilizando este modelo verdadero $y=3+1.5A+1.5B+1.5C+1.5BC$ . Pero no sé cómo generar datos de este tipo utilizando R.

An example from Montgomery for $2^4$ unreplicated factorial design


Gracias gung por tu respuesta. Acabo de escribir un código sencillo antes de ver tu respuesta aquí. Creo que, necesito construir un poco más de conocimiento de R. De todos modos, aquí está:

Para el análisis de diseños factoriales no replicados con $k$ factores y $p=2^{k}-1$ efectos factoriales (los efectos principales y las interacciones), se suele utilizar el siguiente modelo

\begin{equation} y=\sum\limits_{i=0}^{p}x_{i}\beta_{i}+\varepsilon_{i} \end{equation}

Así que, en primer lugar, presenté mi mesa de firmas para $2^{4}$ y $\beta$ coeficientes de los llamados efectos activos.

La tabla de signos consta de filas (recorridos) y columnas (contrastes con la media general). enter image description here

Y luego, creé mi ecuación de regresión con magnitudes de efectos activos y ceros de efectos inactivos restantes. Mi modelo simulado, por ejemplo, fue $y=3+1.5A+1.5B+1.5C+1.5BC$ . enter image description here

Y luego, ejecuto el código siguiente

x=read.csv("sign2.txt", header=TRUE)
sign= as.matrix(x)
is.matrix(sign)

y=read.csv("beta2.txt", header=TRUE)
beta= as.matrix(y)
is.matrix(beta)

signt=t(sign)

bs=t(beta %*% signt)

epsilon=matrix( rnorm(16*1,mean=0,sd=1), 16, 1) 

response=bs+epsilon

Sin embargo, por desgracia, es para una simulación. Voy a poner un comando de bucle para ejecutar la simulación n veces.

2voto

Sean Hanley Puntos 2428

La clave para generar datos aleatorios como los tuyos en R es utilizar rnorma . También puede querer establecer la semilla aleatoria a un valor fijo, a través de ?set.seed para que su simulación pueda reproducirse exactamente en el futuro. Para mayor comodidad, es posible que prefiera utilizar Expandir la red para crear sus combinaciones de factores, aunque también puede hacerlo manualmente (y podría preferirlo por la claridad que ofrece). Una vez que haya configurado su simulación, querrá ejecutarla muchas veces para hacerse una idea de su comportamiento a largo plazo; esto puede hacerse utilizando Replicar creo, pero normalmente lo anido en un for porque me especializo en escribir código cómicamente ineficiente.

He aquí un ejemplo:

> set.seed(1)
> A <- c(0,1)
> B <- c(0,1)
> C <- c(0,1)
> D <- c(0,1)
> Xmat <- expand.grid(A=A, B=B, C=C, D=D)
> Xmat
   A B C D
1  0 0 0 0
2  1 0 0 0
3  0 1 0 0
4  1 1 0 0
5  0 0 1 0
6  1 0 1 0
7  0 1 1 0
8  1 1 1 0
9  0 0 0 1
10 1 0 0 1
11 0 1 0 1
12 1 1 0 1
13 0 0 1 1
14 1 0 1 1
15 0 1 1 1
16 1 1 1 1
> y <- 3 + 1.5*Xmat$A + 1.5*Xmat$B + 1.5*Xmat$C + 1.5*Xmat$B*Xmat$C + 
+      rnorm(n=16, mean=0, sd=1)
> y
 [1] 2.373546 4.683643 3.664371 7.595281 4.829508 5.179532 7.987429 9.738325
 [9] 3.575781 4.194612 6.011781 6.389843 3.878759 3.785300 8.624931 8.955066

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