Calculate interest maps for specific feature comparisons and compute the total interest, as well as median of maximum interest.
interester(x, properties = c("cent.dist", "angle.diff", "area.ratio", "int.area",
"bdelta", "haus", "ph", "med", "msd", "fom", "minsep"),
weights = c(0.24, 0.12, 0.17, 0.12, 0, 0, 0, 0, 0, 0, 0.35),
b1 = c(35, 30, 0, 0, 0.5, 35, 20, 40, 120, 1, 40),
b2 = c(100, 90, 0.8, 0.25, 85, 400, 200, 200, 400, 0.25, 200),
verbose = FALSE, ...)# S3 method for interester
print(x, ...)
# S3 method for interester
summary(object, ...,
min.interest = 0.8, long = TRUE, silent = FALSE)
A list of class “interester” is returned with components:
matrix whose named rows correspond to the each property that was calculated and whose columns are feature pairings. The values are the interest calculated for the specific property and pair of features.
matrix of total interest for each pair of features where rows are observed features and columns are forecast features.
If no features are available in either field, NULL is returned.
Nothing is returned by print.
summary invisibly returns a list object of class “summary.interester” with components:
similar to the interest component from the value returned by interester, but sorted from highest to lowest interest, along with the feature number information for each field.
the median of maximum interest value.
interester
: object of class “features” or “matched”.
print
: object of class “interester”.
object of class “interester”.
character vector naming which properties from FeatureComps
should be considered in the total interest.
numeric of length equal to the length of properties
. Weights equal to zero will result in the removal of those properties from properties
so that the default computes only those values utilized in Davis et al (2009).
All interest maps (except that for “fom”) are piecewise linear, and of the form: f(x) = 1,0 (depending on the property) if x < b1
, x <= b1
, x > b2
or x >= b2
(see details for more information).
logical, should progress information be printed to the screen?
numeric between zero and one giving the desired minimum value of interest. Only used for display purposes. If long
is TRUE, a dashed line is printed where the total interest falls below this value. If long
is FALSE, only the total interest values above this value are displayed. All values are returned invisibly regardless of the values of min.interest
and long
.
logical, should all interest values be displayed (TRUE) or only those above min.interest
(FALSE)?
logical, should summary information be displayed to the screen (FALSE)?
interester
: optional arguments to FeatueComps
.
Not used by print
or summary
.
Eric Gilleland
This function calculates the feature interest according to the MODE algorithm described in Davis et al (2009). Properties that can be computed are those available in FeatureComps
, except for “bearing”. Interest maps are computed according to piece-wise linear functions (except for “fom”) depending on the property. For all properties besides “area.ratio”, “int.area” and “fom”, the interest maps are of the form:
f(x) = 1, if x <= b1
f(x) = a0 + a1 * x, if x > b1 and x <= b2, where a1 = -1/(b2 - b1) and a0 = 1 - a1 * b1
f(x) = 0, if x > b2
For properties “area.ratio” and “int.area”, the interest maps are of the form:
f(x) = 0, if x < b1
f(x) = a0 + a1 * x, if x >= b1 and x < b2, where a1 = 1/(b2 - b1) and a0 = 1 - a1 * b2
f(x) = 1, if x >= b2
Finally, for “fom”, a function that tries to give as much weight to values near one is applied. It is given by:
f(x) = b1 * exp(-0.5 * ((x - 1) / b2)^4)
The default values for b1 and b2 will not necessarily give the same results as in Davis et al (2009), but also, the distance map for their intersection area ratio differs from that here. The interest function for FOM is further restricted to fall within the interval [0, 1], so care should be taken if b1 and/or b2 are changed for this function.
The interester
function calculates the individual interest values for each property and each pair of features, and returns both these individual interest values as well as a matrix of total interest. The print
function will print the entire matrix of individual interest values if there are fewer than twenty pairs of features, and will print their summary otherwise. The summary
function will order the total interest from highest to lowest and print this information (along with which feature pairs correspond to the total interest value). It will also calculate the median of maximum interest (MMI) as suggested by Davis et al (2009). If there is only one feature in either field, then this value will just be the maximum total interest.
The centroid distance property is less meaningful if the sizes of the two features differ greatly, and therefore, the interest value for this property is further multiplied by the area ratio of the two features. Similarly, angle difference is less meaningful if one or both of the features are circular in shape. Therefore, this property is multiplied by the following factor, following Davis et al (2009) Eq (A1), where r1 and r2 are the aspect ratios (defined as the length of the minor axis divided my that of the major axis) of the two features, respectively.
sqrt( [ (r1 - 1)^2 / (r1^2 + 1) ]^0.3 * [ (r2 - 1)^2 / (r2^2 + 1) ]^0.3 )
The print
function displays either the individualinterest values for each property and feature pairings, or more often, a summary of these values (if the display would otherwise be too large). It also shows a matrix whose rows are observed features and columns forecast features, with the total interest values therein associated.
summary
shows the sorted total interest from highest to lowest for each pair. A dashed line separates the values above min.interest
from those below, and if long
is TRUE, then values below that line are not displayed. It also reports the median of maximum interest (MMI) defined by Davis et al (2009) as an overall feature-based summary of forecast performance. It is derived by collecting the row maxima and column maxima from the total interest matrix, shown by the print
command, into a vector, and then finding the median of this vector.
Davis, C. A., Brown, B. G., Bullock, R. G. and Halley Gotway, J. (2009) The Method for Object-based Diagnostic Evaluation (MODE) applied to numerical forecasts from the 2005 NSSL/SPC Spring Program. Wea. Forecsting, 24, 1252--1267, DOI: 10.1175/2009WAF2222241.1.
Identifying features: FeatureFinder
Functions for calculating the properties: FeatureComps
, FeatureProps
x <- y <- matrix(0, 100, 100)
x[ 2:3, c(3:6, 8:10) ] <- 1
y[ c(4:7, 9:10), c(7:9, 11:12) ] <- 1
x[ 30:50, 45:65 ] <- 1
y[ c(22:24, 99:100), c(50:52, 99:100) ] <- 1
hold <- make.SpatialVx(x, y, field.type = "contrived", units = "none",
data.name = "Example", obs.name = "x", model.name = "y" )
look <- FeatureFinder(hold, smoothpar = 0.5)
look2 <- interester(look)
look2
summary(look2)
Run the code above in your browser using DataLab