universitarios terror peliculas miedo los lista estudiantes espiritus clasicas r predict lfe

terror - método de predicción para felm del paquete lfe



peliculas de terror de estudiantes universitarios (4)

¿Alguien tiene una buena manera limpia de predict comportamiento de los modelos de felm ?

library(lfe) model1 <- lm(data = iris, Sepal.Length ~ Sepal.Width + Species) predict(model1, newdata = data.frame(Sepal.Width = 3, Species = "virginica")) # Works model2 <- felm(data = iris, Sepal.Length ~ Sepal.Width | Species) predict(model2, newdata = data.frame(Sepal.Width = 3, Species = "virginica")) # Does not work


Como solución alternativa, puede combinar felm , getfe y demeanlist siguiente manera:

library(lfe) lm.model <- lm(data=demeanlist(iris[, 1:2], list(iris$Species)), Sepal.Length ~ Sepal.Width) fe <- getfe(felm(data = iris, Sepal.Length ~ Sepal.Width | Species)) predict(lm.model, newdata = data.frame(Sepal.Width = 3)) + fe$effect[fe$idx=="virginica"]

La idea es que utilice una demeanlist de demeanlist para centrar las variables, luego lm para estimar el coeficiente en Sepal.Width utilizando las variables centradas, lo que le da un objeto lm sobre el que puede ejecutar predict . Luego ejecute felm + getfe para obtener la media condicional para el efecto fijo, y agregue eso a la salida de predict .


Creo que lo que estás buscando podría ser el paquete lme4 . Pude obtener una predicción para trabajar usando esto:

library(lme4) data(iris) model2 <- lmer(data = iris, Sepal.Length ~ (Sepal.Width | Species)) predict(model2, newdata = data.frame(Sepal.Width = 3, Species = "virginica")) 1 6.610102

Puede que tenga que jugar un poco para especificar los efectos particulares que está buscando, pero el paquete está bien documentado, por lo que no debería ser un problema.


Esto debería funcionar para los casos en los que desea ignorar los efectos de grupo en la predicción, predecir nuevas X y solo desea intervalos de confianza. Primero busca un atributo clustervcv , luego robustvcv , luego vcv .

predict.felm <- function(object, newdata, se.fit = FALSE, interval = "none", level = 0.95){ if(missing(newdata)){ stop("predict.felm requires newdata and predicts for all group effects = 0.") } tt <- terms(object) Terms <- delete.response(tt) attr(Terms, "intercept") <- 0 m.mat <- model.matrix(Terms, data = newdata) m.coef <- as.numeric(object$coef) fit <- as.vector(m.mat %*% object$coef) fit <- data.frame(fit = fit) if(se.fit | interval != "none"){ if(!is.null(object$clustervcv)){ vcov_mat <- object$clustervcv } else if (!is.null(object$robustvcv)) { vcov_mat <- object$robustvcv } else if (!is.null(object$vcv)){ vcov_mat <- object$vcv } else { stop("No vcv attached to felm object.") } se.fit_mat <- sqrt(diag(m.mat %*% vcov_mat %*% t(m.mat))) } if(interval == "confidence"){ t_val <- qt((1 - level) / 2 + level, df = object$df.residual) fit$lwr <- fit$fit - t_val * se.fit_mat fit$upr <- fit$fit + t_val * se.fit_mat } else if (interval == "prediction"){ stop("interval = /"prediction/" not yet implemented") } if(se.fit){ return(list(fit=fit, se.fit=se.fit_mat)) } else { return(fit) } }


Puede que esta no sea la respuesta que está buscando, pero parece que el autor no agregó ninguna funcionalidad al paquete lfe para hacer predicciones sobre datos externos mediante el uso del modelo felm ajustado. El foco principal parece estar en el análisis de los efectos fijos del grupo. Sin embargo, es interesante observar que en la documentación del paquete se menciona lo siguiente:

El objeto tiene cierta semejanza con un objeto ''lm'', y es posible que algunos métodos de posprocesamiento diseñados para lm funcionen. Sin embargo, puede ser necesario coaccionar el objeto para tener éxito con esto.

Por lo tanto, podría ser posible forzar el objeto felm a un objeto lm para obtener alguna funcionalidad lm adicional (si toda la información requerida está presente en el objeto para realizar los cálculos necesarios).

El paquete lfe está destinado a ejecutarse en conjuntos de datos muy grandes y se hizo un esfuerzo para conservar la memoria: como resultado directo de esto, el objeto felm no usa / contiene una descomposición qr, a diferencia del objeto lm . Desafortunadamente, el procedimiento de predict lm se basa en esta información para calcular las predicciones. Por lo tanto, coaccionar el objeto felm y ejecutar el método de predicción fallará:

> model2 <- felm(data = iris, Sepal.Length ~ Sepal.Width | Species) > class(model2) <- c("lm","felm") # coerce to lm object > predict(model2, newdata = data.frame(Sepal.Width = 3, Species = "virginica")) Error in qr.lm(object) : lm object does not have a proper ''qr'' component. Rank zero or should not have used lm(.., qr=FALSE).

Si realmente debe usar este paquete para realizar las predicciones, puede escribir su propia versión simplificada de esta funcionalidad utilizando la información que tiene disponible en el objeto felm . Por ejemplo, los coeficientes de regresión OLS están disponibles a través model2$coefficients .