# library
library(openxlsx)
# 读取 Excel 的第一个 sheet, )
AccData <- read.xlsx("D:/R_proj/a绘图demo/bKappa/五指山生态系统分类精度评价一二级类.xlsx",
sheet = 1, colNames = T)
AccData
#EXCEL中存在空值,需要补零
AccData[is.na(AccData)] <- 0
AccMatrix <- data.matrix(AccData[1:nrow(AccData),2:ncol(AccData)])
#提取矩阵主对角线
MatDiag <- diag(AccMatrix)
#提取总数
TotalNum <- sum(AccMatrix)
#总体分类精度
OA <- sum(MatDiag)/TotalNum
#Kappa系数
#函数包求Kappa
library(vcd)
K <- Kappa(AccMatrix)
#手动计算Kappa
colFreqs <- colSums(AccMatrix)/TotalNum
rowFreqs <- rowSums(AccMatrix)/TotalNum
p0 <- sum(MatDiag)/TotalNum
pe <- crossprod(colFreqs, rowFreqs)[1]
k2 <- (p0-pe)/(1-pe)
#制图精度
for (i in 1:nrow(AccMatrix)) {
PA <- AccMatrix[i,i]/sum(AccMatrix[,i])
print(paste(AccData[i,1], "制图精度为", PA*100, "%"))
}
#用户精度
for (i in 1:nrow(AccMatrix)) {
UA <- AccMatrix[i,i]/sum(AccMatrix[i,])
print(paste(AccData[i,1], "用户精度为", UA*100, "%"))
}
#计算结果输出
print(paste("总体分类精度为", OA*100, "%"))
print(paste("Kappa系数为", K[["Unweighted"]][["value"]]*100, "%"))