Estoy pasando por una estadística de libros de texto en mi propia. Estoy usando semi-oficial código (de un manual escrito por alguien más, pero vinculados en el libro de texto del sitio) para calcular los ejemplos y ejercicios.

El código incluye una función para el ajuste de modelos lineales generalizados. He escrito desde el manual y corrió como lo sugiere. Y aunque el montaje funciona, me sale el error de arriba a la hora de asignar etiquetas a los resultados.

La línea de lo que tira el error es

names(fit$part) <- dn 

En ese punto, el valor de dn es [1] "(Intercept)" "Var1" y el valor de fit$par es [1] -5.9604611 0.3165604

No veo ninguna NULL allí, y me pregunto lo que podría causar el error.

El código completo es:

ct <- data.frame(alcohol.comsumption = c("0", "<1", "1-2", "3-5", ">= 6"), scores=c(0, 0.5, 1.5, 4, 7), absent = c(17066, 14464, 788, 126, 37), present = c(48, 38, 5, 1, 1))
n <- ct$absent + ct$present
alc.consumption <- rep(ct$scores, n)
y <- rep(rep(c(1,0), nrow(ct)), c(rbind(ct$present, ct$absent)))
logitreg <- function(x, y, wt = rep(1, length(y)), intercept = T, start = rep(0, p), ...)
{
if(!exists("optim")) library(MASS)
fmin <- function(beta, X, y, w) {
p <- plogis(X %*% beta)
-sum(2 * w * ifelse(y, log(p), log(1-p)))
}
gmin <- function(beta, X, y, w)
{
eta <- X %*% beta; p<-plogis(eta)
t(-2 * (w *dlogis(eta) *ifelse(y, 1/p, -1/(1-p))))%*% X
}
if(is.null(dim(x))) dim(x) <- c(length(x),1)
dn <- dimnames(x)[[2]]
if(!length(dn)) dn <- paste("Var", 1:ncol(x), sep="")
p <- ncol(x) + intercept
if(intercept) {x <- cbind(1, x); dn <- c("(Intercept)", dn)}
if(is.factor(y)) y <- (unclass(y) != 1)
fit <- optim(start, fmin, gmin, X=x, y=y, w=wt, ...)
# --- Next line throws the error --- #
names(fit$part) <- dn 
cat("\nCoefficients:\n"); print(fit$par)
cat("\nResidual Deviance:", format(fit$value), "\n")
cat("\nConvergence message:", fit$convergence, "\n")
invisible(fit)
}
logit.fit<-logitreg(x=alc.consumption, y=y, hessian=T, method="BFGS")
  • Parece usted o el autor del libro mal escrito names(fit$par) como names(fit$part), que no existe.
  • así que fue una estupidez error tipográfico?! Gracias por la captura, parece que también las horas de las estadísticas han reducido mi capacidad de concentración más de lo que esperaba 🙁 por Favor hacer que una respuesta, es absolutamente merecen la fácil rep.
  • En mi experiencia, los errores tipográficos (e incorrecta entre paréntesis) son una fuente importante de frustrante errores!
  • Desde este resultó ser un error tipográfico tengo a la bandera de esta para el retiro. Este es un arenque rojo para aquellos de nosotros que tienen este error para no errata razones.
  • Bueno, yo ni siquiera sabía que este críptico error puede ser causado por un error tipográfico. Entonces, me pareció que la pregunta útil. Supongo que hay que dejar que la comunidad a decidir si es más importante para dejarla (la cual ayuda a los que no saben que) o quitar (lo que ayuda a los que ya hemos examinado, y despidió a un error tipográfico)
  • por un error tipográfico» es uno de los pre-definido razones para marcar una pregunta para la eliminación. El marcar y el proceso de revisión de cómo la comunidad se decide esto.

InformationsquelleAutor rumtscho | 2014-04-12

1 Comentario

  1. 4

    Parece a usted o el autor del libro mal escrito names(fit$par) como names(fit$part), que no existe.

Dejar respuesta

Please enter your comment!
Please enter your name here