Landsat 画像の教師付き分類によって分類された土地被覆クラスの精度を評価したいと考えています。参考データとして航空写真を使用します。
分類された Landsat データをサンプリングし、同じ検証ポイントで、航空写真から土地被覆クラスを特定しました。つまり、各検証ポイントには 2 つの属性があります。1 つは Landsat からのもの ( landsat )、もう 1 つは航空写真からのもの ( reference ) です。
一連の検証ポイントから、エラー マトリックス (分割表) と精度評価 (全体の精度、ユーザーのプロデューサーの精度) を計算したいと考えています。
分類の精度を評価するパッケージgreenbrownとasbioを見つけました。ただし、ユーザーとプロデューサーの精度の最終結果は、2 つのパッケージ間で切り替えられます。
ユーザーとプロデューサーの精度の値を正しく計算するパッケージはどれですか?
再現可能な例
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
ユーザーとプロデューサーの精度は、2 つのパッケージ間で切り替えられます! ユーザーとプロデューサーの精度の計算と推定はどちらが正しいですか?