-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelweights()
35 lines (35 loc) · 1.5 KB
/
relweights()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#https://blog.csdn.net/oldboys/article/details/78474957
#relweights()函数输入为回归分析模型,可以输出模型中自变量的重要性
relweights <-
function(fit,...){
R <- cor(fit$model)
nvar <- ncol(R)
rxx <- R[2:nvar, 2:nvar]
rxy <- R[2:nvar, 1]
svd <- eigen(rxx)
evec <- svd$vectors
ev <- svd$values
delta <- diag(sqrt(ev))
lambda <- evec %*% delta %*% t(evec)
lambdasq <- lambda ^ 2
beta <- solve(lambda) %*% rxy
rsquare <- colSums(beta ^ 2)
rawwgt <- lambdasq %*% beta ^ 2
import <- (rawwgt / rsquare) * 100
lbls <- names(fit$model[2:nvar])
rownames(import) <- lbls
colnames(import) <- "Weights"
#import<-import[order(import["Weights"],decreasing=TRUE)]
View(import)
barplot(t(import),names.arg=lbls,
ylab="% 重要性",
xlab="预测变量",
width=0.2,
cex.axis = 0.8,
cex.names = 0.6,
las=2,
main="预测变量的相对重要性",
sub=paste("R-Square=", round(rsquare, digits=3)),
...)
return(import)
}