1linesHyperb.lm <-
2    function(object, c.prob = .95, confidence = FALSE,
3             k = if(confidence) Inf else 1,
4             col = 2, lty = 2, do.abline = TRUE)
5{
6    n <- length(Res <- residuals(object))
7    df <- object $ df.resid
8    s2 <- sum(Res^2)/df
9    s <- sqrt(s2)
10    if(is.null(R <- object $ R)) ## in R
11        R <- qr.R(object $ qr)
12    Xm <- R[1,2]/R[1,1] # = mean(x_i) : (X'X)[1,] = (R'R)[1,] = [n  sum_{x_i}]
13    ##-- S_{xx} = sum_i{(x_i - mean(x_i))^2} : you can prove this: (R'R) = ...
14    S.xx <- R[2,2]^2
15
16    ux <- par("usr")[1:2]
17    d.xs <- data.frame(x = xs <- seq(ux[1],ux[2], length = 100))
18    names(d.xs) <-  attr(object$terms,"term.labels") #-- proper x-variable name
19    ys <- predict(object, new = d.xs)
20    pred.err <- qt(1-(1-c.prob)/2, df) * s * sqrt(1/k + 1/n + (xs-Xm)^2/S.xx)
21    o.p <- par(err=-1)
22    on.exit(par(o.p))
23    if(do.abline)
24        abline(object)
25    lines(xs, ys - pred.err, col=col, lty=lty)
26    lines(xs, ys + pred.err, col=col, lty=lty)
27}
28
29