我想评估通过Landsat图像的监督分类分类的土地覆盖类别的准确性。作为参考数据,我使用航空摄影。
我对分类的Landsat数据进行了采样,并在同一验证点,我从航空摄影中确定了土地覆盖等级。即,我的每个验证点都有两个属性:一个来自Landsat( landsat ),第二个来自航空摄影(参考)。
我想从验证点集计算误差矩阵(列联表)和准确度评估(总体准确度,用户生产者的准确性)。
我找到了一个包 greenbrown 和 asbio 来评估分类的准确性。用户和制作人准确性的最终结果是在两个包之间切换。
请哪个包正确计算用户和制作人准确度的值?
可重复的例子
library(asbio)
# create dummy data
landsat <- c(1, 1, 1, 2, 2, 2, 3, 4, 5, 5, 5, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5, 3, 3, 2, 2)
reference <- c(1, 2, 1, 2, 2, 2, 3, 4, 2, 2, 5, 1, 2, 2, 2, 1, 2, 3, 4, 5, 5, 3, 3, 2, 2)
# calculate Kappa statistics
asbio::Kappa(landsat,reference) # Kappa(class1, reference)
# check out Kappa results
$ttl_agreement
[1] 76
$user_accuracy
1 2 3 4 5
75.0 58.3 100.0 100.0 100.0
$producer_accuracy
1 2 3 4 5
50.0 87.5 100.0 100.0 60.0
$khat
[1] 68.1
$table
reference
class1 1 2 3 4 5
1 3 3 0 0 0
2 1 7 0 0 0
3 0 0 4 0 0
4 0 0 0 2 0
5 0 2 0 0 3
# ----------------------------------------------------------------------
# make the same calculation with the greenbrown package
# ----------------------------------------------------------------------
library(greenbrown)
library(strucchange)
library(raster)
library(Kendall)
library(plyr)
library(bfast)
library(zoo)
# calculate the contingency table
tab <- table(landsat, reference) data
# let's see the tab
tab
reference
landsat 1 2 3 4 5
1 3 3 0 0 0
2 1 7 0 0 0
3 0 0 4 0 0
4 0 0 0 2 0
5 0 2 0 0 3
# calculate the accuracy assessement
greenbrown::AccuracyAssessment(tab)
1 2 3 4 5 Sum UserAccuracy
1 3 3.00000 0 0 0 6 50.0
2 1 7.00000 0 0 0 8 87.5
3 0 0.00000 4 0 0 4 100.0
4 0 0.00000 0 2 0 2 100.0
5 0 2.00000 0 0 3 5 60.0
Sum 4 12.00000 4 2 3 25 NA
ProducerAccuracy 75 58.33333 100 100 100 NA 76.0
用户和制作人的准确性在两个包之间切换! 请哪个用户和制作人的准确度的计算和估计是正确的?