6 votos

imponer un intercepto en lm en r

Me estoy convirtiendo un alto dimensiones modelo a un menor modelo tridimensional mediante la instalación de una ventana deslizante de un lineal (paramétrico) modelo y examinando la evolución de los valores de los parámetros a lo largo del tiempo. Me voy de 6.3 millones de puntos alrededor de 2500 valores de 6 parámetros.

La física dice que la intersección debe ser un valor constante, pero cuando uso LM se mueve alrededor. Creo que el movimiento es debido al ruido, y que es la causa de otros valores del parámetro de no indicar correctamente. Me gustaría establecer un valor constante.

Cómo hacer un modelo lineal en R que se ha prescrito para interceptar (no cero).

Código actual:

for (i in 1:(n-k)){

  fit <- lm(y ~ x1 + x2 + I(x3^2) + x4 + x5 + x6 , data=data[i:(i+k),])

  #STORE PARAMETERS INTO VARIABLES
...  #truncated for brevity
}

Código que no hace el trabajo:

  fit <- lm(y ~ I(9.81) + x1 + x2 + I(x3^2) + x4 + x5 + x6 , data=data[i:(i+k),])
  fit <- lm(y ~ 9.81 + x1 + x2 + I(x3^2) + x4 + x5 + x6 , data=data[i:(i+k),])

Pregunta:

  • ¿Cómo puedo recetar el constante?
  • He intentado buscar por esto tanto en google y la CV - hay un vocabulario que me estoy perdiendo?
  • Puede usted comentar sobre cómo algo como AIC o R2 son afectados por este modelo? Yo prefiero usar AIC o BIC y creo que, como modelo de los criterios de selección se deben tener en cuenta los parámetros, pero el R2 cambios (creo) de una manera fundamental entre los dos.
  • He intentado buscar en la CV para una respuesta a esta pregunta, pero no la encontró. Una solución alternativa que se propuso, pero su forma es sustancialmente diferente de lo que fue solicitado. Es sobre el masaje de las entradas, no sobre el formato de los comandos sin alterar fundamentalmente la de datos. La respuesta que me gustaba (y más útiles) es acerca de la forma de la fórmula introducida, no se trata de crear nuevas variables.

Como de costumbre, comentarios y sugerencias son solicitados.

9voto

AdamSane Puntos 1825

Algo así debería hacerlo:

fit <- lm( I(y-9.81) ~ 0 + x1 + x2 + I(x3^2) + x4 + x5 + x6 , data=data[i:(i+k),])

Algo similar debería ser posible en muchos paquetes.

Una alternativa:

interc <- rep(9.81,k+1)
fit <- lm(y ~ 0 + x1 + x2 + I(x3^2) + x4 + x5 + x6 + offset(interc),data=data[i:(i+k),])

Mientras que los coeficientes y errores estándar debe ser el mismo, una ventaja de la segunda es que en realidad, de darle un modelo para y en lugar de un desplazado y. En algunos casos, que pueden ser útiles.

(Si desea probar el valor de intersección, quitar el "0+".)

--

AIC debe estar bien trabajar de esta manera.

$R^2$ no realmente funcionan - al menos no sin un poco de pensamiento, e incluso entonces, probablemente no de la manera que usted quisiera. Su significado va a cambiar a partir de un modelo con una intercepción, desde un pre-especificado de intercepción es, efectivamente, un no-interceptar modelo (de hecho es, para un desplazado y).

Dependiendo de la forma exacta de cálculo de $R^2$, usted podría obtener valores fuera de $[0,1]$, por ejemplo, y las diferentes formas que eran equivalentes, no puede ser. No tener un libre interceptar hace que la comparación con una intercepción modelo sólo difícil.

Si usted necesita un $R^2$ usted necesita pensar cuidadosamente acerca de qué propiedades de $R^2$ la mayoría de la necesidad de preservar, porque vas a tener que dar algunas.

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