8 votos

Relación entre la exactitud de la predicción de regresión lineal y la correlación.

Esta pregunta es más bien teórica. No estoy seguro de si este es el lugar adecuado, pero todavía darle una oportunidad.

Tengo dos variables — costos directos y costos indirectos. Cuando las ventas de las personas que van de un argumento de venta para un cliente que saber sobre el costo directo que se va a incurrir para este servicio, pero no saben mucho acerca de los costos indirectos (que se llega a saber acerca de él en las últimas etapas). Una estimación de los costos indirectos en esta etapa será de gran valor para las ventas de las personas.

Estoy tratando de predecir los costos indirectos, como una función de costo directo. Estoy haciendo esto a través de una regresión lineal simple. He trazado gráfico de dispersión entre el costo directo y el costo indirecto y ver una buena relación lineal entre ellos. También veo que el costo directo y el costo indirecto son altamente corelated el uno al otro con el coeficiente de correlación de 0.98 como, así que me espera una muy buena precisión de la predicción. Pero, sorprendentemente, mi exactitud de la predicción no es tan bueno. Tengo alrededor de 200.000 puntos en mis datos de entrenamiento y el promedio del error de predicción en los datos de entrenamiento es de 17 %. Aunque ajustado R-Cuadrado valor es de 0,97. Estoy usando lm() función de R.

Mi pregunta es que en el caso de regresión lineal simple, en general, deberíamos esperar una mejor precisión de la predicción de si el dependiente y las variables independientes están altamente correlacionados o es mi idea errónea? Si esperamos una buena precisión, que me estoy perdiendo algo aquí. Por favor, tenga en cuenta que también he tratado de centrar estas variables en torno a la media.

3voto

Ender Puntos 98

Creo que sé lo que está pasando. Intuitiviely, su método de cálculo del error de predicción parece bien - tome el valor residual (he.e error) y ver lo grande que es relativa a sus datos (es decir, en relación a la predicción de valor o el valor de su variable dependiente) dividiendo por ese valor. Sin embargo, hay al menos un problema con el cálculo de error en esta manera que se me ocurre: Cuando se divide por el valor de la variable dependiente, se espera que el divisor no sea cercano a cero - cuando lo es, su residuales/(valor real) puede llegar a ser enorme, simplemente porque el valor real puede ser una fracción (es decir, cerca de cero...por ejemplo, .005). Me encontré con las siguientes simulaciones y confirmó mis sospechas:

# we'll run about 150 linear models. The x value will be closely related to the y value (linear relationship), meaning that if x is close to 0, y will be close to 0. The mean of the independent variable (x) is stored in the following vector:
seq(-50, 50, .7) -> mean_vals
# dataframe to save our regression results in:
data.frame(r_sqrd = NA, resid_over_value = NA, mean_vals = NA) -> frame

for(i in 1:length(mean_vals)){
    x <- rnorm(n = 1000, mean = mean_vals[i], sd = 10)
    x + rnorm(n = 1000, mean = 0, sd = 5) -> y
    lm(formula = y ~ x) -> k
    # This - or some close relative of this - is how you are calculating error 
    k$residuals/y -> z
    mean(z) -> frame[i,"resid_over_value"]
    # THe Rsquared value is a much more typical measure of fit/prediction error for a linear model:
    summary(k)$r.squared -> frame[i, "r_sqrd"]
    # Put the mean of the x values in the frame so we can see how your method of prediction error changes as a function of mean
    mean_vals[i] -> frame[i, "mean_val"]
}

Como se puede ver en el gráfico siguiente, su método de error no aumenta como una función de Rsquared (que es un problema en sí mismo, aunque no estoy 100% seguro de por qué está pasando esto)...El problema que me he centrado en tenía que ver con los valores atípicos en el siguiente gráfico.

plot(frame$r_sqrd, frame$resid_over_value, xlab = "Rsquared", ylab = "Error according to your method")

enter image description here

...Los puntos generalmente ocurren cuando la media de la variable predictora es cercana a cero, como se puede observar en el siguiente gráfico:

plot(frame$mean_val, frame$resid_over_value, xlab = "Mean of independent variable", ylab = "Error according to your method")

enter image description here

Para concluir, me sugieren usar una versión estándar de ajuste del modelo/del error de predicción, tales como el error cuadrático medio (MSE) o el rquared.

3voto

David Pokluda Puntos 4284

En una regresión lineal que usted está tratando de encontrar el mejor ajuste de un conjunto de salida $Y=(Y_1,\dots,Y_n)$ como una función lineal de entrada de $X=(X_1,\dots,X_n)$, es decir, desea que el $a$ $b$ que da a los más pequeños de los residuos:

$$(a,b)= arg \min \sum_i (Y_i-aX_i-b)^2$$

si es lo que usted hizo y que formalmente obtener (si se sigue trabajando con el mismo $n$ observaciones)

$$a=arg\min Var(Y-aX), \;\; b=\bar{Y}-a\bar{X},\;\; and \;\; R^2=\frac{var(aX)}{var(Y)}=corr(X,Y)$$ (donde, por cualquiera de los dos vectores $U,V$ $\bar{U}$ es empírica de la media de $Var(U)$ $corr(U,V)$ la correlación).

Usted no dice cómo calcular sus errores, pero si se computing $var(Y-ax)$, entonces es igual a $(1-R^2)*var(Y)$ así que si usted normalizar los errores por $var(Y)$, entonces usted tiene

$$Error=\frac{var(Y-ax)}{var(Y)}=1-R^2$$

que en su caso se debe 0.03 (debido a $R^2$ es de 0,97). Pero lo que hizo (supongo :) ) es que calcula la raíz del error medio dividido por la desviación estándar de la salida, que es exactamente $\sqrt{Error}$ (de acuerdo a mi definición).

Sus resultados son perfectamente correctas y se ajustan a la teoría, porque

$$ \sqrt{Error}=\sqrt{0.03}=0.1732051$$

nada sorprendente !

CQFD

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