Skip to main content

LULC accuracy assessment with reference data generated via stratified sampling

Project description

lulc-validation

A package to estimate overall accuracy, user's accuracy, and producer's accuracy for a land use / land cover (LULC) map when i) the reference data is generated via a stratified sampling approach, and ii) the strata do not match the map classes.

This package is based on Stehman, S.V. (2014), Estimating area and map accuracy for stratified random sampling when the strata are different from the map classes. International Journal of Remote Sensing, 35, 13.

Install

Clone this repo, then pip install locally.

pip install .

or from PyPi.

pip install lulc-validation

Use

A sample dataset is provided in this repo at data/samples.csv. This is based on Table. 2 in Stehman (2014).

Initialise a StratVal object:

import pandas as pd
import os
from lulc_validation.lulc_val import StratVal

df = pd.read_csv(os.path.join("data", "samples.csv"))

strat_val = StratVal(
    strata_list=[1, 2, 3, 4], # List of labels for strata.
    class_list=[1, 2, 3, 4], # List of labels for LULC map classes.
    n_strata=[40000, 30000, 20000, 10000], # List of the total number of pixels in each strata.
    samples_df=df, # pandas DataFrame of reference data
    strata_col="stratum", # Column label for strata in `samples_df`
    ref_class="ref_class", # Column label for reference classes in `samples_df`
    map_class="map_class" # Column label for map classes in `samples_df`
)

A StratVal object has the following methods:

  • accuracy(): returns a float type number representing the overall accuracy of the LULC map accounting for the stratified sampling design of the reference data. This implementation is based on the worked example of 3. Numerical examples in Stehman (2014).
  • users_accuracy(): returns a dict object where keys indicate the map class and values represent user's accuracy for the corresponding class accounting for the stratified sampling design of the reference data. This implementation is based on the worked example of 3. Numerical examples in Stehman (2014).
  • producers_accuracy(): returns a dict object where keys indicate the map class and values represent producer's accuracy for the corresponding class accounting for the stratified sampling design of the reference data. This implementation is based on the worked example of 3. Numerical examples in Stehman (2014).
  • accuracy_se(): returns the standard error of the estimate of the overall accuracy of the LULC map accounting for the stratified sampling design of the reference data. This implementation is based on the worked example of 3. Numerical examples in Stehman (2014).
  • users_accuracy_se(): returns a dict object where keys indicate the map class and values represent standard errors of the estimates of the user's accuracy for the corresponding class accounting for the stratified sampling design of the reference data. This implementation is based on the worked example of 3. Numerical examples in Stehman (2014).
  • producers_accuracy_se(): returns a dict object where keys indicate the map class and values represent standard errors of the estimates of the producer's accuracy for the corresponding class accounting for the stratified sampling design of the reference data. This implementation is based on the worked example of 3. Numerical examples in Stehman (2014).
print(f"accuracy: {strat_val.accuracy()}")
print(f"user's accuracy: {strat_val.users_accuracy()}")
print(f"producer's accuracy: {strat_val.producers_accuracy()}")
print(f"accuracy se: {strat_val.accuracy_se()}")
print(f"user's accuracy se: {strat_val.users_accuracy_se()}")
print(f"producers's accuracy se: {strat_val.producers_accuracy_se()}")

Development

pytest is used for testing and tests are based on replicating calculations in the worked example of 3. Numerical examples in Stehman (2014).

To run the tests:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lulc-validation-0.0.4.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

lulc_validation-0.0.4-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file lulc-validation-0.0.4.tar.gz.

File metadata

  • Download URL: lulc-validation-0.0.4.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for lulc-validation-0.0.4.tar.gz
Algorithm Hash digest
SHA256 b0e040a7c52e790bd2637436c727d589c28b30f828b34ca9407836733db0a137
MD5 d692e927b32f611f21e2f120d699bdde
BLAKE2b-256 5693fec1231d178271504220bb08c840e5d6cebefedbb58dda795ea9afc7d354

See more details on using hashes here.

File details

Details for the file lulc_validation-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for lulc_validation-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 30fc75c6c894aa30ce75b1bf40900b075bbc229875e1530da83487ce5c523943
MD5 e4612773025380295bb82539a7560c32
BLAKE2b-256 451b6ce400ccff57791adeda6811b2080903b2e73f10eed7374be8cf76f4ccfd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page