附上代码:
reg_diag <- function(fm){
n <- nrow(fm$model) #rawdata
df <- fm$df.residual #df_of_residual
p <- n-df-1
s <- rep(" ",n) #!
res <- residuals(fm)
s1 <- s
s1[abs(res)==max(abs(res))] <- "*"
sta <- rstandard(fm)
s2 <- s
s2[abs(sta)>2] <- "*"
stu <- rstudent(fm)
s3 <- s
s3[abs(stu)>2] <- "*"
h <- hatvalues(fm)
s4 <- s
s4[h>2*(p+1)/n] <- "*"
d <- dffits(fm)
s5 <- s
s5[d>2*sqrt((p+1)/n)] <- "*"
c <- cooks.distance(fm)
s6 <- s
s6[c==max(c)] <- "*"
co <- covratio(fm)
s7 <- s
s7[co=max(abs(co-1))] <- "*"
res <- list(residual=res,s1,standardedresidual=sta,s2,
studentedresidual=stu,s3,hat_matrix=hat,s4,
DFFITS=d,s5,cooks_distance=c,s6,
COVRATIO=co,s7)
write.csv("C:\\Users\\Administrator\\Desktop\\result.csv",res,col.names=T)
}
intellect <- data.frame(
x <- c(15,26,10,9 ,15 ,20,18,11 ,8 ,20,7 ,9 ,10,11,11 ,10 ,12 ,42,17 ,11,10),
y <- c(95,71,83,91,102,87,93,100,104,94,113,96,83,84,102,100,105,57,121,86,100)
)
lm.sol <- lm(y~x,data=intellect)
reg_diag(lm.sol)
|