I’ll call the list of spells that have been learned a “deck”.
K
represents the number of spells in a deck
N
is the total number of spells (46 in this case)
Let us assume that a deck’s value can be calculated as the sum of the intrinsic value of the spells it is composed of.
deck_value = sum_i(s_i)
with s_i
a spell’s intrinsic value.
Let us calculate the average value of all decks containing a given spell i :
A_i = s_i + (K-1) * (sum_j!=i ( s_j )) / (N-1)
The values of A_i
can be observed, this is what I store in steps 3 to 5.
Knowing the values of all A_i
and with a little bit of rearranging all the equations, it is possible to calculate the intrinsic s_i
values. It is those s_i
values that I have given in the first table.
Writing this, I notice that I didn’t account for the fact that spells 0-3 are always learnt, and should be treated differently in the equations. This is a mistake, but I don’t think it would change things too much.
===============
Now for the combos…
Under the first assumption where spells have an intrinsic value and no mutual dependency, it is possible to calculate the expected average value of all decks containing both spells i and j.
It is also possible to observe this average value. The combo value
in my second table is just the difference between this expected and this observed value.
The combo value is significantly larger than the intrinsic values because I took the table from the full calculation which takes into account the marginal decrease of spell efficiency. (ie: learning a 21st spell when you already have 20 spells is useless. Learning a 5th spell when you only know 4 is very useful)
For the sake of completeness, here is my full formula, which works pretty well within a range of 4 to 20 spells learned :
deck_value = sum_i(s_i) #intrinsic values
+ sum_ij(combo_value_ij) / (deck_size - 5) #combo
- 0.15 * (deck_size - 4) * (deck_size) #marginal decrease of spell efficiency