The purpose of this post is to present a way to implement a dynamic error
free Skimmer-RBN/Packet network that automatically:
1. Flags and eliminates “Busted Spots” from the network
2. Flags and eliminates “wrong frequency” spots from the network
3. Prevents inaccurate Skimmer-Spotters from feeding incorrect spots to the
network
4. Eventually allow the Skimmer-RBN users to customize reception of spots
according to the quality flag and several parameters of the algorithm
In my various CQWW CW operations since 1989
http://www.qsl.net/ct1boh/operations.htm I’ve only enjoyed
Skimmer-RBN/Packet networks from the pile-up end side as PY0F, P40E, CR3E,
etc.
Skimmer-RBN and packet network has been a blessing for the DX operator as a
constant pile-up generator and a reason for the never ending increase in
total QSO number throughout the years.
Recently, building the idea of operating Assisted on CW from a DX location
for the first time, I begun to study how to correctly use
Skimmer-RBN/Packet networks. Operating Assisted in minor Contests from
home, I discovered several problems that made the use of callsign and
frequency information from a RBN feed band map not 100% reliable:
- Busted spots
- Non-existent spots on a particular frequency
- Small frequency shifting spots and
- “Unstable” band map with callsigns alternating, popping-in and popping-out
Wanting to use Assistance and not being able to completely trust the
information is a strange concept to me. If I use Assistance I would expect
not to waste time in my mind processing if the call in the band map is good
or bad.
Solving the problems requires a system that is able to automatically assess
the spot before send it to the network and “learns” from itself. The
solution is a dynamic error free RBN-Skimmer algorithm.
Studding RBN data that can be downloaded here
http://www.reversebeacon.net/raw_data/ I came to a solution. The algorithm
I propose has a simplicity beauty and works extraordinary well. For every
new spot that is provided to the Reverse Beacon Network by a Skimmer
Spotter or by a packet network by a human, the system will automatically
generate the following “Quality Tag” for each spot:
Good Spot
Good Call, New Frequency Spot?
Busted Spot
? Spot
In short, the algorithm can be described as follows:
Any new spot will be tagged as a “Good Spot” if looking back 25 minutes
there are two more Spots with the same call as the new spot, in the
approximate same frequency (+/- 0.3 Khz)
Any new spot will be tagged as a “Good Call, New Frequency Spot?” if
looking back 25 minutes there is a Spot that was already tagged as “Good
Spot”, with the same call as the new spot, but the new spot is in an
adjacent frequency (less or equal than -0.4 Khz and greater or equal than
+0.4 Khz)
Any new spot will be tagged as “Busted Spot” if looking back 25 minutes
there are at least three already tagged “Good Spot” with a similar call, in
the approximate same frequency of the new spot (+/- 0.1 Khz). The similar
call is a call that can be transformed into the new spot call by character
insertion, deletion or substitution.
Any Spot that is not a “Good Spot”, a “Good Call, New Frequency Spot?” or a
“Busted Spot” is an undetermined spot “?Spot”.
Let’s have a closer look at it, with examples from RBN spots from CQWW CW
2012:
“Good call” quality flag
#1 call1 freq1 time1 #Spotter Quality tag
711 CR3E 7045 4 #G4HYG ?Spot
860 CR3E 7045 5 #WB8BIL ?Spot
918 CR3E 7045 5 #WB2LSI Good Spot
3077 CR3E 7045 20 #G4HYG Good Spot
3254 CR3E 7045 21 #S52AW Good Spot
3336 CR3E 7045 22 #KB9AMG Good Spot
3892 CR3E 7045 25 #DK9IP Good Spot
…
CR3E started the contest (CQWW CW 2012) on 7045. The first two spots get
the quality flag “?Spot”, but by the third spot of WB2LSI skimmer CR3E is
flagged as a “good call” and all subsequent spots on 7045 will get the
“Good Spot” quality flag.
After a lot of testing I can say the system should operate with a bandwidth
filter of +/- 0.3 KHz. All spots that do not fall within this +/- 0.3 KHz
filter will not get the “Good Spot” quality tag.
“Good Call, New Frequency Spot?”
#1 call1 freq1 time1 #Spotter Quality tag
…
33721 CR3E 7045 220 #F5MUX Good Spot
34154 CR3E 7041.3 223 #KA9SWE Good Call, new freq?
34460 CR3E 7045 225 #RU9CZD Good Spot
…
40711 CR3E 7044.9 261 #KQ8M Good Spot
40740 CR3E 7041.3 261 #KA9SWE Good Call, new freq?
41213 CR3E 7045.1 264 #K3LR Good Spot
…
CR3E continues to be on 7045. All of a sudden #KA9SWE skimmer spots CR3E on
7041.3. The systems detects a frequency difference and flags it as a “Good
call, new frequency?”. Is it really a QSY to a new frequency by CR3E? If
yes, then, shortly after two more spots the system will change the flag to
“Good spot”. It is not the case in this example because skimmer #RU9CZD
confirms there was no QSY. Later on we see that #KA9SWE sends another spot
on 7041.3.Obviously #KA9SWE skimmer needs frequency calibration.
After a lot of testing I can say the system should operate with a bandwidth
filter of greater than +/- 0.3 Khz. All spots that do not fall within this
+/- 0.3 KHz filter will not get the “Good Spot” quality tag, and this
should be the accuracy threshold.
“Busted Spot”
#1 call1 freq1 time1 #Spotter Quality tag
31159 CR3E 7045 204 #S52AW Good Call
31172 KR3E 7045 204 #K9QC Busted
31205 CR3E 7045 205 #G4HYG Good Call
…
CR3E continues to be on 7045. All of a sudden #K9QC skimmer sends a KR3E
spot. The system detects that KR3E is a similar call of CR3E on the same
frequency of a Good Spot and it will flag this spot as a Busted spot. The
system uses Levenshtein distance to calculate a similar call (
http://en.wikipedia.org/wiki/Levenshtein_distance). Depending on the
length of the callsign it will look for calls that are x-off letters away.
After a lot of testing I can say the system should operate with a bandwidth
filter of +/- 0.1 Khz. A Busted Spot comes from a good spot, and usually
from Skimmer that has already spotted the call, therefore a threshold of
0.1 is what works best.
“?Spot”
All “?Spot” are spots that cannot be determined as “Good Spot” or as “Good
Call, New Frequency Spot?” or as “Busted Spot”. Some are good spots – The
first and the second spot on a new frequency when a run starts. But the
majority is “spots” send by skimmers, of stations calling RUN stations.
These spots should never be sent out to the network by skimmer. They are
false positive running stations.
How does this proposed system works?
I can say it works extraordinary well!
I tested all 40 meter spots from CQWW CW 2012 – almost a million sots:
Quality flag Spots % of spots
? 46.593 4.69%
Busted 20.734 2.09%
Good Call 855.227 86.08%
Good Call, new freq? 70.994 7.15%
Grand Total 993.548 100.00%
After running my algorithm I also went back to validate both “? Spots” and
“Good call, new freq?” spots. If I have the following spots:
711 CR3E 7045 4 #G4HYG ?Spot
860 CR3E 7045 5 #WB8BIL ?Spot
918 CR3E 7045 5 #WB2LSI Good Spot
It is easy to determine after running the algorithm that spot #711 and
spot#918 are “Good Spots” from spot 918. This cannot be done with a real
time system, because once a quality tag is given to a spot it is given.
Of the 46.593 spots with “?Spot” quality flag:
20768 are good calls (these are all the first and second spot of a run
that just started)
25825 spots are indeed “? Spots” (mostly stations calling on pile-ups)
Of the 70.994 spots with “Good Call, New Freq?” quality flag:
24.502 are good call (these are all the first and second spots of a
run that just started in a new frequency)
46.492 spots are indeed “Good Call” that are sent to the network with
a wrong frequency by an uncalibrated skimmer.
My algorithm also allows the RBN to detect uncalibrated skimmer spotters.
Looking at the list of skimmers it is easy to build a list based on the %
of “Good call, New freq?” quality flag. Let’s take a look at the top ten
Skimmer spotters according to spots sent to the RBN:
Skimmer Spots % of “Good Call, New Freq?”
#K3MM 45.726 3.1%
#GW8IZR 29.984 8.7%
#S52AW 29.214 5.2%
#DL8LAS 26.906 3.7%
#DR1A 25.831 3.1%
#RU9CZD 24.301 6.4%
#HA6PX 23.317 38.6%
#OL5Q 23.006 4.4%
#W3LPL 21.889 2.0%
#KQ8M 21.833 7.1%
We can see that a calibrated skimmer should not have more than 3% of “Good
Call, New frequency?” spots, because that is the dynamic of people changing
frequency in the contest. Numbers greater than that show uncalibrated
skimmers, such is the case of #GW8IZR, #HA6PX, or #KQ8M.
To finalize several considerations:
1 RBN (Reverse Beacon Network) is a fantastic instrument for contesters and
DXers.
2 We have the instruments to turn the current RBN network into a dynamic
error free system
3 The system should allow the user to decide to filter out “Busted” spots,
“Good call, New Freq?” spots and “? Spots”. By giving a quality flag it
would be up to the user to use the quality flags to filter out spots
4 The system should warn uncalibrated skimmers
If you want to play with the data and with the algorithm you can:
The algorithm and several graphs that explain how well the system works is
available to download here
http://www.qsl.net/c/ct1boh//dl/
Please note that the excel file is ~90MB
In sheet 1 there are 993.548 spots from CQWW CW 2012 on 40 meters
In sheet 2 there is the results of the algorithm. This would be the output
of the system with real time adding a quality flag to each spot (if you do
Alt-Q you will activate the macro. it takes 1892 seconds to flag all
993.548 spots on my PC. Or on average 0.0019 seconds to flaf every incoming
spot.
In sheet 3 there is a pivot table to manipulate data from sheet 2
In sheet 4 there is a list and graph that show the performance of skimmers
as far as frequency calibration is concerned
In sheet 5 there is a list and a graph of calls and the % of Busted of each
call according to number of spots
In sheet 6 there is the algorithm code (please note that I’m not a
programmer. I just learned VBA to do this)
--
José Nunes
CONTEST CT1BOH - http://www.qsl.net/ct1boh
_______________________________________________
CQ-Contest mailing list
CQ-Contest@contesting.com
http://lists.contesting.com/mailman/listinfo/cq-contest
|