7 votos

Efectos mixtos - ¿Cómo modelar el escalamiento aleatorio de las observaciones?

Estoy analizando una de tres vías modelo lineal mixto utilizando lmer:

Y ~ Factor1 * Factor2 * Factor3 + (1|sensor)

Sin embargo, los diferentes sensores tienen diferentes beneficios, de manera uniforme la ampliación de la respuesta de cada sensor en condiciones. Por lo tanto, una multiplicación de efectos aleatorios se parece más apropiado que el aditivo uno que uso actualmente. Puede algo como esto ser implementado en R?

Y ~ [Factor1 * Factor2 * Factor3] $\cdot$ (1|sensor)

(El punto de stands para la multiplicación)

Mi dependiente de medida puede ser negativo, por lo que el uso de log(Y) no parece una buena solución.

Editar:

Me gustaría probar un simplificada, la generalización de la formulación de este problema, usando la notación escalar. Vamos a empezar con un simple (efectos fijos) modelo lineal: $$y_i=X_i^1\beta_1+X_i^2 \beta_2+X_i^3 \beta_3+\epsilon$$ En este modelo, dado $X$$y$, $\beta$ coeficientes pueden ser fácilmente estimado por mínimos cuadrados ordinarios. Ahora, nos vamos a complicar las cosas, asumiendo que los diferentes subconjuntos de observaciones de la muestra por diferentes sensores y cada sensor tiene algún azar aditivo contribución $u$. Esta contribución está normalmente distribuida con 0 de la esperanza y un desconocido de la varianza a través de sensores. $$y_i=X_i^1\beta_1+X_i^2 \beta_2+X_i^3 \beta_3+u_{sensor(i)}+\epsilon$$ Este modelo puede ser estimado como un modelo de efectos mixtos: Y~X1+X2+X3+(1|sensor). Sin embargo, me gustaría considerar el caso de una multiplicación de efectos aleatorios: $$y_i=X_i^1\beta_1u_{sensor(i)}+X_i^2 \beta_2u_{sensor(i)}+X_i^3 \beta_3u_{sensor(i)}+..+\epsilon$$

Tenga en cuenta que para cada sensor, hay un único escalar ganancia. Yo deseo para la estimación de este modelo por R. A mi entender, el estándar de azar de la pendiente de aproximación, no se, ya Y~X1+X2+x3+(X1+X2+X3|sensor) sería estimar el modelo $$ y_i=X_i^1\beta_1u_{sensor(i)}^1+X_i^2 \beta_2u_{sensor(i)}^2+X_i^3 \beta_3u_{sensor(i)}^3+..+\epsilon $$ , la estimación de los tres diferentes al azar de las ganancias para cada sensor en lugar de uno.Y~0+(X1+X2+X3|sensor) no ayuda tampoco.

Alguna idea?

3voto

Matt Puntos 918

Hay un problema de identificabilidad. Supongamos $\beta$ $u$ trabajo. A continuación, $\beta/2$ $2u$ va a funcionar tan bien.

La solución básica es construir las curvas de calibración para los sensores y ejecutarlos con sus experimentos. Entonces, su prima mediciones se transforman en medidas en la misma escala.

En su defecto, usted tendrá que dejar a un sensor de ser el "sensor de referencia". Los otros sensores tendrá la variabilidad como un factor de escala relativa para el sensor de referencia.

Entonces, el modelo es no lineal. Sin alinear de alguna manera, probablemente no debería de tratar de encajar utilizando el modelo lineal métodos. En su lugar, usted debe utilizar algún tipo de modelo no lineal método.

Aquí hay un ejemplo usando no lineal de mínimos cuadrados. En este ejemplo, estoy usando continuo de variables, aunque el mismo enfoque es útil para los factores mediante el uso de efectos de codificación. Es simplemente más fácil de demostrar el uso continuo de variables.

# Gin up some data.

set.seed(838383)

Sensor <- data.frame(
    X1 = rnorm(150),
    X2 = rnorm(150),
    X3 = rnorm(150),
    U1 = c(rep(1, 50), rep(0, 50), rep(0, 50)),
    U2 = c(rep(0, 50), rep(1, 50), rep(0, 50)),
    U3 = c(rep(0, 50), rep(0, 50), rep(1, 50))
)

# Set some sensor gains and beta values.  Note
# that the first sensor is the reference sensor.

g <- c(1, 2, 4)
b <- c(-1, 1, 3)

# Simulate a simple version.  Careful of factors
# with numeric values.

Y <- with(
    Sensor,
    (b[1]*X1 + b[2]*X2 + b[3]*X3) * (g[1]*U1 + g[2]*U2 + g[3]*U3)
)

e <- rnorm(150)

Sensor$Y <- Y + e

Esto duplica el modelo que mostrar por encima, con un aditivo de error después de la transformación no lineal. Nota esto también supone un cero interceptar.

En este ejemplo, el primer sensor el sensor de referencia. El segundo y tercer sensores de producir medidas que difieren por un factor de escala de 2 y 4, respectivamente, a partir de la medición que el primer sensor se iba a producir.

# Fit a model using nonlinear least squares.

library(nlme)

f <- function(b1, b2, b3, X1, X2, X3, g2, g3, U1, U2, U3) {

    (b1*X1 + b2*X2 + b3*X3) * (1*U1 + g2*U2 + g3*U3)

}

fit <- nls(
    formula = Y ~ f(b1, b2, b3, X1, X2, X3, g2, g3, U1, U2, U3),
    start= c(b1=1, b2=2.4, b3=7, g2=2, g3=3),
    data = Sensor
)

summary(fit)

#Formula: Y ~ f(b1, b2, b3, X1, X2, X3, g2, g3, U1, U2, U3)
#
#Parameters:
#   Estimate Std. Error t value Pr(>|t|)
#b1 -1.02810    0.06005  -17.12   <2e-16 ***
#b2  1.01436    0.06237   16.26   <2e-16 ***
#b3  3.12400    0.15062   20.74   <2e-16 ***
#g2  1.85447    0.09965   18.61   <2e-16 ***
#g3  3.86931    0.19169   20.18   <2e-16 ***
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 1.106 on 145 degrees of freedom
#
#Number of iterations to convergence: 5
#Achieved convergence tolerance: 1.782e-07

Muy buen acuerdo con la $\beta$ coeficientes, el sensor de factores de escala, y la varianza de error.

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