9 votos

Cómo ajustar una regresión como $y=\lfloor ax+b \rfloor$ en R?

Tengo algunos datos de series de tiempo donde la medición de la variable es discreta enteros positivos (cuenta). Quiero probar si hay una tendencia al alza a lo largo del tiempo (o no). La variable independiente (x) está en el rango de 0-500 y la variable dependiente (y) está en el rango 0-8.

Pensé que la respuesta a esta mediante el ajuste de una regresión de la forma y = floor(a*x + b) utilizando mínimos cuadrados ordinarios (OLS).

¿Cómo puedo hacer esto mediante R (o Python)? Hay un paquete existente del mismo, o soy mejor escribiendo mi propio algoritmo?

PS: sé que esta no es la técnica ideal, pero tengo que hacer un relativamente simple análisis que realmente puedo entender - mi fondo es la biología no matemáticas. Sé que estoy violando los supuestos acerca del error en la variable medida, y la independencia de las mediciones a lo largo del tiempo.

11voto

Eero Puntos 1612

Usted puede adaptar el modelo de estado el uso de la nls (no-lineal de mínimos cuadrados) de la función en R, pero como usted dijo que se violan muchos de los supuestos y probablemente aún no tienen mucho sentido (que están diciendo que el predijo el resultado es aleatorio en torno a un paso de la función, no se entero de los valores alrededor de una sin problemas el aumento de la relación).

La manera más común para ajustarse a los datos del conteo es el uso de regresión de Poisson utilizando el glm de la función en R, el primer ejemplo en la página de ayuda de regresión de Poisson, aunque si usted no está familiarizado con las estadísticas, sería mejor consultar con un especialista en estadística para asegurarse de que estás haciendo las cosas correctamente.

Si el valor de 8 es un máximo absoluto (imposible de ver alguna vez un cargo mayor, no sólo que es lo que vio), entonces usted podría considerar proporcional probabilidades de regresión logística, hay un par de herramientas para hacer esto en paquetes para R, pero usted realmente debe conseguir un estadístico involucrados si usted desea hacer esto.

10voto

user8076 Puntos 16

$\def\lf{\lfloor}\def\rf{\rfloor}\def\pnorm{\mathrm{pnorm}}$Es claro que Greg sugerencia es la primera cosa que hay que intentar: regresión de Poisson es el modelo natural en muchas de las situaciones concretas.

Sin embargo, el modelo que usted está sugiriendo puede ocurrir, por ejemplo, cuando se observa redondeado datos: $$ Y_i = \lf ax_i + b + \epsilon_i \rf,$$ con iid normal errores de $\epsilon_i$.

Creo que es interesante echar un vistazo a lo que se puede hacer con ella. Me indican por $F$ la cdf de la normal estándar variable. Si $\epsilon \sim \mathcal N(0,\sigma^2)$, luego $$\begin{align*} \mathbb P\left(\lf ax + b + \epsilon \rf = k\right) &= F\left({k-b+1-ax\over \sigma}\right) - F\left({k-b-ax\over \sigma}\right)\\ &= \pnorm(k+1-ax-b,sd=\sigma) - \pnorm(k-ax-b,sd=\sigma),\end{align*}$$ utilizando familiar equipo de notaciones.

Observa los datos de los puntos de $(x_i,y_i)$. El registro de probabilidad está dada por $$\ell(a,b,\sigma) = \sum_i \log\left( F\left({y_i-b+1-ax_i\\sigma}\right) - F\left({y_i-b-ax_i\\sigma}\right) \right).$$ Este no es idéntica a la de los mínimos cuadrados. Usted puede tratar de maximizar esta con un método numérico. Aquí está una ilustración en R:

log_lik <- function(a,b,s,x,y)
  sum(log(pnorm(y+1-a*x-b, sd=s) - pnorm(y-a*x-b, sd=s)));

x <- 0:20
y <- floor(x+3+rnorm(length(x), sd=3))
plot(x,y, pch=19)
optim(c(1,1,1), function(p) -log_lik(p[1], p[2], p[3], x, y)) -> r
abline(r$par[2], r$par[1], lty=2, col="red")
t <- seq(0,20,by=0.01)
lines(t, floor( r$par[1]*t+r$par[2]), col="green")

lm(y~x) -> r1
abline(r1, lty=2, col="blue");

rounded linear model

En rojo y azul, las líneas de $ax+b$ encontrado por numéricos de la maximización de esta posibilidad, y menos plazas, respectivamente. El verde de la escalera es $\lf ax +b\rf$ $a,b$ desde el máximo de probabilidad... esto sugiere que en el uso de mínimos cuadrados, a una traducción de $b$ 0,5, y tienen más o menos el mismo resultado; o, que de mínimos cuadrados del modelo $$ Y_i = [ a x_i + b +\epsilon_i], $$ donde $[x] = \lf x + 0.5 \rf$ es el entero más cercano. Redondeado de datos son a menudo tan conocido que estoy seguro de que este es conocido y ha sido estudiado extensivamente...

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