sirmax

Verified Tanker [RU]
  • Content count

    17
  • Joined

  • Last visited

About sirmax

  • Rank
    Arty Protector

Profile Information

  • Server
    RU
  1. We are using XVM scale for colors now ({{c:xr}} macro), which is also recalculates every day and always corresponds to the colors. So if you are using XVM scale, you don't need to tune colors edges.
  2. At the present time they are available at https://yadi.sk/d/GSC6dx153NGzBh, but this is the temporary resource. We are almost finished preparation of the persistent links for sharing.
  3. I made calculation of the new averages using your script: https://yadi.sk/d/GSC6dx153NGzBh/csv, wn8-averages-2017-10-10.csv There is not so big difference in values comparing with v31. Here is results: https://yadi.sk/d/GSC6dx153NGzBh/plots/user_account_data v31 suffix is the v31 table newavg suffis is the new averages table. The result is slightly worse, but I think it's within the margin of error. We can use v31 as basis and update it later if required. Script for averages calculation:
  4. BTW, raising the account threshold to 10,000 battles was seriych's idea.
  5. I also added v29-1.def (baseline) and v29-1.new (one automated run) to comparison. I can confirm your guesses and I agree with you that v31-1.new is the best choice, because it gives good result and don't require manual tuning. At least one of the controversial pair - Maus and 50B - looks much better, this was one of the point why we disagree with the v31 table. One automated run takes about 1 hour, and I can run it daily. I think it's better than montly updates because changes will be applies more smoothly. We can use daily based version numeration and draw the plots with changes on timeline. There only question is how to update baseline table. I also need to automate it.
  6. I made plots for all tanks: https://yadi.sk/d/GSC6dx153NGzBh/experiments v31-1.def - original v31 table v31-1.new - after calculation using v31-1.def as initial expected values v31-2.def - some tuning of the most different values of v31-1.def v31-2.new - after calculation using v31-2.def as initial expected values Which one is better?
  7. Looks like LT and SPG are bad balanced in v31, because they have big corrections. Here is the table ordered by damage correction: tank_id | tag | type | corr_dmg | corr_frg | corr_spo | corr_def | corr_win ---------+-------------------------------+------------+----------+----------+----------+----------+---------- 3617 | A16_M7_Priest | SPG | 1.338 | 0.772 | 0.814 | 1.098 | 0.892 63505 | G117_Toldi_III | lightTank | 0.775 | 0.653 | 0.631 | 1.001 | 1.018 4129 | A18_M41 | SPG | 1.283 | 0.883 | 0.783 | 0.925 | 0.950 4865 | R14_SU-5 | SPG | 1.282 | 0.930 | 0.812 | 0.931 | 0.932 52497 | G33_H39_captured | lightTank | 1.277 | 1.328 | 1.017 | 1.813 | 0.951 7681 | R66_SU-26 | SPG | 1.260 | 1.043 | 0.859 | 1.117 | 0.969 61441 | R118_T28_F30 | mediumTank | 1.250 | 1.158 | 0.786 | 0.982 | 1.014 18465 | A108_T18_HMC | SPG | 0.801 | 0.919 | 0.822 | 1.213 | 1.016 3409 | GB27_Sexton | SPG | 0.803 | 0.979 | 0.898 | 1.113 | 1.006 62529 | F19_Lorraine40t | mediumTank | 1.242 | 1.169 | 0.777 | 0.763 | 1.025 55073 | A93_T7_Combat_Car | lightTank | 0.830 | 0.937 | 0.978 | 0.804 | 0.995 2689 | S09_L_120_TD | AT-SPG | 0.836 | 0.765 | 0.486 | 0.818 | 1.029 2881 | F14_AMX40 | lightTank | 0.838 | 0.871 | 0.439 | 1.073 | 1.012 54865 | GB76_Mk_VIC | lightTank | 0.839 | 0.952 | 0.955 | 0.796 | 0.980 10833 | GB26_Birch_Gun | SPG | 0.841 | 0.943 | 0.771 | 1.200 | 1.000 56833 | R99_T44_122 | mediumTank | 1.189 | 1.223 | 1.044 | 0.903 | 1.018 54033 | G32_PzV_PzIV_ausf_Alfa | mediumTank | 1.181 | 1.098 | 1.251 | 0.802 | 1.006 52241 | G35_B-1bis_captured | heavyTank | 1.175 | 1.262 | 1.397 | 1.227 | 1.032 19457 | R131_Tank_Gavalov | lightTank | 1.171 | 1.539 | 1.019 | 1.219 | 1.043 47361 | R146_STG_Tday | mediumTank | 1.168 | 0.986 | 0.732 | 0.610 | 1.024 48641 | R134_Object_252K | heavyTank | 1.167 | 1.057 | 0.930 | 0.680 | 1.039 11857 | GB77_FV304 | SPG | 0.858 | 0.964 | 1.594 | 1.338 | 1.011 51841 | S15_L_60 | lightTank | 0.858 | 0.829 | 0.826 | 0.650 | 0.997 5953 | F13_AMX38 | lightTank | 0.862 | 0.913 | 0.531 | 1.253 | 1.025 53505 | R56_T-127 | lightTank | 1.159 | 1.234 | 0.937 | 1.254 | 0.968 11345 | GB29_Crusader_5inch | SPG | 0.863 | 0.955 | 1.084 | 1.463 | 1.009 47617 | R146_STG | mediumTank | 1.158 | 0.981 | 0.740 | 0.634 | 1.024 12817 | G53_PzI | lightTank | 0.864 | 0.918 | 1.264 | 0.843 | 1.007 52737 | R67_M3_LL | lightTank | 0.864 | 0.884 | 0.936 | 1.146 | 0.950 18961 | G113_SP_I_C | lightTank | 1.157 | 1.069 | 0.913 | 1.001 | 1.014 54609 | GB78_Sexton_I | SPG | 0.867 | 1.024 | 0.885 | 1.092 | 1.011 49665 | R134_Object_252U | heavyTank | 1.153 | 1.054 | 0.929 | 0.672 | 1.048 609 | J01_NC27 | lightTank | 0.868 | 0.916 | 0.770 | 1.194 | 0.989 769 | R03_BT-7 | lightTank | 0.869 | 0.813 | 1.060 | 0.935 | 0.971 53537 | A74_T1_E6 | lightTank | 0.869 | 0.837 | 0.917 | 0.797 | 1.006 15121 | G93_GW_Mk_VIe | SPG | 0.870 | 0.816 | 0.900 | 0.872 | 0.980
  8. I was talking about plotter script from this post.
  9. Why correction is built on rDAMAGEmodel <- lm(rDAMAGE ~ user_rDAMAGE, data=sample) but plots in your script are drawn using model <- lm(rDAMAGEc ~ user_rDAMAGEc, data=sample)
  10. @Gryphon_, is new expected values in your script are calculated correctly? rDAMAGEmodel <- lm(rDAMAGE ~ user_rDAMAGE, data=sample) rDAMAGEcorrection <- rDAMAGEmodel$coef[[1]] + rDAMAGEmodel$coef[[2]] eDAMAGE_new <- round(rDAMAGEcorrection * expectedValues$eDAMAGE[expectedValues$compDescr == i], 2) May be it should be like this? rDAMAGEmodel <- lm(rDAMAGE ~ user_rDAMAGE, data=sample) eDAMAGE_new <- round(rDAMAGEmodel$coef[[1]] + rDAMAGEmodel$coef[[2]] * expectedValues$eDAMAGE[expectedValues$compDescr == i], 2) because linear function is `a + b * x` but not `(a + b) * x`
  11. I found that all my plots was built using initial expected values, not updated. Now I'm drawing both - initial values with suffix "def" and updated values with suffix "new". New values looks much better:
  12. Currently I'm using v31 for new tanks, updated script: CREATE OR REPLACE FUNCTION wn8.fill_missed_expected_values() RETURNS VOID LANGUAGE plpgsql AS $$ DECLARE l_tank_id int; BEGIN FOREACH l_tank_id IN ARRAY ARRAY(SELECT tank_id FROM xvm.vehicles_list ORDER BY tank_id) LOOP IF NOT EXISTS(SELECT 1 FROM wn8.exp WHERE tank_id = l_tank_id LIMIT 1) THEN -- new tank - select initial expected values from wn8.exp_def INSERT INTO wn8.exp(partkey, tank_id, battles, dmg, frg, spo, def, win) SELECT 'epoch'::date, l_tank_id, 0, a.dmg, a.frg, a.spo, a.def, a.win FROM wn8.exp_def a JOIN xvm.vehicles_list b USING(type, tier) WHERE b.tank_id = l_tank_id; END IF; END LOOP; END; $$; xvm.vehicles_list contains all vehicles updated daily from WG API wn8.exp_def is v31 table wn8.exp - expected values used for calculation This allows to tune initial expected values for each tank individually if necessary. How else we can improve the result? May be using plots for the tanks (https://yadi.sk/d/GSC6dx153NGzBh/plots/10k-v31) or selecting more suitable battle filter on the account (10k was just empirical assumption).
  13. I made some experiments. 1. I tried to use v29 table and filled new tanks from v31. The results are here: https://yadi.sk/d/GSC6dx153NGzBh/experiment-v29%2Bv31 2. I tried to increase total account battles filter from 1000+ to 10000+ (to increase number of experienced players in the sample) and use v29+v31 and v31 only initial expected values. The results are here: https://yadi.sk/d/GSC6dx153NGzBh/plots/user_account_data
  14. Ok, I runned 3 iterations with v30 average expected values, you can see results here: https://yadi.sk/d/GSC6dx153NGzBh/plots/user_account_data 2017-09-29 is the first iteration (using v30 as initial expected values), 2017-09-30 - the second (using expected values from the first iteration), and 2017-10-01 - the third. Don't take into consideration the dates, they are only for keeping the sequence. I used the same players data for all iterations. By the way, what expected behavior of the formula if we'll run it in the loop? Is result should be better or worst?