2 votos

¿Cómo tratar los coeficientes del producto en un modelo no lineal?

Estoy considerando un modelo de regresión no lineal como el siguiente:

y=(ax)*(bz)+u,

donde la muestra es IID, u es un término de error aleatorio tal que E(u|x,z)=0, y a y b son coeficientes para x y z, respectivamente. Me gustaría aplicar el estimador de mínimos cuadrados no lineales (NLS) para estimar a y b (es decir, nls(y~ax*bz, start=list(a=1.5,b=0.5) . Sin embargo, hay un problema de identificación de parámetros. En concreto, no puedo obtener las estimaciones de los coeficientes de a y b individualmente pero conjuntamente . Por ejemplo, si el valor verdadero de a*b=-1, entonces puedo obtener a=-1, b=1, o a=1, b=-1.

Pregunta : ¿Es factible obtener las estimaciones de a y b individualmente ?

2voto

Nixit Patel Puntos 34

No, no es factible por razones matemáticas, ya que hay un número infinito de combinaciones de a y b.

$y=(ax)*(bz)+u$

puede escribirse como

$y=(a\cdot x)\cdot(b\cdot z)+u$

que también puede escribirse como

$y=(a\cdot b)\cdot(x\cdot z)+u$

Así se puede estimar el valor óptimo de $(a\cdot b)$ y luego, para cada $a$ que elijas hay un $b = (a\cdot b)\div a$

Eso da un número infinito de soluciones posibles y no le has dado a tu ordenador ninguna pista sobre cuál elegir. Calcule el coeficiente conjunto, llámelo $(a\cdot b)$ y si tiene otras razones (es decir, razones no expuestas aquí) para preferir cualquiera de estos pares de $a$ y $b$ eres libre de elegir.

Por cierto, no es necesario nls para este coeficiente conjunto, puede utilizar lm como en

x <- runif(20, 0, 100)
z <- rnorm(20)
y <- jitter(5*x*z)

# either optimizer
nls(y ~ ab*x*z, start = list(ab=1)) 
# or linear regression
summary(lm(y ~ x:z - 1))

Entre las ventajas de lm son, que no necesita valores de inicio y obtiene un error estándar y R² de forma gratuita.

1 votos

Muchas gracias por la respuesta tan detallada. Es lo mismo que mi conjetura de que, sin más restricción en los parámetros, la solución es infinita. Me preguntaba si puede haber algunos trucos en R que permite tal modelo para ser implementado, como minimizar la función objetiva no lineal con restricción lineal.

1 votos

BTW, la pregunta original está a punto de estimar consistentemente $y=g_1(x_1)g_2(x_2)+u$ donde ambos $g_1(.)$ y $g_2(.)$ son funciones desconocidas y suaves. Pero la cuestión sigue siendo la misma: ¿cómo se pueden estimar las dos funciones $g_1$ y $g_2$ utilizando polinomios spline o Chebeshev mediante NLS?

0 votos

Dependiendo de las circunstancias, podría ser razonable añadir restricciones razonables. Puede ser sensato elegir $a$ y $b$ de manera que ambos sean del mismo tamaño $a = b$ . Una forma muy elegante es la regresión bayesiana con información a priori, incluso débil. $a$ y $b$ para restringirlos a parámetros razonables. Si no hay ninguna otra restricción, utilice cualquier par de parámetros $a$ y $b$ que arroja el algoritmo de optimización. Mientras que nls arrojará un error, optim realmente no le importa: Prueba optim(c(1, 1), function(arg) sqrt(sum(y-arg[1]*x*arg[2]*z)^2)) Cuidado: ¡Los valores iniciales importan mucho!

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