Me estoy divirtiendo mucho con el análisis de regresión en este momento, y por diversión me refiero a golpearme repetidamente en la cabeza. Tengo un conjunto de 200 puntos de datos, al filtrar sobre una propiedad de interés, termino con 153 puntos de uso.
Inicialmente utilicé estos 153 puntos para generar una regresión lineal, con un excelente R ${^2}$ y un gráfico de las variables ajustadas frente a las reales de una diagonal casi perfecta. Muy bien. Sin embargo, se sugirió que esto podría ser sólo un modelo internamente predictivo (que como yo lo entiendo significa que el modelo se ajusta a los datos, en lugar de lo contrario). Así que probé lo siguiente: Seleccioné al azar una muestra de 100 de los 153 resultados, y construí el mismo modelo, que seguía dando un ajuste relativamente bueno. A continuación, utilicé la función predict en R para intentar predecir el resultado de los otros 53 registros. No me fue bien. Lo que obtuve fue una de dos cosas.
- las predicciones no tenían ningún sentido, ni siquiera en la misma escala que los valores reales.
- la mayoría de las predicciones tenían sentido (aunque no eran muy precisas) y una o dos, estaban en una escala totalmente diferente (órdenes de magnitud mayores, o menores).
Dado que el modelo que estoy ajustando tiene el tiempo como variable de respuesta, se sugirió que utilizara una regresión de ajuste gamma en lugar de una regresión lineal simple. Probé esto y terminé esencialmente con el resultado.
Entonces, ¿estoy usando R correctamente, fue Gamma una buena opción para esto? Estoy bastante seguro de que mis datos son buenos (no sesgados), así que si soy incapaz de predecir, a pesar del buen modelo - ¿significa esto que mi modelo es inútil? He estado trabajando en esto durante algunas semanas, y sería genial si pudiera salvar algo.
Los comandos de R que he utilizado:
modelSet<-sample(1:nrow(myData),100)
modelData<-myData[modelSet,]
predictData<-myData[-modelSet,]
fit<-lm("time~(x1+x2+x3+x4+x5+x6)^3", data=modelData)
pred<-predict(fit, predictData)
plot(predictData$time, pred) <- gives a really not useful plot
fit2<-glm("time~(x1+x2+x3+x4+x5+x6)^3", data=modelData, family=Gamma) # tried with link=log too
pred2<-predict(fit2, predictData)
plot(predictData$time, pred2) <- gives an even less useful plot