2012-08-01 28 views
8

Estoy tratando de obtener el modelo final utilizando la eliminación hacia atrás con R, pero recibí el siguiente mensaje de error cuando ejecuté el código. ¿Alguien podría ayudarme?eliminación hacia atrás en R

base<-lm(Eeff~NDF,data=phuong) 
fullmodel<-lm(Eeff~NDF+ADF+CP+NEL+DMI+FCM,data=phuong) 
step(full, direction = "backward", trace=FALSE) 

> Error in step(full, direction = "backward", trace = FALSE) : 
number of rows in use has changed: remove missing values? 

Respuesta

10

Al comparar diferentes submodelos, es necesario que estén instalados en el mismo conjunto de datos - de lo contrario los resultados simplemente no tienen sentido. (Tenga en cuenta la situación extrema en la que tiene dos predictores A y B, que se miden solo en la mitad de sus observaciones; luego, el modelo y~A+B se ajustará a todos los datos, pero los modelos y~A y y~B se instalarán en no -superar subconjuntos de los datos.) Por lo tanto, step no le permitirá comparar submodelos que (debido a la eliminación automática de casos que contienen NA valores) están utilizando diferentes subconjuntos del conjunto de datos original.

El uso de na.omit en el conjunto de datos original debería solucionar el problema.

fullmodel <- lm(Eeff ~ NDF + ADF + CP + NEL + DMI + FCM, data = na.omit(phuong)) 
step(fullmodel, direction = "backward", trace=FALSE) 

Sin embargo, si usted tiene una gran cantidad de NA valores en diferentes predictores, puede acabar perdiendo mucho de su conjunto de datos - en un caso extremo podría perder el conjunto de datos toda. Si esto sucede, debe reconsiderar su estrategia de modelado ...

+0

Tengo una duda, ¿no tiene que poner el modelo completo en lugar de lleno en el paso (completo, dirección = "hacia atrás", rastreo = FALSO)? ¿Me equivoco? –

+0

sí. Acabo de copiar el código del OP sin mirarlo demasiado cuidadosamente. Gracias. –

+0

sí, funciona. Muchas gracias Ben Bolker por tus comentarios. –

Cuestiones relacionadas