多元统计分析及R语言建模-第6章 判别分析

# 第6章 判别分析


# 线性判别分析函数lda()的用法
lda(formula, data, ...)
# formula为一个形如groups~x1+x2+...的公式框架, data为数据框


# 6.2线性判别分析
d6.1 = read.table("clipboard",header=T); attach(d6.1)
plot(x1,x2); text(x1,x2,G,adj=-0.5,col=2)


library(MASS)
(ld = lda(G~x1+x2))
Z = predict(ld); Z
newG = Z$class; newG
cbind(G,Z$x,newG)
(tab = table(G,newG))
sum(diag(prop.table(tab)))


# 6.3 距离判别法
d6.2 = read.table("clipboard",header=T); attach(d6.2); head(d6.2)
plot(Q,C); text(Q,C,G,adj=-0.8)
plot(Q,P); text(Q,P,G,adj=-0.8)
plot(C,P); text(C,P,G,adj=-0.8)


# 二次判别函数qda()的用法
qda(formula, data, ...)
# formula为一个形如groups~x1+x2+...的公式框架,data为数据框
d6.3 = read.table("clipboard",header=T); attach(d6.3); head(d6.3)
plot(Q,C); text(Q,C,G,adj=-0.8)
plot(Q,P); text(Q,P,G,adj=-0.8)
plot(C,P); text(C,P,G,adj=-0.8)
(qd=qda(G~Q+C+P))
Z = predict(qd); newG = Z$class
cbind(G,newG)
(tab=table(G,newG))




# 6.4 Bayes判别法
library(MASS)
attach(d6.3)
(ld1 = lda(G~Q+C+P,prior=c(1,1,1)/3))
(ld2 = lda(G~Q+C+P,prior=c(5,8,7)/20))
Z1 = predict(ld1)
Z2 = predict(ld2)
cbind(G,Z1$x,Z1$class)
cbind(G,Z2$x,Z2$class)
table(G,Z1$class)
table(G,Z2$class)
# 后验概率
Z1$post


# 案例分析:企业财务状况的判别分析
# 读取并解析数据
case6 = read.table("clipboard",header=T); attach(case6); head(case6)
pairs(case6[,2:5], col=1:2)
# 一次判别
ld = lda(G~CF_TD+NI_TA+CA_CL+CA_NS, data=case6); ld
# Z$class判别分类
Z = predict(ld); table(case6$G, Z$class)
# Z$post后验概率
cbind(G=case6$G, newG=Z$class, Z$post)


# 二次判别
qd = qda(G~CF_TD+NI_TA+CA_CL+CA_NS, data=case6); qd
# Z$class判别分类
Z = predict(qd); table(case6$G, Z$class)
# Z$post后验概率
cbind(G=case6$G, newG=Z$class, Z$post)

你可能感兴趣的:(R语言)