Blame | Last modification | View Log | Download | RSS feed
"biglm" <-function(formula, data, weights=NULL, sandwich=FALSE){tt<-terms(formula)if (!is.null(weights)){if (!inherits(weights, "formula"))stop("`weights' must be a formula")w<-model.frame(weights, data)[[1]]} else w<-NULLmf<-model.frame(tt,data)mm<-model.matrix(tt,mf)qr<-bigqr.init(NCOL(mm))qr<-update(qr,mm,model.response(mf),w)rval<-list(call=sys.call(), qr=qr,assign=attr(mm,"assign"), terms=tt,n=NROW(mm),names=colnames(mm), weights=weights)if (sandwich){p<-ncol(mm)n<-nrow(mm)xyqr<-bigqr.init(p*(p+1))xx<-matrix(nrow=n, ncol=p*(p+1))xx[,1:p]<-mm*model.response(mf)for(i in 1:p)xx[,p*i+(1:p)]<-mm*mm[,i]xyqr<-update(xyqr,xx,rep(0,n),w)rval$sandwich<-list(xy=xyqr)}class(rval)<-"biglm"rval}print.biglm<-function(x,...){cat("Large data linear model: ")print(x$call)cat("Sample size = ",x$n,"\n")invisible(x)}summary.biglm<-function(object,...){beta<-coef(object)se<-sqrt(diag(vcov(object)))mat<-cbind(`Coef`=beta, `(95%`=beta-2*se, `CI)`=beta+2*se, `SE`=se,`p`=2*pnorm(abs(beta/se),lower.tail=FALSE))rownames(mat)<-object$namesrval<-list(obj=object, mat=mat)class(rval)<-"summary.biglm"rval}print.summary.biglm<-function(x,digits=3,...){print(x$obj)print(round(x$mat,digits))if(!is.null(x$obj$sandwich))cat("Sandwich (model-robust) standard errors\n")invisible(x)}