5 votos

Replicar R modelo en el SAS

Tengo un modelo que he desarrollado en R, pero también la necesidad de expresar en SAS. Es un doble GLM, es decir, que se adapten tanto a la media y la (registro)la varianza como combinaciones lineales de los predictores:

$E(Y) = X_1'b_1$

$\log V(Y) = X_2'b_2$

donde Y tiene una distribución normal, $X_1$ $X_2$ son los vectores de las variables independientes, y $b_1$ $b_2$ son los coeficientes a ser estimados. $X_1$ $X_2$ puede ser el mismo, pero no es necesario.

Puedo encajar esto en R usando gls() y el varComb y varIdent funciones. También he escrito una función personalizada que maximiza la probabilidad de uso de optim/nlminb, y verificado que se devuelve el mismo resultado que el gls.

Ahora me gustaría traducir esto en SAS. Sé que se puede utilizar PROC MIXED:

proc mixed;
  class x2;
  model y = x1;
  repeated /group = x2;
run;

Sin embargo, esto sólo me da lo que quiero si tengo 1 variable en el /la opción GRUPO. Si entro 2 o más variables, MIXTOS sólo puede manejar esto por el tratamiento individual de cada combinación de los niveles como un grupo distinto (es decir, se toma el producto cartesiano). Por ejemplo, si tengo 2 variables en $X_2$, con 3 y 4 respectivamente, MEZCLADO se ajuste a 12 parámetros de la varianza. Lo que yo quiero es que el registro de la varianza para ser aditivo en las variables especificadas, es decir, 6 parámetros.

Hay una manera de hacer esto en la MIXTA o cualquier otro proc? Yo podría, probablemente, el código algo en la PNL, pero me gustaría realmente preferiría no hacerlo.

3voto

Omar Kooheji Puntos 384

En lugar de que el código que presentamos, se supone que estás haciendo algo como class x21 x22 , seguido por el repeated cláusula group=x21*x22 , para finalizar con 12 parámetros. Esta es la única opción que yo soy consciente de que dentro de SAS, es decir, no creo que usted puede conseguir una clara estratificación de la variación a través de la combinación de los niveles de dos variables. Pero, a menos que me estoy perdiendo algo, usted debería ser capaz de re-código de la variable en un combinado x3 para lograr esto.

También, sólo para comprobar -- supuse que su x2 variable es elaborada de modo tal que se mantiene la apropiada exponencial de los valores para su log-lineal de la varianza del modelo. De lo contrario, puede que desee comprobar hacia fuera el local opción a la repetida declaración. Por ejemplo, el siguiente modelo en R:

wgt <- varExp(form =~ x)
fit <- gls(y ~ x, weights=wgt, data=dat)

corresponde a algo como lo siguiente en SAS:

proc mixed data=dat;
  model y = x / solution;
  repeated / local=exp(x);
run;

La covarianza de las estimaciones de los parámetros difieren por un factor de 2 entre R y SAS. Esto es debido a que la versión R de los modelos de $var(\epsilon_{ij}) = \sigma^2 e^{ 2bx_{i} }$ (ver ?varExp). Supongo que eres el procesamiento de su entrada y no el uso de varExp porque esto no es fácil de lograr en R si tiene factor de variables, pero yo pensé que mencionar que en el caso de que sea útil.

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