library(tidyverse)
library(openintro)
library(FSA)Genshin Impact is a Chinese combat role-playing-game (RPG) in which the player explores the world of Teyvat as the Traveler. Along their journey, in-game characters may join the Traveler’s party, thereby becoming playable. One such character is Shenhe, a mysterious woman who wields a polearm and cryo vision. The following are integral terms to the combat system of Genshin Impact:
ER: Energy Recharge, the multiplier that determines how much elemental energy a character gains per particle absorbed.
Elemental energy: used to cast an “Elemental Burst” by filling up a meter with a certain amount of energy. This gives rise to an “energy requirement”, which is the amount of Energy Recharge that a character needs in order to consistently use their elemntal burst.
Elemental Burst: a skill within a character’s kit which costs elemental energy to use. A burst is triggered by clicking the “Q” key on a keyboard. Bursts can be leveled to increase their utilities and damage multipliers.
Particle: units of elemental energy generated by casting an “Elemental Skill” and other methods.
Kit: a characters set of available moves and utilities.
Elemental Skill: A skill within a character’s kit which costs no elemental energy to use. An elemental skill is triggered by clicking the “E” key on a keyboard. Elemental skills can be leveled to increase their utilities and damage multipliers.
Cooldown: the time it takes to be able to re-cast a move such as an Elemental Skill or Elemental Burst.
Artifacts: equipment consisting of a feather, flower, timepiece (sands), goblet, and circlet which provide additional stats to a characters base stats. Due to artifacts having both a main stat and many random substats, artifacts generate variation in character stats. Additionally, set bonuses can be obtained by equipping at least two (2) or four (4) artifacts of the same set, and these grant special effects such as bonus stats.
Adventure Rank: a measure of experience in the game which is calculated using cumulative Adventure Experience points. These points are obtained through completing daily quests, progressing through the story of the game, opening chests and exploring, completing domain challenges, and spending resin.
atk: a character “stat” which is often used to determine the damage dealt by various moves.
HP: a character “stat” which determines how much damage a character can take before falling in battle.
def: a character “stat” which determines how much damage a character takes for any given enemy attack.
RES: similar to def, decreases damage taken from a specific elemental type.
Elemental Mastery: abbreviated as “EM”, determines the damage dealt by elemental reactions.
Crit: a critical strike occurs randomly when landing hits based on a character stat called “crit rate”. Crit rate is equal to the probability of landing a critical strike. Damage from critical strikes is multiplied by (1+cdmg), crit damage. The base value of crit rate is 5%, and the base value of crit damage is 50%.
Character level: characters can be leveled up to unlock passive abilities and additional base stats. The maximum character level is 90.
Polearm: one of the five weapon archetypes in Genshin impact. Different types of polearms can be obtained through exploration and a mechanic called “wishing” (gambling).
Element: there are seven (7) elements in Teyvat, pyro, hydro, cryo, electro, anemo, dendro, and geo.
Elemental damage bonus: a multiplier which increases damage of a specific elemental type. Attacks with no associated element are typically considered “physical” attacks. Physical damage is multiplied by physical damage bonus.
Normal Attack: a skill within every character’s kit which deals physical damage for polearm characters without an elemental infusion. Shenhe herself cannot imbue her polearm with any element, but other characters, such as Chongyun, can enable her to do so. This skill can also be leveled.
Weapon level: similarly to character levels, weapons can have their levels increased up to level 90 in order to maximize their main stat and substat. In the case of a character like Shenhe, having her polearm at level 90 is imperative, as she needs the additional base atk that it provides in order to buff her team’s damage.
Refinement: weapons can be refined up to rank 5, improving their special effects.
DPS: short for “damage per second”, which is both a measurable quantity and a character role. A character that is a “DPS” deals considerable damage, as opposed to solely providing support utilities.
Hypercarry: A character around which a team is centered in order to maximize that specific character’s personal damage.
Passive: An effect or ability of a character or weapon which provides special effects to the character, often under a set of conditions.
Equipment / Gear: In-game items such as weapons and artifacts which provide extra power to your characters.
Main stat: A primary attribute of an artifact or weapon which increases its corresponding character stat (atk, EM, ER, etc.).
Substat: A secondary attribute of an artifact or weapon which increases its corresponding character stat.
Build: The way in which a player decides to gear their character.
Playstyle: The way in which a player decides to play their character, often based upon their build.
Shenhe’s kit is one of the more complicated ones in the character roster. Her damage is disguised through other characters’ damage bonuses and her buffing utilities. This makes her widely misunderstood as a character, and also leads to sub-obtimal builds within the community.
Shenhe’s elemental skill “Spring Spirit Summoning” generates three (3) cryo particles on skill-press and four (4) cryo particles on skill-hold. Her press cooldown is 10 seconds, while her hold cooldown is 15 seconds. This limits her energy generation to a maximum of 0.3 particles per second.
Shenhe’s “Icy Quills” are considered additive damage, which scale on party member’s multiplicative stats (critical rate, critical damage, cryo damage, etc.) and only trigger on non-transformative cryo damage. Her skill-press generates five (5) Icy Quills for each teammate to use, and her skill-hold generates seven (7). Each Icy Quill’s base addition to the damage is calculated using solely Shenhe’s atk stat and skill talent level. This means that Icy Quill damage is optimized by increasing Shenhe’s atk and skill talent level.
Shenhe has multiple sources of utility in her kit. Her 4th ascension passive talent provides characters with 15% skill and burst damage bonus when using her skill-press, and 15% normal and charged attack damage bonus when using her skill-hold. Her 1st ascension passive talent provides characters within the area of effect (AoE) of her elemental burst “Divine Maiden’s Deliverance” a 15% cryo damage bonus. Her elemental burst has a duration of 12 seconds, a cooldown of 20 seconds, and decreases enemies’ physical and cryo RES by a maximum of 15% at talent level 10. One of her choices of artifact sets, the 4-piece Noblesse Oblige provides the entire team with a 20% atk bonus, from which she can also benefit.
Because Shenhe’s Icy Quills scale with atk, increasing the equipped polearm level to its max of 90 will significantly increase Icy Quill damage. Due to many of Shenhe’s buff utilities being restricted to her burst, increasing her burst uptime will increase your team’s damage output, which is dependent on Shenhe’s energy recharge stat. This creates an important balance between ER and atk on Shenhe. This will be one of the main investigations of this study.
In this analysis, I wish to observe trends within the character statistics of Shenhes which are fully built. Fully built Shenhes are indicative that the player is what we would call a “Shenhe main”, meaning that they use their Shenhe to clear content within the game. It is important to note that players of unbuilt Shenhes may still be Shenhe mains, but Shenhes with builds-in-progress are not the target population of this study.
Within the game, there is a feature called the “Co-Op Menu”, which generates a list of players online which one can join and play. In the Co-Op Menu, a player can choose to display up to eight (8) of their characters so that others may see. They can also choose whether their “character details” (stats) are visible. To generate this dataset, myself and three friends went through the Co-Op Menus in our games in order from top to bottom, and checked for players who had Shenhe in their display. Those which chose to make their character details visible had their stats recorded.
There are a couple sources of sampling error and other clarifications that must be made. There is no confirmation from the developers that the Co-Op menu is truly random. We never encountered repeats in our data collection, which is promising, but still not confirmation of the randomness or pseudo-randomness of the sample. Another issue is that we did not hold the time at which we searched for players constant, and because the Co-Op menu only displays other players that are online, there may have been some confounding due to the times at which we collected our observations throughout October of 2022. Additionally, the Co-Op Menu is restricted by the player’s server, which in the case of this dataset is solely the America server. It is important to note that players on the America server may or may not be in the western hemisphere, as players can choose to create their account on any server they so choose. The final obvious source of error is that the people who displayed their Shenhes did so voluntarily, and therefore the sample may not be truly representative of all Shenhes in which we are interested.
A couple of variables within the dataset were contrived using other data from the given observation. Particularly, the ER_req_met, describing whether a player had reached KQM’s ER requirement, was quantified on whether their ER stat was greater than 177.5, or in the case of a Shenhe equipping the polearm “Favonius Lance”, if their ER stat was greater than 162.5. The “build_type” variable, similarly was qualified on the following logical structure:
if exclusion criteria met, then gain role “incomplete”
else if constellation == 6, then gain role “whale” else if ER_req_met ==
1, then gain role “utility_buffer”
else if set_bonus == “4NO”, then gain role “utility_buffer”
else if polearm_name == “Favonius_Lance” and crit_rate >= 50. then
gain role “utility_buffer”
else if cryo_dmg != 0 and phys_dmg != 0, then gain role “hybrid”
else if cryo_dmg != 0, then gain role “cryo_dps”
else if phys_dmg != 0, then gain role “phys_dps”
else, gain role “quill only”
The statistics we will use to describe and analyze the data are the following:
Sample and group means of multiple variables (mostly atk and ER); this will provide information on the average atk and ER of Shenhes in the dataset.
Sample standard deviation; this will provide information on the spread of the distributions of multiple variables such as atk and ER.
Sample proportion; this will provide information on the percentage of users exhibiting a certain characteristic.
Standard Error: this will provide information on the spread of the sampling distributions of multiple variables of the dataset. This will not be reported, rather, it will be used in constructing confidence intervals.
Mean difference: this will provide information on the difference between the centers of the distributions of a common variable between two groups.
Effect Size: this will provide information on the importance of a difference in means.
p-value: this will provide information on the likelihood of a type-I error. in other words, this value describes the chance of rejecting a true null hypothesis.
raw counts: this will provide information on the number of occurrences of a certain condition. These will mostly be used in calculating p-values.
The overarching question which this study attempts to answer is:
How are the factors within a player’s control are correlated with Shenhe’s atk and ER stats? How does the answer to this question compare to KQM’s descriptions and standards for Shenhe?
# load the data
setwd("C:/Users/15857/Downloads")
shenhe_original <- read_csv("shenhe_original_data.csv")## Rows: 249 Columns: 34
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (9): polearm name, refinement, set bonus, flower lvl, feather lvl, sand...
## dbl (24): Adventure Rank, Character lvl, atk, def, EM, crit rate, crit dmg, ...
## num (1): HP
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Here I cleaned out the dataset to remove observations which were unhelpful for analysis of my target population, and to make it more friendly to use in RStudio. The exclusion criteria for “fully built” Shenhes are as follows:
Artifact levels are a general metric of investment into a character, and a build is generally considered “complete” when all artifacts are at level 20. In the case of Shenhe, having a max level polearm is necessary, because she will otherwise lose out on a large amount of atk, which is necessary for her role as a partial damage dealer. Lastly, Shenhe also gains base atk from her personal level, which means a character level no less than 80 is necessary to achieve a near-optimal ceiling of damage and support potential.
# Change spaces to underscores, rename some of the variables.
names(shenhe_original) <- gsub(" ", "_", names(shenhe_original))
names(shenhe_original) <- gsub("Adventure_Rank", "AR", names(shenhe_original))
names(shenhe_original) <- gsub("Character_lvl", "char_lvl", names(shenhe_original))
names(shenhe_original) <- gsub("healing_bonus", "HB", names(shenhe_original))
# Remove the variables whose values were 0 for all observations.
shenhe <- shenhe_original %>%
select(-pyro_dmg, -hydro_dmg, -dendro_dmg, -electro_dmg, -anemo_dmg)
# Allow R to read appropriate variables as numeric.
shenhe$flower_lvl <- as.numeric(shenhe$flower_lvl)## Warning: NAs introduced by coercion
shenhe$feather_lvl <- as.numeric(shenhe$feather_lvl)## Warning: NAs introduced by coercion
shenhe$sands_lvl <- as.numeric(shenhe$sands_lvl)## Warning: NAs introduced by coercion
shenhe$goblet_lvl <- as.numeric(shenhe$goblet_lvl)## Warning: NAs introduced by coercion
shenhe$circlet_lvl <- as.numeric(shenhe$circlet_lvl)## Warning: NAs introduced by coercion
shenhe$refinement <- as.numeric(shenhe$refinement)## Warning: NAs introduced by coercion
shenhe$ER_req_met <- as.numeric(shenhe$ER_req_met)
shenhe$NA_talent_lvl <- as.numeric(shenhe$NA_talent_lvl)
shenhe$E_talent_lvl <- as.numeric(shenhe$E_talent_lvl)
shenhe$Q_talent_lvl <- as.numeric(shenhe$Q_talent_lvl)
# Filter following the exclusion criteria:
# 1) Exclude if the sum of the artifact levels is less than 95.
# 2) Exclude if the polearm level is not 90.
# 3) Exclude if the character level is less than 80.
shenhe <- shenhe %>%
mutate(artifact_total = flower_lvl + feather_lvl + sands_lvl + goblet_lvl + circlet_lvl) %>%
filter(artifact_total >= 95) %>%
filter(polearm_lvl == 90) %>%
filter(char_lvl >= 80)
# Remove the healing bonus variable as it is uniformly 0 in the new filtered data.
shenhe <- shenhe %>%
select(-HB)
# Sort the set bonuses by the exact effects they provide (some are identical)
shenhe$set_bonus <- gsub("2BC2PF", "phys-phys", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2BC2SR", "phys-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2BS2GF", "cryo-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2BS2SR", "cryo-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2Eoa2GF", "atk-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2EoaO2GF", "atk-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2EoaO2SR", "atk-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2GF2BS", "cryo-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2GF2NO", "atk-noblesse", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2GF2SR", "atk-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2GF2VH", "atk-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2GF2WT", "atk-EM", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2SR2VH", "atk-atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("4BS", "full-blizzard", shenhe$set_bonus)
shenhe$set_bonus <- gsub("4EoSF", "full-emblem", shenhe$set_bonus)
shenhe$set_bonus <- gsub("4GF", "full-gladiator", shenhe$set_bonus)
shenhe$set_bonus <- gsub("4NO", "full-noblesse", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2BS", "cryo", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2GF", "atk", shenhe$set_bonus)
shenhe$set_bonus <- gsub("2SR", "atk", shenhe$set_bonus)
# And to reduce the length of the largest polearm names
shenhe$polearm_name <- gsub("Primordial_Jade_Winged_Spear", "Jade",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Staff_of_Scarlet_Sands", "Scarlet_Sands",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Prototype_Starglitter", "Starglitter",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Engulfing_Lightning", "Engulfing",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Vortex_Vanquisher", "Vortex",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Missive_Windspear", "Windspear",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Wavebreakers_Fin", "Wavebreaker",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Blackcliff_Pole", "Blackcliff",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Skyward_Spine", "Skyward",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Calamity_Queller", "Calamity",
shenhe$polearm_name)
shenhe$polearm_name <- gsub("Favonius_Lance", "Favonius",
shenhe$polearm_name)
#* Remove any builds categorized as "incomplete". The one remaining observation
#* which was "incomplete" after these filtering criteria was equipped with a
#* geo damage bonus goblet, which Shenhe cannot utilize, and provides
#* sufficient evidence that this user simply had not finished building their
#* Shenhe. Only one observation has shield_strength, and it is due to their
#* equipped polearm "vortex_vanquisher", and since the variable shield_strength
#* is unuseful in the analysis, it can be removed. The observation which used
#* "vortex_vanquisher" is still, however, completely valid and should be
#* included in the dataset. The artifact level and weapon level variables were
#* simply a means towards filtering the data, and therefore can be removed from
#* the dataset.
shenhe <- shenhe %>%
filter(build_type != "incomplete")
shenhe <- shenhe %>%
select(-geo_dmg, -shield_strength, -flower_lvl, -feather_lvl, -sands_lvl,
-goblet_lvl, -circlet_lvl, -polearm_lvl)
#* After all the filtering, 100/249 observations of Shenhes on display did not
#* meet my criteria of being "fully built", and were removed.The following is a bar graph of the polearms these players had
equipped. The most popular choices were:
1) Calamity Queller
2) Favonius Lance
3) Skyward Spine
4) Missive Windspear
5) Wavebreaker’s Fin (tie)
5) Primordial Jade Winged Spear (tie)
polearms_barchart <- shenhe %>%
ggplot() +
geom_bar(aes(x = polearm_name)) +
coord_flip()
polearms_barchartThe following is a bar graph of the set bonuses these players had. The most common set by far was a double atk set bonus (such as 2 gladiator and 2 shimenawa). The next most popular choice was a full noblesse oblige set, which is the KQM recommendation.
setbonus_barchart <- shenhe %>%
ggplot() +
geom_bar(aes(x = set_bonus)) +
coord_flip()
setbonus_barchartThe following is a bar graph of the build types of the Shenhes which met the inclusion criteria. The two most common builds were, in first, full Icy Quill damage builds, and second buffing and utility builds.
buildtype_barchart <- shenhe %>%
ggplot() +
geom_bar(aes(x = build_type)) +
coord_flip()
buildtype_barchartThe following are histograms of all the important quantitative variables in the dataset.
par(mfrow = c(2,2))
hist(shenhe$AR, col = 'steelblue')
hist(shenhe$char_lvl, col = 'steelblue')
hist(shenhe$HP, col = 'steelblue')
print("normality of HP:")## [1] "normality of HP:"
shapiro.test(shenhe$HP)##
## Shapiro-Wilk normality test
##
## data: shenhe$HP
## W = 0.96788, p-value = 0.001465
hist(shenhe$atk, col = 'steelblue')print("normality of atk:")## [1] "normality of atk:"
shapiro.test(shenhe$atk)##
## Shapiro-Wilk normality test
##
## data: shenhe$atk
## W = 0.98724, p-value = 0.1885
hist(shenhe$def, col = 'steelblue')
print("normality of def:")## [1] "normality of def:"
shapiro.test(shenhe$def)##
## Shapiro-Wilk normality test
##
## data: shenhe$def
## W = 0.94818, p-value = 2.465e-05
hist(shenhe$EM, col = 'steelblue')
print("normality of EM:")## [1] "normality of EM:"
shapiro.test(shenhe$EM)##
## Shapiro-Wilk normality test
##
## data: shenhe$EM
## W = 0.86292, p-value = 1.884e-10
hist(shenhe$crit_rate, col = 'steelblue')
print("normality of crit_rate:")## [1] "normality of crit_rate:"
shapiro.test(shenhe$crit_rate)##
## Shapiro-Wilk normality test
##
## data: shenhe$crit_rate
## W = 0.98435, p-value = 0.08917
hist(shenhe$crit_dmg, col = 'steelblue')print("normality of crit_dmg:")## [1] "normality of crit_dmg:"
shapiro.test(shenhe$crit_dmg)##
## Shapiro-Wilk normality test
##
## data: shenhe$crit_dmg
## W = 0.9743, p-value = 0.006763
hist(shenhe$ER, col = 'steelblue')
print("normality of ER:")## [1] "normality of ER:"
shapiro.test(shenhe$ER)##
## Shapiro-Wilk normality test
##
## data: shenhe$ER
## W = 0.96959, p-value = 0.00218
hist(shenhe$cryo_dmg, col = 'steelblue')
hist(shenhe$phys_dmg, col = 'steelblue')
hist(shenhe$refinement, col = 'steelblue')hist(shenhe$constellation, col = 'steelblue')
hist(shenhe$NA_talent_lvl, col = 'steelblue')
hist(shenhe$E_talent_lvl, col = 'steelblue')
hist(shenhe$Q_talent_lvl, col = 'steelblue')print("normality of Q_talent_lvl:")## [1] "normality of Q_talent_lvl:"
shapiro.test(shenhe$Q_talent_lvl)##
## Shapiro-Wilk normality test
##
## data: shenhe$Q_talent_lvl
## W = 0.90287, p-value = 2.095e-08
par(mfrow = c(1,1))Because much of the data is non-parametric, the only variables which I wish to describe in terms of confidence intervals are atk, ER, and ER_req_met. The following are the interpretations of the confidence intervals of each of those:
We can be 95% confident that the population mean atk of Shenhes on display is between 3129.922 and 3301.716.
We can be 95% confident that the population mean ER of Shenhes on display is between 146.966 and 156.533.
We can be 95% confident that the population proportion of Shenhes on display which meet standard ER requirements is between 0.178 and 0.319.
conf.int <- function(quantvar, n, conf.level = 0.95){
point_estimate <- mean(quantvar)
MoE <- qt( 1 - (1 - conf.level)/2 , df = (n - 1)) * ( sd(quantvar)/sqrt(n) )
confidence_interval <- point_estimate + c(-MoE, MoE)
return(confidence_interval)
}
conf.int(shenhe$atk, n = 149)## [1] 3129.922 3301.716
conf.int(shenhe$ER, n = 149)## [1] 146.9655 156.5325
conf.int(shenhe$ER_req_met, n = 149)## [1] 0.1781432 0.3185011
Because we will use Noblesse Oblige and Favonius Lance as reference frames for all other gear choices, it is important to understand their individual statistics.
The following are the interpretations of the constructed confidence intervals:
We can be 95% confident that the population mean atk of Shenhes on display with the 4 piece noblesse set is between 2544.744 and 2949.812.
We can be 95% confident that the population mean ER of Shenhes on display with the 4 piece noblesse set is between 149.368 and 180.621.
We can be 95% confident that the population mean atk of Shenhes on display equpping the Favonius Lance is between 2685.836 and 2990.016.
We can be 95% confident that the population mean ER of Shenhes on display equipping the Favonius Lance is between 154.775 and 173.092.
shenhe_noblesse <- shenhe %>%
filter(set_bonus %in% c("full-noblesse"))
shenhe_favlance <- shenhe %>%
filter(polearm_name %in% c("Favonius"))
conf.int(shenhe_noblesse$atk, nrow(shenhe_noblesse))## [1] 2544.744 2949.812
conf.int(shenhe_noblesse$ER, nrow(shenhe_noblesse))## [1] 149.3676 180.6213
conf.int(shenhe_favlance$atk, nrow(shenhe_favlance))## [1] 2685.836 2990.016
conf.int(shenhe_favlance$ER, nrow(shenhe_favlance))## [1] 154.7749 173.0917
# for use only in the conclusion
shenhe_atk_atk <- shenhe %>%
filter(set_bonus %in% c("atk-atk"))
print("for conclusion only:")## [1] "for conclusion only:"
conf.int(shenhe_atk_atk$ER, nrow(shenhe_atk_atk))## [1] 145.8108 156.9070
I do not believe that analysis of variance is appropriate for this data because there is too little information on the distribution of ER, however, this section intends to demonstrate how one may go about using ANOVA on the data. A non-parametric post-hoc test can work, but ultimately I wish to use bootstrapping to compare group means for this dataset.
The residuals of the model do not have constant variance, and the scale-location plot is noticeably curved, therefore analysis of variance is not an appropriate statistical method.
hist(shenhe$ER)shapiro.test(shenhe$ER)##
## Shapiro-Wilk normality test
##
## data: shenhe$ER
## W = 0.96959, p-value = 0.00218
#* because the distribution of Shenhe's energy recharge is evidently non-normal,
#* if we wish to do analysis of variance, we must transform the data because
#* there are subgroups in the data with too few observations to satisfy the
#* central limit theorem (e.g. sample size of engulfing lightning users = 3).
ER_transformed <- log(shenhe$ER)
hist(ER_transformed)shapiro.test(ER_transformed)##
## Shapiro-Wilk normality test
##
## data: ER_transformed
## W = 0.98956, p-value = 0.3342
ER_anova <- aov(ER_transformed ~ polearm_name, data = shenhe)
summary(ER_anova)## Df Sum Sq Mean Sq F value Pr(>F)
## polearm_name 18 2.227 0.12374 5.06 1.38e-08 ***
## Residuals 130 3.179 0.02446
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(ER_anova)## Warning: not plotting observations with leverage one:
## 66, 124, 130, 140, 149
## Warning in sqrt(crit * p * (1 - hh)/hh): NaNs produced
## Warning in sqrt(crit * p * (1 - hh)/hh): NaNs produced
# For post-hoc testing you can use TukeyHSD(ER_anova)The variables of interest for hypothesis testing are:
1) atk
2) ER
3) polearm name
4) set bonus
More specifically, we are interested in how gear (factors which the player has direct control over such as polearm and set bonus) impact atk and ER. The “build type” variable is not of interest, as it was constructed using other data such as polearm and set bonus, and thus must be collinear.
The following are hypotheses for each categorical-quantitative relationship:
ER vs. Polearm:
H0: There is no difference in mean ER between any polearm type.
Ha: There is a difference in mean ER for at least one polearm type.
ER vs. Set Bonus:
H0: There is no difference in mean ER between any set bonuses.
Ha: There is a difference in mean ER for at least one set bonus.
atk vs. Polearm: H0: There is no difference in mean atk between any
polearm type.
Ha: There is a difference in mean atk for at least one polearm type.
atk vs. Set Bonus:
H0: There is no difference in mean atk between any set bonuses.
Ha: There is a difference in mean atk for at least one set bonus.
The Kruskal-Wallis test is a non-parametric alternative to ANOVA which we will use to assess these hypotheses. The corresponding non-parametric post-hoc test to the Kruskal-Wallis test which we found was the Dunn Test, however we will not use this test to complete the individual pairwise comparisons. Because the test is non-parametric, the hypotheses must be modified to reflect a shift in distributions rather than a difference in means. The mean difference hypotheses may still apply to the individual pairwise comparisons.
At a significance level of alpha = 0.05, the Kruskal-Wallis returns
the following:
1) There is very strong evidence to suggest that at least one of the
polearm types has a differing distribution of ER. This result
additionally warrants post-hoc testing. 2) There is no evidence to
suggest that at any of the set bonuses has a differing distribution of
ER. This result does not warrant post-hoc testing.
3) There is very strong evidence to suggest that at least one of the
polearm types has a differing distribution of atk. This result
additionally warrants post-hoc testing.
4) There is very strong evidence to suggest that at least one of the set
bonuses has a differing distribution of atk. This result additionally
warrants post-hoc testing.
# Because there are categories with less than 5 observations, a non-parametric
# test is a preferable method.
kruskal.test(ER ~ polearm_name, data = shenhe)##
## Kruskal-Wallis rank sum test
##
## data: ER by polearm_name
## Kruskal-Wallis chi-squared = 61.46, df = 18, p-value = 1.186e-06
kruskal.test(ER ~ set_bonus, data = shenhe)##
## Kruskal-Wallis rank sum test
##
## data: ER by set_bonus
## Kruskal-Wallis chi-squared = 18.237, df = 12, p-value = 0.1087
kruskal.test(atk ~ polearm_name, data = shenhe)##
## Kruskal-Wallis rank sum test
##
## data: atk by polearm_name
## Kruskal-Wallis chi-squared = 59.529, df = 18, p-value = 2.438e-06
kruskal.test(atk ~ set_bonus, data = shenhe)##
## Kruskal-Wallis rank sum test
##
## data: atk by set_bonus
## Kruskal-Wallis chi-squared = 59.244, df = 12, p-value = 3.099e-08
#* one of the options for post-hoc testing is the dunnTest under the package
#* "FSA", but as I said earlier, I wish to do bootstrapping. The syntax for
#* the dunnTest is as follows:
#* dunnTest(ER ~ polearm_name, data = shenhe)
#* etc.The following code is a randomization test which scans through all pairwise combinations of a categorical variable “treatment”, and bootstraps to assess whether there is a difference in means. This is a much preferrable option to the t-test, because the small sample sizes (between 1 and 10) are insufficient to account for the highly skewed nature of the distribution of ER. Unfortunately, because there is very little information on the distribution of ER, it is not simple to create confidence intervals for the difference in means. Point estimates of the population effect size and population mean difference will simply need to be interpreted according to their corresponding p-values.
adi_saidi.RPT <- function(treatment, outcome, n = 1000, plot_dist = "FALSE") {
treatment_factor_levels <- length(unique(treatment))
tfl_choose2 <- treatment_factor_levels*(treatment_factor_levels - 1)/2
treatment_combns <- matrix(, nrow = tfl_choose2, ncol = 2)
ind <- 1
for (i in 1:(treatment_factor_levels-1)) {
for (j in (i+1):(treatment_factor_levels)) {
treatment_combns[ind,1] <- unique(treatment)[i]
treatment_combns[ind,2] <- unique(treatment)[j]
ind <- ind+1
}
}
TO_data <- data.frame(
treatment,
outcome)
p_value <- c()
effect_size <- c()
treatment_1 <- c()
treatment_2 <- c()
mean_diff <- c()
for (k in 1:(nrow(treatment_combns))) {
data_filtering <- TO_data %>%
filter(treatment %in% c(treatment_combns[k, 1], treatment_combns[k,2]))
treatment_particular <- data_filtering$treatment
outcome_particular <- data_filtering$outcome
original <- diff(tapply(outcome_particular, treatment_particular, mean))
mean_diff_dist = c()
for(l in 1:n) {
mean_diff_dist[l] = diff(by(outcome_particular, sample(treatment_particular, length(treatment_particular), FALSE), mean))
}
group1 <- data_filtering %>%
filter(treatment %in% c(treatment_combns[k, 1]))
group2 <- data_filtering %>%
filter(treatment %in% c(treatment_combns[k, 2]))
mean1 = mean(group1$outcome)
mean2 = mean(group2$outcome)
p_value[k] = sum(abs(mean_diff_dist) >= abs(original))/(n)
mean_diff[k] = mean2 - mean1
effect_size[k] = (mean2-mean1)/sd(outcome_particular)
treatment_1[k] <- unique(treatment_particular)[1]
treatment_2[k] <- unique(treatment_particular)[2]
if (plot_dist == "TRUE") {
hist(mean_diff_dist, breaks=50, col='grey', main="Randomization Distribution",
las=1, xlab=(unique(treatment_particular)))
original <- diff(tapply(outcome_particular, treatment_particular, mean))
abline(v=original, lwd=3, col= "red")
abline(v=-original, lwd=3, col= "red")
}
}
results <- data.frame(cbind(treatment_1, treatment_2, p_value, effect_size, mean_diff))
return(results)
}KQM uses the Favonius Lance as a reference frame for all other polearm choices, and we will use the same process in order to analyze their recommendations. The following are the results of the post-hoc test:
Favonius Lance vs. Wavebreaker’s Fin:
There is moderate evidence (p=0.025) to suggest that there is a
difference in the mean ER of Shenhes equipping these two polearms. The
sample mean difference in ER is a decrease of 18.619 ER. This difference
has a medium associated effect size (-0.718), which indicates a
relatively important difference in ER. Practically, this difference may
be crucial in combat, because a Wavebreaker’s Fin Shenhe having a lack
of ER could also limit their ability to utilize the burst damage bonus
provided by the Wavebreaker’s passive.
Favonius Lance vs. Skyward Spine:
There is moderate evidence (p=0.044) to suggest that there is a
difference in the mean ER of Shenhes equipping these two polearms. The
sample mean difference in ER is an increase of 15.233 ER. This
difference has a medium associated effect size (0.630), which indicates
a relatively important difference in ER. Practically, this difference
may not matter in combat, because the extra particles provided by the
Favonius passive typically bridges a gap of about 15 ER. This however,
may be a positive of the Skyward Spine, because its higher base atk
could link to a higher overall atk, which we will assess in later
testing.
Favonius Lance vs. Calamity Queller:
There is strong evidence (p=0.009) to suggest that there is a difference
in the mean ER of Shenhes equipping these two polearms. The sample mean
difference in ER is a decrease of 16.861 ER. This difference has a
medium associated effect size (0.610), which indicates a relatively
important difference in ER. Practically, this difference is hard to
assess because many players with Calamity Queller either have
constellations on their Shenhe, which decreases her energy requirement,
or incorporate modified playstyles.
Favonius Lance vs. Missive Windspear:
There is strong evidence (p=0.000) to suggest that there is a difference
in the mean ER of Shenhes equipping these two polearms. The sample mean
difference in ER is a decrease of 27.84 ER. This difference has a large
associated effect size (-1.013), which indicates an important difference
in ER. Practically, this difference can ruin rotations when left
unaddressed.
Favonius Lance vs. Lithic Spear:
There is moderate evidence (p=0.011) to suggest that there is a
difference in the mean ER of Shenhes equipping these two polearms. The
sample mean difference in ER is a decrease of 30.253 ER. This difference
has a large associated effect size (-1.230), which indicates an
important difference in ER. This has the same implications as in the
previous case.
Favonius Lance vs. Staff of Homa:
There is weak evidence (p=0.089) to suggest that there is a difference
in the mean ER of Shenhes equipping these two polearms. The sample mean
difference in ER is a decrease of 48.433 ER. This difference has a large
associated effect size (-1.977), which indicates an important difference
in ER. Because of the larger p-value, it is very possible that the
difference in population mean ER is closer to 0, so the implications of
this case are very similar to the previous two.
Favonius Lance vs. The Catch:
There is no evidence (p=0.439) to suggest that there is a difference in
the mean ER of Shenhes equipping these two polearms.
Favonius Lance vs. Engulfing Lightning There is strong evidence (p=0.008) to suggest that there is a difference in the mean ER of Shenhes equipping these two polearms. The sample mean difference in ER is an increase of 43.433 ER. This difference has a large associated effect size (1.683), which indicates an important difference in ER. Practically, this difference remains the same because of Engulfing Lightning’s personal ER boost after casting a burst. Still, Favonius Lance provides energy for the entire team from its passive, which is an added layer of utility to consider when choosing a polearm for Shenhe.
Favonius Lance vs. Primordial Jade Winged Spear:
There is strong evidence (p=0.009) to suggest that there is a difference
in the mean ER of Shenhes equipping these two polearms. The sample mean
difference in ER is a decrease of 20.270 ER. This difference has a large
associated effect size (-0.882), which indicates an important difference
in ER. This has the same implications as in cases four, five, and
six.
Favonius Lance vs. Vortex Vanquisher:
There is moderate evidence (p=0.046) to suggest that there is a
difference in the mean ER of Shenhes equipping these two polearms. The
sample mean difference in ER is a decrease of 38.983 ER. This difference
has a large associated effect size (-1.573), which indicates an
important difference in ER. I would not place much certainty on these
values, because there were only two total observations for the Vortex
Vanquisher polearm, which I do not believe is sufficient data to make
any firm conclusions. The implications of this difference are still the
same.
Favonius Lance vs. Deathmatch:
There is very strong evidence (p=0.000) to suggest that there is a
difference in the mean ER of Shenhes equipping these two polearms. The
sample mean difference in ER is a decrease of 56.800 ER. This difference
has a large associated effect size (-2.028), which indicates an
important difference in ER. It is unclear why the difference in mean ER
for these two polearms is so large, but one of the contributing factors
certainly could be that there were only three (3) observations of
Shenhes equipping Deathmatch in the first place. This certainly could
have yielded an inappropriate p-value, because there were no
combinations within the resampling which produced results of the same
magnitude or higher, but that certainly does not mean that those cases
do not exist outside of the dataset. This difference, still, has the
same implications as the previous.
Favonius Lance vs. Blackcliff Pole:
There is weak evidence (p=0.066) to suggest that there is a difference
in the mean ER of Shenhes equipping these two polearms. The sample mean
difference in ER is a decrease of 58.733 ER. This difference has a large
associated effect size (-2.323), which indicates an important difference
in ER. Because of the larger p-value, it is very possible that the
difference in population mean ER is closer to 0, and given that there
was only one observation of Blackcliff Pole, these values are not very
consequential.
Favonius Lance vs. Dragon’s Bane:
There is weak evidence (p=0.086) to suggest that there is a difference
in the mean ER of Shenhes equipping these two polearms. The sample mean
difference in ER is a decrease of 48.433 ER. This difference has a large
associated effect size (-1.977), which indicates an important difference
in ER. Because of the larger p-value, it is very possible that the
difference in population mean ER is closer to 0, and given that there
was only one observation of Dragon’s Bane, these values are not very
consequential.
Favonius Lance vs. Royal Spear:
There is no evidence (p=0.618) to suggest that there is a difference in
the mean ER of Shenhes equipping these two polearms.
Favonius Lance vs. Prototype Starglitter:
There is no evidence (p=0.916) to suggest that there is a difference in
the mean ER of Shenhes equipping these two polearms.
Favonius Lance vs. Staff of Scarlet Sands:
There is nearly no evidence (p=0.098) to suggest that there is a
difference in the mean ER of Shenhes equipping these two
polearms.
Favonius Lance vs. White Tassel:
There is no evidence (p=0.409) to suggest that there is a difference in
the mean ER of Shenhes equipping these two polearms.
Favonius Lance vs. Crescent Pike: There is weak evidence (p=0.075) to suggest that there is a difference in the mean ER fo Shenhes equipping these two polearms. The sample mean difference in ER is a decrease of 44.533 ER. This difference has a large associated effect size (-1.838), which indicates an important difference in ER. Because of the larger p-value, it is very possible that the difference in population mean ER is closer to 0. Additionally, Shenhes using Crescent Pike are usually physical DPS, and do not gain much utility from casting their burst.
set.seed(27)
adi_saidi.RPT(shenhe$polearm_name, shenhe$ER)## treatment_1 treatment_2 p_value effect_size mean_diff
## 1 Favonius Wavebreaker 0.025 -0.718283359872518 -18.6190476190476
## 2 Favonius Skyward 0.044 0.629952648030062 15.2333333333333
## 3 Favonius Calamity 0.009 -0.61044759851201 -16.8611111111111
## 4 Favonius Windspear 0 -1.01309602271536 -27.84
## 5 Favonius Lithic_Spear 0.011 -1.23038500399815 -30.2533333333333
## 6 Favonius Staff_of_Homa 0.089 -1.977424784088 -48.4333333333333
## 7 Favonius The_Catch 0.439 0.471422269275313 10.5
## 8 Favonius Engulfing 0.008 1.68261141313218 43.4333333333333
## 9 Favonius Jade 0.009 -0.881692142189236 -20.2690476190476
## 10 Favonius Vortex 0.046 -1.57338336609433 -38.9833333333333
## 11 Favonius Deathmatch 0 -2.02758558055394 -56.8
## 12 Favonius Blackcliff 0.066 -2.32284465596971 -58.7333333333333
## 13 Favonius Dragons_Bane 0.082 -1.977424784088 -48.4333333333333
## 14 Favonius Royal_Spear 0.618 -0.315895971217589 -7.58333333333334
## 15 Favonius Starglitter 0.916 -0.22135710746494 -5.03333333333333
## 16 Favonius Scarlet_Sands 0.098 -1.7649662815073 -42.5333333333333
## 17 Favonius White_Tassel 0.409 -0.865582348603339 -19.9333333333333
## 18 Favonius Crescent_Pike 0.076 -1.83814255143607 -44.5333333333333
## 19 Wavebreaker Skyward 0.001 1.12524351583811 33.8523809523809
## 20 Wavebreaker Calamity 0.826 0.0625080585260945 1.75793650793651
## 21 Wavebreaker Windspear 0.369 -0.345769211997543 -9.22095238095238
## 22 Wavebreaker Lithic_Spear 0.386 -0.466626425696863 -11.6342857142857
## 23 Wavebreaker Staff_of_Homa 0.208 -1.08479593025251 -29.8142857142857
## 24 Wavebreaker The_Catch 0.104 1.06356792627564 29.1190476190476
## 25 Wavebreaker Engulfing 0.003 1.77508289823048 62.052380952381
## 26 Wavebreaker Jade 0.863 -0.0746792764068187 -1.65000000000001
## 27 Wavebreaker Vortex 0.293 -0.755632924941543 -20.3642857142857
## 28 Wavebreaker Deathmatch 0.035 -1.31645882496883 -38.1809523809524
## 29 Wavebreaker Blackcliff 0.149 -1.41527159770657 -40.1142857142857
## 30 Wavebreaker Dragons_Bane 0.208 -1.08479593025251 -29.8142857142857
## 31 Wavebreaker Royal_Spear 0.648 0.389336065213161 11.0357142857143
## 32 Wavebreaker Starglitter 0.743 0.510437105499159 13.5857142857143
## 33 Wavebreaker Scarlet_Sands 0.339 -0.882557391240444 -23.9142857142857
## 34 Wavebreaker White_Tassel 0.937 -0.0498102314533053 -1.31428571428572
## 35 Wavebreaker Crescent_Pike 0.374 -0.952069631664494 -25.9142857142857
## 36 Skyward Calamity 0 -1.03843148555682 -32.0944444444444
## 37 Skyward Windspear 0 -1.32105785233668 -43.0733333333333
## 38 Skyward Lithic_Spear 0.001 -1.57588548602325 -45.4866666666667
## 39 Skyward Staff_of_Homa 0.057 -2.35753199465594 -63.6666666666667
## 40 Skyward The_Catch 0.749 -0.217200827736025 -4.73333333333332
## 41 Skyward Engulfing 0.061 1.16961664255121 28.2
## 42 Skyward Jade 0 -1.314024363035 -35.5023809523809
## 43 Skyward Vortex 0.015 -1.92947021908153 -54.2166666666667
## 44 Skyward Deathmatch 0.001 -2.13617992278428 -72.0333333333333
## 45 Skyward Blackcliff 0.042 -2.60873868661879 -73.9666666666667
## 46 Skyward Dragons_Bane 0.065 -2.35753199465594 -63.6666666666667
## 47 Skyward Royal_Spear 0.269 -0.896122982815997 -22.8166666666667
## 48 Skyward Starglitter 0.442 -0.874096591302988 -20.2666666666667
## 49 Skyward Scarlet_Sands 0.093 -2.19659968696112 -57.7666666666667
## 50 Skyward White_Tassel 0.157 -1.45889045186491 -35.1666666666667
## 51 Skyward Crescent_Pike 0.115 -2.25259152565636 -59.7666666666667
## 52 Calamity Windspear 0.2 -0.389102647056902 -10.9788888888889
## 53 Calamity Lithic_Spear 0.313 -0.483316138799679 -13.3922222222222
## 54 Calamity Staff_of_Homa 0.246 -1.09463242146087 -31.5722222222222
## 55 Calamity The_Catch 0.094 0.9548014986409 27.3611111111111
## 56 Calamity Engulfing 0 1.87392290782206 60.2944444444445
## 57 Calamity Jade 0.664 -0.132302728838222 -3.40793650793651
## 58 Calamity Vortex 0.307 -0.772676656277033 -22.1222222222222
## 59 Calamity Deathmatch 0.019 -1.34498169858253 -39.9388888888889
## 60 Calamity Blackcliff 0.165 -1.43422392330422 -41.8722222222222
## 61 Calamity Dragons_Bane 0.227 -1.09463242146087 -31.5722222222222
## 62 Calamity Royal_Spear 0.744 0.319319257136099 9.27777777777777
## 63 Calamity Starglitter 0.72 0.415908020529133 11.8277777777778
## 64 Calamity Scarlet_Sands 0.392 -0.894998814664042 -25.6722222222222
## 65 Calamity White_Tassel 0.949 -0.108266857600666 -3.07222222222222
## 66 Calamity Crescent_Pike 0.305 -0.96303784637736 -27.6722222222222
## 67 Windspear Lithic_Spear 0.867 -0.102565463182728 -2.41333333333333
## 68 Windspear Staff_of_Homa 0.439 -0.799597533864276 -20.5933333333333
## 69 Windspear The_Catch 0.018 1.36662105292301 38.34
## 70 Windspear Engulfing 0 1.95713188309414 71.2733333333333
## 71 Windspear Jade 0.34 0.346299560885418 7.57095238095238
## 72 Windspear Vortex 0.6 -0.441461566353428 -11.1433333333333
## 73 Windspear Deathmatch 0.082 -1.10106998960298 -28.96
## 74 Windspear Blackcliff 0.382 -1.17063446466263 -30.8933333333333
## 75 Windspear Dragons_Bane 0.429 -0.799597533864276 -20.5933333333333
## 76 Windspear Royal_Spear 0.374 0.728549539222166 20.2566666666667
## 77 Windspear Starglitter 0.457 0.88155621231156 22.8066666666667
## 78 Windspear Scarlet_Sands 0.517 -0.576192019151447 -14.6933333333333
## 79 Windspear White_Tassel 0.81 0.312367053274414 7.90666666666667
## 80 Windspear Crescent_Pike 0.496 -0.652655214887428 -16.6933333333333
## 81 Lithic_Spear Staff_of_Homa 0.324 -1.16340950926518 -18.18
## 82 Lithic_Spear The_Catch 0.027 1.66122260143855 40.7533333333333
## 83 Lithic_Spear Engulfing 0.01 1.82431634482193 73.6866666666667
## 84 Lithic_Spear Jade 0.249 0.615994263945707 9.9842857142857
## 85 Lithic_Spear Vortex 0.546 -0.556267538592371 -8.73
## 86 Lithic_Spear Deathmatch 0.03 -1.44015660703518 -26.5466666666667
## 87 Lithic_Spear Blackcliff 0.163 -1.58152273208059 -28.48
## 88 Lithic_Spear Dragons_Bane 0.307 -1.16340950926518 -18.18
## 89 Lithic_Spear Royal_Spear 0.305 0.904063366225321 22.67
## 90 Lithic_Spear Starglitter 0.343 1.46809231222432 25.22
## 91 Lithic_Spear Scarlet_Sands 0.843 -0.838983640932466 -12.28
## 92 Lithic_Spear White_Tassel 0.83 0.71754614430365 10.32
## 93 Lithic_Spear Crescent_Pike 0.814 -0.956070905914138 -14.28
## 94 Staff_of_Homa The_Catch 0.254 1.9436576787682 58.9333333333333
## 95 Staff_of_Homa Engulfing 0.27 1.95510857928356 91.8666666666667
## 96 Staff_of_Homa Jade 0.214 1.6345726595451 28.1642857142857
## 97 Staff_of_Homa Vortex 1 0.608135305775328 9.45
## 98 Staff_of_Homa Deathmatch 0.492 -1.13122470024578 -8.36666666666666
## 99 Staff_of_Homa Blackcliff 1 -1.41421356237309 -10.3
## 100 Staff_of_Homa Dragons_Bane 1 NaN 0
## 101 Staff_of_Homa Royal_Spear 0.652 1.02036924875696 40.85
## 102 Staff_of_Homa Starglitter 1 1.4142135623731 43.4
## 103 Staff_of_Homa Scarlet_Sands 1 1.41421356237309 5.90000000000001
## 104 Staff_of_Homa White_Tassel 1 1.4142135623731 28.5
## 105 Staff_of_Homa Crescent_Pike 1 1.4142135623731 3.90000000000001
## 106 The_Catch Engulfing 0.107 1.61697666450616 32.9333333333333
## 107 The_Catch Jade 0.006 -1.60119651080011 -30.7690476190476
## 108 The_Catch Vortex 0.09 -1.66928495470748 -49.4833333333333
## 109 The_Catch Deathmatch 0.095 -1.79116756905674 -67.3
## 110 The_Catch Blackcliff 0.249 -1.9586982375945 -69.2333333333333
## 111 The_Catch Dragons_Bane 0.229 -1.9436576787682 -58.9333333333333
## 112 The_Catch Royal_Spear 0.619 -0.704071502839041 -18.0833333333333
## 113 The_Catch Starglitter 0.489 -1.47177546901411 -15.5333333333333
## 114 The_Catch Scarlet_Sands 0.248 -1.93110078815236 -53.0333333333333
## 115 The_Catch White_Tassel 0.241 -1.81030302955788 -30.4333333333333
## 116 The_Catch Crescent_Pike 0.26 -1.93578342979566 -55.0333333333333
## 117 Engulfing Jade 0.003 -2.17415461245749 -63.702380952381
## 118 Engulfing Vortex 0.112 -1.75033797338594 -82.4166666666667
## 119 Engulfing Deathmatch 0.085 -1.80165692197293 -100.233333333333
## 120 Engulfing Blackcliff 0.249 -1.96346993788463 -102.166666666667
## 121 Engulfing Dragons_Bane 0.242 -1.95510857928356 -91.8666666666667
## 122 Engulfing Royal_Spear 0.111 -1.37453172521577 -51.0166666666667
## 123 Engulfing Starglitter 0.278 -1.85146930810048 -48.4666666666667
## 124 Engulfing Scarlet_Sands 0.242 -1.94897716123147 -85.9666666666667
## 125 Engulfing White_Tassel 0.215 -1.9089845611363 -63.3666666666667
## 126 Engulfing Crescent_Pike 0.239 -1.95118761226109 -87.9666666666667
## 127 Jade Vortex 0.173 -1.08623611159035 -18.7142857142857
## 128 Jade Deathmatch 0.003 -1.76880391118146 -36.5309523809524
## 129 Jade Blackcliff 0.072 -2.07797563969726 -38.4642857142857
## 130 Jade Dragons_Bane 0.221 -1.6345726595451 -28.1642857142857
## 131 Jade Royal_Spear 0.441 0.645645713931023 12.6857142857143
## 132 Jade Starglitter 0.387 0.945827270335678 15.2357142857143
## 133 Jade Scarlet_Sands 0.2 -1.33760987221548 -22.2642857142857
## 134 Jade White_Tassel 1 0.0214914099283983 0.335714285714289
## 135 Jade Crescent_Pike 0.201 -1.44171498481475 -24.2642857142857
## 136 Vortex Deathmatch 0.309 -1.17740217665614 -17.8166666666667
## 137 Vortex Blackcliff 0.665 -1.06838992256549 -19.75
## 138 Vortex Dragons_Bane 1 -0.608135305775328 -9.45
## 139 Vortex Royal_Spear 0.679 0.918981530950636 31.4
## 140 Vortex Starglitter 0.67 1.3907589749183 33.95
## 141 Vortex Scarlet_Sands 1 -0.241600973187231 -3.55
## 142 Vortex White_Tassel 0.686 1.04445121854127 19.05
## 143 Vortex Crescent_Pike 1 -0.372516781546988 -5.55
## 144 Deathmatch Blackcliff 0.735 -0.313065617249645 -1.93333333333334
## 145 Deathmatch Dragons_Bane 0.512 1.13122470024578 8.36666666666666
## 146 Deathmatch Royal_Spear 0.122 1.3768060563861 49.2166666666667
## 147 Deathmatch Starglitter 0.254 1.94668052464907 51.7666666666667
## 148 Deathmatch Scarlet_Sands 0.475 1.52008343494161 14.2666666666667
## 149 Deathmatch White_Tassel 0.237 1.89875511627163 36.8666666666667
## 150 Deathmatch Crescent_Pike 0.52 1.41813544523079 12.2666666666667
## 151 Blackcliff Dragons_Bane 1 1.41421356237309 10.3
## 152 Blackcliff Royal_Spear 0.652 1.16775039430952 51.15
## 153 Blackcliff Starglitter 1 1.41421356237309 53.7
## 154 Blackcliff Scarlet_Sands 1 1.41421356237309 16.2
## 155 Blackcliff White_Tassel 1 1.41421356237309 38.8
## 156 Blackcliff Crescent_Pike 1 1.4142135623731 14.2
## 157 Dragons_Bane Royal_Spear 0.653 1.02036924875696 40.85
## 158 Dragons_Bane Starglitter 1 1.4142135623731 43.4
## 159 Dragons_Bane Scarlet_Sands 1 1.41421356237309 5.90000000000001
## 160 Dragons_Bane White_Tassel 1 1.4142135623731 28.5
## 161 Dragons_Bane Crescent_Pike 1 1.4142135623731 3.90000000000001
## 162 Royal_Spear Starglitter 1 0.0787438449717908 2.55000000000001
## 163 Royal_Spear Scarlet_Sands 0.661 -0.916666327925715 -34.95
## 164 Royal_Spear White_Tassel 1 -0.372813590062281 -12.35
## 165 Royal_Spear Crescent_Pike 0.676 -0.953529071961912 -36.95
## 166 Starglitter Scarlet_Sands 1 -1.41421356237309 -37.5
## 167 Starglitter White_Tassel 1 -1.4142135623731 -14.9
## 168 Starglitter Crescent_Pike 1 -1.41421356237309 -39.5
## 169 Scarlet_Sands White_Tassel 1 1.41421356237309 22.6
## 170 Scarlet_Sands Crescent_Pike 1 -1.41421356237309 -2
## 171 White_Tassel Crescent_Pike 1 -1.41421356237309 -24.6
Again, KQM uses the Favonius Lance as a reference frame for all other polearm choices, and we will use the same process in order to analyze their recommendations, this time looking at atk instead of ER. The following are the results of the post-hoc test:
Favonius Lance vs. Wavebreaker’s Fin:
There is strong evidence (p=0.001) to suggest that there is a difference
in the mean atk of Shenhes equipping these two polearms. The sample mean
difference in atk is an increase of 423.574 atk. This difference has a
large associated effect size (1.009), which indicates an important
difference in atk. This atk increase can contribute a large amount of
icy quill damage.
Favonius Lance vs. Skyward Spine:
There is strong evidence (p=0.000) to suggest that there is a difference
in the mean atk of Shenhes equipping these two polearms. The sample mean
difference in atk is an increase of 566.685 atk. This difference has a
large associated effect size (1.303), which indicates an important
difference in atk. This atk increase can also contribute a large amount
of icy quill damage to the team.
Favonius Lance vs. Calamity Queller:
There is strong evidence (p=0.000) to suggest that there is a difference
in the mean atk of Shenhes equipping these two polearms. The sample mean
difference in atk is an increase of 760.713 atk. This difference has a
large associated effect size (1.163), which indicates an important
difference in atk. This atk increase can also contribute a large amount
of icy quill damage to the team.
Favonius Lance vs. Missive Windspear:
There is strong evidence (p=0.005) to suggest that there is a difference
in the mean atk of Shenhes equipping these two polearms. The sample mean
difference in atk is an increase of 362.741 atk. This difference has a
large associated effect size (0.898), which indicates an important
difference in atk. This atk increase can contribute a decent amount of
extra icy quill damage.
Favonius Lance vs. Lithic Spear:
There is no evidence (p=0.330) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms.
Favonius Lance vs. Staff of Homa: There is no evidence (p=0.326) to suggest that there is a difference in the mean atk of Shenhes equipping these two polearms. It is important to note here, that just because the data we have provides no evidence to suggest that there is any difference, doesn’t mean the data provides evidence to suggest that there is no difference.
Favonius Lance vs. The Catch:
There is very weak evidence (p=0.094) to suggest that there is a
difference in the mean atk of Shenhes equipping these two polearms.
Because of the large p-values, the point estimates are not appropriate
measures upon which to make numeric conclusions, but they suggest that
there is a general decrease in atk, which makes sense because The Catch
has a lower base atk than Favonius Lance (510 vs. 565).
Favonius Lance vs. Engulfing Lightning:
There is no evidence (p=0.268) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms. The atk might have
a true difference when in battle due to Engulfing Lightning’s ER and
subsequent atk bonus after casting an elemental burst.
Favonius Lance vs. Primordial Jade Winged Spear:
There is strong evidence (p=0.002) to suggest that there is a difference
in the mean atk of Shenhes equipping these two polearms. The sample mean
difference in atk is an increase of 460.431 atk. This difference has a
large associated effect size (1.056), which indicates an important
difference in atk. This atk increase can contribute a large amount of
extra icy quill damage.
Favonius Lance vs. Vortex Vanquisher:
There is moderate evidence (p=0.017) to suggest that there is a
difference in the mean atk of Shenhes equipping these two polearms. The
sample mean difference in atk is an increase of 684.074 atk. This
difference has a large associated effect size (1.652), which indicates
an important difference in atk. This atk increase can contribute a large
amount of extra icy quill damage. Practically, this difference may be
even larger, because while in battle, the Vortex Vanquisher increases
atk when shielded, but as KQM states, this atk buff cannot stack while
off field. This could still make Vortex Vanquisher a strong choice for
an on-field DPS Shenhe.
Favonius Lance vs. Deathmatch:
There is no evidence (p=0.822) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms.
Favonius Lance vs. Blackcliff Pole:
There is no evidence (p=0.464) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms.
Favonius Lance vs. Dragon’s Bane:
There is weak evidence (p=0.076) to suggest that there is a difference
in the mean atk of Shenhes equipping these two polearms. The sample mean
difference in atk is a decrease of 808.926 atk. This difference has a
large associated effect size (-1.987), which indicates an important
difference in atk. This atk loss would considerably decrease damage from
icy quills.
Favonius Lance vs. Royal Spear:
There is no evidence (p=0.134) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms.
Favonius Lance vs. Prototype Starglitter:
There is no evidence (p=0.165) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms.
Favonius Lance vs. Staff of Scarlet Sands:
There is no evidence (p=0.430) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms.
Favonius Lance vs. White Tassel:
There is no evidence (p=0.519) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms. Again, just
because the data provides no evidence to indicate a difference in
population means, does not mean that one does not actually
exist.
Favonius Lance vs. Crescent Pike:
There is no evidence (p=0.147) to suggest that there is a difference in
the mean atk of Shenhes equipping these two polearms.
set.seed(27)
adi_saidi.RPT(shenhe$polearm_name, shenhe$atk)## treatment_1 treatment_2 p_value effect_size mean_diff
## 1 Favonius Wavebreaker 0.001 1.00865651372902 423.574074074074
## 2 Favonius Skyward 0 1.30308029510274 566.685185185185
## 3 Favonius Calamity 0 1.16271032765533 760.712962962963
## 4 Favonius Windspear 0.005 0.897519212855634 362.74074074074
## 5 Favonius Lithic_Spear 0.33 0.45311286451962 179.674074074074
## 6 Favonius Staff_of_Homa 0.326 1.04473927629608 402.074074074074
## 7 Favonius The_Catch 0.094 -1.00972623935394 -387.592592592593
## 8 Favonius Engulfing 0.268 0.691127956449755 260.74074074074
## 9 Favonius Jade 0.002 1.05619054419661 460.431216931217
## 10 Favonius Vortex 0.017 1.65157651123932 684.074074074074
## 11 Favonius Deathmatch 0.822 0.141076634775625 51.4074074074074
## 12 Favonius Blackcliff 0.464 -0.798955515520137 -304.925925925926
## 13 Favonius Dragons_Bane 0.076 -1.9871647006814 -808.925925925926
## 14 Favonius Royal_Spear 0.134 1.13553390834645 443.574074074074
## 15 Favonius Starglitter 0.165 -1.70819872444915 -680.925925925926
## 16 Favonius Scarlet_Sands 0.43 0.812129337660546 310.074074074074
## 17 Favonius White_Tassel 0.519 -0.739917146188663 -281.925925925926
## 18 Favonius Crescent_Pike 0.147 -1.66078095177597 -659.925925925926
## 19 Wavebreaker Skyward 0.178 0.482439659764089 143.111111111111
## 20 Wavebreaker Calamity 0.058 0.58150956127537 337.138888888889
## 21 Wavebreaker Windspear 0.632 -0.180837844481788 -60.8333333333335
## 22 Wavebreaker Lithic_Spear 0.251 -0.633180013697155 -243.9
## 23 Wavebreaker Staff_of_Homa 0.922 -0.064468647310798 -21.5
## 24 Wavebreaker The_Catch 0.004 -1.81197204585276 -811.166666666667
## 25 Wavebreaker Engulfing 0.431 -0.496203734354942 -162.833333333333
## 26 Wavebreaker Jade 0.772 0.10432430830593 36.8571428571427
## 27 Wavebreaker Vortex 0.272 0.759539794671288 260.5
## 28 Wavebreaker Deathmatch 0.097 -1.08021847824483 -372.166666666667
## 29 Wavebreaker Blackcliff 0.147 -1.90286589917397 -728.5
## 30 Wavebreaker Dragons_Bane 0.083 -2.67392705888953 -1232.5
## 31 Wavebreaker Royal_Spear 0.908 0.060851488836728 20
## 32 Wavebreaker Starglitter 0.053 -2.51728184434121 -1104.5
## 33 Wavebreaker Scarlet_Sands 0.654 -0.339074663135743 -113.5
## 34 Wavebreaker White_Tassel 0.125 -1.85676920186933 -705.5
## 35 Wavebreaker Crescent_Pike 0.078 -2.48930397226261 -1083.5
## 36 Skyward Calamity 0.222 0.361957656904792 194.027777777777
## 37 Skyward Windspear 0.05 -0.673371831823394 -203.944444444445
## 38 Skyward Lithic_Spear 0.021 -1.15012664989821 -387.011111111111
## 39 Skyward Staff_of_Homa 0.695 -0.686273930968251 -164.611111111111
## 40 Skyward The_Catch 0.003 -2.32271695247396 -954.277777777778
## 41 Skyward Engulfing 0.047 -1.17693148598946 -305.944444444445
## 42 Skyward Jade 0.374 -0.347233306306028 -106.253968253969
## 43 Skyward Vortex 0.544 0.482683289618242 117.388888888889
## 44 Skyward Deathmatch 0.001 -1.77101101544203 -515.277777777778
## 45 Skyward Blackcliff 0.042 -2.81176278839075 -871.611111111111
## 46 Skyward Dragons_Bane 0.065 -3.48616196271268 -1375.61111111111
## 47 Skyward Royal_Spear 0.554 -0.511601578611312 -123.111111111111
## 48 Skyward Starglitter 0.046 -3.35808517847231 -1247.61111111111
## 49 Skyward Scarlet_Sands 0.377 -1.05135441850938 -256.611111111111
## 50 Skyward White_Tassel 0.056 -2.76771953577214 -848.611111111111
## 51 Skyward Crescent_Pike 0.06 -3.33476080267313 -1226.61111111111
## 52 Calamity Windspear 0.02 -0.681915258505033 -397.972222222222
## 53 Calamity Lithic_Spear 0.043 -0.914566572826051 -581.038888888889
## 54 Calamity Staff_of_Homa 0.677 -0.577311333116889 -358.638888888889
## 55 Calamity The_Catch 0.001 -1.69484526950833 -1148.30555555556
## 56 Calamity Engulfing 0.182 -0.807685666234814 -499.972222222222
## 57 Calamity Jade 0.097 -0.517772786065565 -300.281746031746
## 58 Calamity Vortex 0.902 -0.125182096361221 -76.6388888888887
## 59 Calamity Deathmatch 0.047 -1.12293363982969 -709.305555555555
## 60 Calamity Blackcliff 0.141 -1.65792618320408 -1065.63888888889
## 61 Calamity Dragons_Bane 0.027 -2.34240645303696 -1569.63888888889
## 62 Calamity Royal_Spear 0.493 -0.515173625867883 -317.138888888889
## 63 Calamity Starglitter 0.033 -2.17678794114611 -1441.63888888889
## 64 Calamity Scarlet_Sands 0.549 -0.723522529507911 -450.638888888889
## 65 Calamity White_Tassel 0.176 -1.62472171063167 -1042.63888888889
## 66 Calamity Crescent_Pike 0.025 -2.14906275657019 -1420.63888888889
## 67 Windspear Lithic_Spear 0.375 -0.494327818356513 -183.066666666667
## 68 Windspear Staff_of_Homa 0.824 0.120941521697466 39.3333333333335
## 69 Windspear The_Catch 0.001 -1.78113773104065 -750.333333333333
## 70 Windspear Engulfing 0.615 -0.321419893073766 -102
## 71 Windspear Jade 0.46 0.277977774413176 97.6904761904761
## 72 Windspear Vortex 0.165 0.943368999818142 321.333333333333
## 73 Windspear Deathmatch 0.122 -0.949474351916982 -311.333333333333
## 74 Windspear Blackcliff 0.125 -1.8270892441257 -667.666666666667
## 75 Windspear Dragons_Bane 0.068 -2.67761116975157 -1171.66666666667
## 76 Windspear Royal_Spear 0.718 0.250980097915848 80.8333333333335
## 77 Windspear Starglitter 0.116 -2.50377853652322 -1043.66666666667
## 78 Windspear Scarlet_Sands 0.808 -0.161879990617597 -52.6666666666665
## 79 Windspear White_Tassel 0.125 -1.77674380884935 -644.666666666667
## 80 Windspear Crescent_Pike 0.118 -2.47277343017968 -1022.66666666667
## 81 Lithic_Spear Staff_of_Homa 0.679 0.513961966884409 222.4
## 82 Lithic_Spear The_Catch 0.076 -1.21629113821899 -567.266666666666
## 83 Lithic_Spear Engulfing 0.844 0.213609928898917 81.0666666666666
## 84 Lithic_Spear Jade 0.196 0.688940444583134 280.757142857143
## 85 Lithic_Spear Vortex 0.139 1.06435476367779 504.4
## 86 Lithic_Spear Deathmatch 0.696 -0.352619034026566 -128.266666666666
## 87 Lithic_Spear Blackcliff 0.473 -1.03756661103197 -484.6
## 88 Lithic_Spear Dragons_Bane 0.169 -1.69074580044328 -988.6
## 89 Lithic_Spear Royal_Spear 0.669 0.628599463516098 263.9
## 90 Lithic_Spear Starglitter 0.343 -1.56488514871901 -860.6
## 91 Lithic_Spear Scarlet_Sands 1 0.305801581216363 130.4
## 92 Lithic_Spear White_Tassel 0.677 -0.996642330981546 -461.6
## 93 Lithic_Spear Crescent_Pike 0.317 -1.54194425907023 -839.6
## 94 Staff_of_Homa The_Catch 0.254 -1.95002062977218 -789.666666666667
## 95 Staff_of_Homa Engulfing 0.743 -0.719237306152522 -141.333333333333
## 96 Staff_of_Homa Jade 0.872 0.162431173179704 58.3571428571427
## 97 Staff_of_Homa Vortex 0.658 1.05811107026297 282
## 98 Staff_of_Homa Deathmatch 0.259 -1.99599293316619 -350.666666666667
## 99 Staff_of_Homa Blackcliff 1 -1.4142135623731 -707
## 100 Staff_of_Homa Dragons_Bane 1 -1.4142135623731 -1211
## 101 Staff_of_Homa Royal_Spear 1 0.23170140143526 41.5
## 102 Staff_of_Homa Starglitter 1 -1.41421356237309 -1083
## 103 Staff_of_Homa Scarlet_Sands 1 -1.4142135623731 -92
## 104 Staff_of_Homa White_Tassel 1 -1.4142135623731 -684
## 105 Staff_of_Homa Crescent_Pike 1 -1.41421356237309 -1062
## 106 The_Catch Engulfing 0.107 1.66772447707057 648.333333333333
## 107 The_Catch Jade 0.001 1.78657781385455 848.023809523809
## 108 The_Catch Vortex 0.09 1.75501215071629 1071.66666666667
## 109 The_Catch Deathmatch 0.095 1.75254644648806 439
## 110 The_Catch Blackcliff 0.758 0.834974239723362 82.6666666666665
## 111 The_Catch Dragons_Bane 0.229 -1.83930492505842 -421.333333333333
## 112 The_Catch Royal_Spear 0.096 1.73659903195823 831.166666666667
## 113 The_Catch Starglitter 0.254 -1.70483098370937 -293.333333333333
## 114 The_Catch Scarlet_Sands 0.248 1.93663161277329 697.666666666667
## 115 The_Catch White_Tassel 0.74 1.01280410577742 105.666666666667
## 116 The_Catch Crescent_Pike 0.26 -1.66868795320716 -272.333333333333
## 117 Engulfing Jade 0.38 0.564347417276359 199.690476190476
## 118 Engulfing Vortex 0.112 1.33048058921521 423.333333333333
## 119 Engulfing Deathmatch 0.391 -1.14555137775215 -209.333333333333
## 120 Engulfing Blackcliff 0.249 -1.67819688433243 -565.666666666667
## 121 Engulfing Dragons_Bane 0.242 -1.89190626920056 -1069.66666666667
## 122 Engulfing Royal_Spear 0.609 0.809625802064257 182.833333333333
## 123 Engulfing Starglitter 0.278 -1.86366639913658 -941.666666666667
## 124 Engulfing Scarlet_Sands 1 0.266652383259513 49.3333333333335
## 125 Engulfing White_Tassel 0.215 -1.65710754027619 -542.666666666667
## 126 Engulfing Crescent_Pike 0.239 -1.858030294952 -920.666666666667
## 127 Jade Vortex 0.37 0.615483436244735 223.642857142857
## 128 Jade Deathmatch 0.089 -1.09866864982145 -409.023809523809
## 129 Jade Blackcliff 0.144 -1.86782773934873 -765.357142857143
## 130 Jade Dragons_Bane 0.072 -2.61144839844113 -1269.35714285714
## 131 Jade Royal_Spear 0.94 -0.0477759839858694 -16.8571428571427
## 132 Jade Starglitter 0.07 -2.45753672643394 -1141.35714285714
## 133 Jade Scarlet_Sands 0.646 -0.416443884940407 -150.357142857143
## 134 Jade White_Tassel 0.141 -1.8242999162174 -742.357142857143
## 135 Jade Crescent_Pike 0.072 -2.43022379549956 -1120.35714285714
## 136 Vortex Deathmatch 0.105 -1.67636731716519 -632.666666666667
## 137 Vortex Blackcliff 0.357 -1.62467404112471 -989
## 138 Vortex Dragons_Bane 0.344 -1.68238052490271 -1493
## 139 Vortex Royal_Spear 0.679 -0.909232435461974 -240.5
## 140 Vortex Starglitter 0.333 -1.67312080531145 -1365
## 141 Vortex Scarlet_Sands 0.647 -1.23880229427833 -374
## 142 Vortex White_Tassel 0.331 -1.6199915097693 -966
## 143 Vortex Crescent_Pike 0.339 -1.67136127898711 -1344
## 144 Deathmatch Blackcliff 0.239 -1.99611899848673 -356.333333333333
## 145 Deathmatch Dragons_Bane 0.25 -1.99933262282615 -860.333333333333
## 146 Deathmatch Royal_Spear 0.122 1.57517995529201 392.166666666667
## 147 Deathmatch Starglitter 0.254 -1.99907911662366 -732.333333333333
## 148 Deathmatch Scarlet_Sands 0.232 1.99265412571675 258.666666666667
## 149 Deathmatch White_Tassel 0.237 -1.99556678373974 -333.333333333333
## 150 Deathmatch Crescent_Pike 0.259 -1.99902398172755 -711.333333333333
## 151 Blackcliff Dragons_Bane 1 -1.4142135623731 -504
## 152 Blackcliff Royal_Spear 0.328 1.60216674798478 748.5
## 153 Blackcliff Starglitter 1 -1.4142135623731 -376
## 154 Blackcliff Scarlet_Sands 1 1.4142135623731 615
## 155 Blackcliff White_Tassel 1 1.4142135623731 23
## 156 Blackcliff Crescent_Pike 1 -1.41421356237309 -355
## 157 Dragons_Bane Royal_Spear 0.32 1.68211751129935 1252.5
## 158 Dragons_Bane Starglitter 1 1.41421356237309 128
## 159 Dragons_Bane Scarlet_Sands 1 1.41421356237309 1119
## 160 Dragons_Bane White_Tassel 1 1.4142135623731 527
## 161 Dragons_Bane Crescent_Pike 1 1.4142135623731 149
## 162 Royal_Spear Starglitter 0.323 -1.67073404670671 -1124.5
## 163 Royal_Spear Scarlet_Sands 1 -0.689878722298898 -133.5
## 164 Royal_Spear White_Tassel 0.336 -1.59476999546345 -725.5
## 165 Royal_Spear Crescent_Pike 0.344 -1.668506174781 -1103.5
## 166 Starglitter Scarlet_Sands 1 1.4142135623731 991
## 167 Starglitter White_Tassel 1 1.41421356237309 399
## 168 Starglitter Crescent_Pike 1 1.4142135623731 21
## 169 Scarlet_Sands White_Tassel 1 -1.41421356237309 -592
## 170 Scarlet_Sands Crescent_Pike 1 -1.4142135623731 -970
## 171 White_Tassel Crescent_Pike 1 -1.4142135623731 -378
KQM recommends a full Noblesse Oblige set for Shenhe, and therefore we will use it as a reference frame for analyzing their recommendations. It should be noted that Noblesse Oblige provides a 20% atk bonus after casting an elemental burst, but this will not be reflected in the raw data. The following are the results of the post-hoc test:
Full Noblesse vs. atk-atk:
There is strong evidence (p=0.000) to suggest that there is a difference
in the mean atk of Shenhes with these set bonuses. The sample mean
difference in atk is an increase of 659.133 atk. This difference has a
large associated effect size (1.368), which indicates an important
difference in atk. This difference may not be as large in practice, as
the atk provided by the 4-piece Noblesse Oblige set when casting a burst
is equal to 20% of the user’s base atk, which when compared to the
unconditional 36% atk provided by an atk-atk set is still
important.
Full Noblesse vs. Full Gladiator:
There is no evidence (p=0.773) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. phys-atk:
There is no evidence (p=0.179) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. atk:
There is strong evidence (p=0.003) to suggest that there is a difference
in the mean atk of Shenhes with these set bonuses. The sample mean
difference in atk is an increase of 796.056 atk. This difference has a
large associated effect size (1.665), which indicates an important
difference in atk. This is an important place to emphasize that these
conclusions only describe a correlative relationship, because a single
18% atk bonus is certainly not causative of a larger increase in atk
than a 36% atk bonus. It may be that players equipping only a single atk
bonus set had much higher substat investment on their other artifacts,
leading to a higher overall atk. Observational data cannot answer the
question of causation, and unfortunately there are few ways to use an
experimental design in game which also includes a broad range of
players.
Full Noblesse vs. atk-noblesse:
There is no evidence (p=0.198) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. cryo-atk:
There is no evidence (p=0.834) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. Full Blizzard Strayer:
There is no evidence (p=0.720) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. cryo:
There is no evidence (p=0.710) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. atk-EM:
There is no evidence (p=0.213) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. Full Emblem:
There is no evidence (p=0.838) to suggest that there is a difference in
the mean atk of Shenhes with these set bonuses.
Full Noblesse vs. phys-phys: There is no evidence (p=0.195) to suggest that there is a difference in the mean atk of Shenhes with these set bonuses.
set.seed(27)
adi_saidi.RPT(shenhe$set_bonus, shenhe$atk)## treatment_1 treatment_2 p_value effect_size mean_diff
## 1 atk-atk full-gladiator 0.01 -1.63151630566282 -719.744548286605
## 2 atk-atk full-noblesse 0 -1.36774477377984 -659.133437175493
## 3 atk-atk phys-atk 0.022 -3.00455504564809 -1332.41121495327
## 4 atk-atk atk 0.582 0.324036049654145 136.922118380062
## 5 atk-atk atk-noblesse 0.003 -2.3898558346056 -1067.41121495327
## 6 atk-atk cryo-atk 0.002 -1.559559570056 -694.077881619938
## 7 atk-atk full-blizzard 0.002 -1.64987052854645 -748.161214953271
## 8 atk-atk cryo 0.075 -1.96699450343337 -850.411214953271
## 9 atk-atk na 0.015 -3.0971507817742 -1377.41121495327
## 10 atk-atk atk-EM 0.647 -0.36820636561305 -156.411214953271
## 11 atk-atk full-emblem 0.216 -1.28195511748045 -548.411214953271
## 12 atk-atk phys-phys 0.014 -2.78756976386484 -1228.41121495327
## 13 full-gladiator full-noblesse 0.773 0.150432318797699 60.6111111111113
## 14 full-gladiator phys-atk 0.527 -1.26926649377371 -612.666666666667
## 15 full-gladiator atk 0.1 1.49498469000376 856.666666666667
## 16 full-gladiator atk-noblesse 0.6 -0.907785163808444 -347.666666666667
## 17 full-gladiator cryo-atk 0.893 0.0951955438199434 25.666666666667
## 18 full-gladiator full-blizzard 0.947 -0.0550921046384228 -28.4166666666665
## 19 full-gladiator cryo 1 -0.345030855083062 -130.666666666667
## 20 full-gladiator na 0.54 -1.32253630415191 -657.666666666667
## 21 full-gladiator atk-EM 0.223 1.20517651868376 563.333333333333
## 22 full-gladiator full-emblem 1 0.447646717479208 171.333333333333
## 23 full-gladiator phys-phys 0.518 -1.12665344514974 -508.666666666667
## 24 full-noblesse phys-atk 0.179 -1.58465475035136 -673.277777777778
## 25 full-noblesse atk 0.003 1.66479810753931 796.055555555556
## 26 full-noblesse atk-noblesse 0.198 -1.00365273652762 -408.277777777778
## 27 full-noblesse cryo-atk 0.834 -0.0969484486810723 -34.9444444444443
## 28 full-noblesse full-blizzard 0.72 -0.20339719208541 -89.0277777777778
## 29 full-noblesse cryo 0.71 -0.480322992443321 -191.277777777778
## 30 full-noblesse na 0.099 -1.67534405105663 -718.277777777778
## 31 full-noblesse atk-EM 0.213 1.21942042951149 502.722222222222
## 32 full-noblesse full-emblem 0.838 0.279166952949236 110.722222222222
## 33 full-noblesse phys-phys 0.195 -1.36585367195126 -569.277777777778
## 34 phys-atk atk 0.226 1.92781744001265 1469.33333333333
## 35 phys-atk atk-noblesse 0.652 1.4063089149045 265
## 36 phys-atk cryo-atk 0.137 2.18508906922721 638.333333333333
## 37 phys-atk full-blizzard 0.408 0.970202044313578 584.25
## 38 phys-atk cryo 1 1.41421356237309 482
## 39 phys-atk na 1 -1.41421356237309 -45
## 40 phys-atk atk-EM 1 1.4142135623731 1176
## 41 phys-atk full-emblem 1 1.41421356237309 784
## 42 phys-atk phys-phys 1 1.4142135623731 104
## 43 atk atk-noblesse 0.093 -1.75286947364881 -1204.33333333333
## 44 atk cryo-atk 0.017 -1.82021190845927 -831
## 45 atk full-blizzard 0.1 -1.33332337249988 -885.083333333333
## 46 atk cryo 0.269 -1.84982885127084 -987.333333333333
## 47 atk na 0.245 -1.93183011190014 -1514.33333333333
## 48 atk atk-EM 0.532 -1.17159130058758 -293.333333333333
## 49 atk full-emblem 0.277 -1.72090403776465 -685.333333333333
## 50 atk phys-phys 0.233 -1.91710261854856 -1365.33333333333
## 51 atk-noblesse cryo-atk 0.079 1.56953022175938 373.333333333333
## 52 atk-noblesse full-blizzard 0.665 0.617245826917049 319.25
## 53 atk-noblesse cryo 0.672 1.30156534974766 217
## 54 atk-noblesse na 0.641 -1.47563289714275 -310
## 55 atk-noblesse atk-EM 0.328 1.69537061008148 911
## 56 atk-noblesse full-emblem 0.334 1.62595293534954 519
## 57 atk-noblesse phys-phys 0.675 -1.11793875028486 -161
## 58 cryo-atk full-blizzard 0.85 -0.1397835546614 -54.0833333333335
## 59 cryo-atk cryo 0.733 -0.893372229297533 -156.333333333333
## 60 cryo-atk na 0.16 -2.2307196759493 -683.333333333333
## 61 cryo-atk atk-EM 0.149 2.0553870712599 537.666666666667
## 62 cryo-atk full-emblem 0.744 0.83874334245226 145.666666666667
## 63 cryo-atk phys-phys 0.149 -2.05030635394896 -534.333333333333
## 64 full-blizzard cryo 0.807 -0.18779362727538 -102.25
## 65 full-blizzard na 0.401 -1.02954052896973 -629.25
## 66 full-blizzard atk-EM 0.804 0.98027518707541 591.75
## 67 full-blizzard full-emblem 0.801 0.363272978112371 199.75
## 68 full-blizzard phys-phys 0.589 -0.823021610394181 -480.25
## 69 cryo na 1 -1.4142135623731 -527
## 70 cryo atk-EM 1 1.4142135623731 694
## 71 cryo full-emblem 1 1.4142135623731 302
## 72 cryo phys-phys 1 -1.4142135623731 -378
## 73 na atk-EM 1 1.41421356237309 1221
## 74 na full-emblem 1 1.4142135623731 829
## 75 na phys-phys 1 1.4142135623731 149
## 76 atk-EM full-emblem 1 -1.41421356237309 -392
## 77 atk-EM phys-phys 1 -1.4142135623731 -1072
## 78 full-emblem phys-phys 1 -1.41421356237309 -680
The three most common polearm choices for the sample of fully built Shenhes on display were, in order, Favonius Lance, Calamity Queller, and Skyward Spine, which also arguably fits the ranking of best polearms for Shenhe overall.
The most common set bonus by far was an atk-atk setup, which is generally not recommended by KQM, but proved to contain the highest atk out of all the set bonuses. The second most common set bonus was the four piece Noblesse Oblige, which is KQM’s recommendation for Shenhe.
The data provided evidence for a difference in mean ER and atk by various polearm types, whereas the data only provided evidence for a difference in mean atk by one major set bonus type, using the Favonius Lance and Noblesse Oblige as reference frames in each case.
The significant differences within the cleaned dataset are as follows:
atk:
1) Favonius Lance vs. Wavebreaker's Fin (p = 0.001, ES = 1.009)
2) Favonius Lance vs. Skyward Spine (p = 0.000, ES = 1.303)
3) Favonius Lance vs. Calamity Queller (p = 0.000, ES = 1.163)
4) Favonius Lance vs. Missive Windspear (p = 0.005, 0.898)
5) Favonius Lance vs. Primordial Jade Winged Spear (p = 0.002, ES = 1.056)
6) Favonius Lance vs. Vortex Vanquisher (p = 0.017, ES = 1.652)
7) Full Noblesse vs. atk-atk (p = 0.000, ES = 1.368)
8) Full Noblesse vs. atk (p = 0.003, ES = 1.665)
ER:
1) Favonius Lance vs. Wavebreaker's Fin (p = 0.025, ES = -0.718)
2) Favonius Lance vs. Skyward Spine (p = 0.044, ES = 0.630)
3) Favonius Lance vs. Calamity Queller (p = 0.009, ES = 0.610)
4) Favonius Lance vs. Missive Windspear (p = 0.000, ES = -1.013)
5) Favonius Lance vs. Lithic Spear (p = 0.011, ES = -1.230)
6) Favonius Lance vs. Engulfing Lightning (p = 0.008, ES = 1.683)
7) Favonius Lance vs. Primordial Jade Winged Spear (p = 0.009, ES = -0.882)
8) Favonius Lance vs. Vortex Vanquisher (p = 0.046, ES = -1.573)
9) Favonius Lance vs. Deathmatch (p = 0.000, ES = -2.028)
The confidence intervals are as follows:
1) [full noblesse atk]: 2544.744 2949.812
2) [full noblesse ER]: 149.3676 180.6213
3) [Favonius Lance atk]: 2685.836 2990.016
4) [Favonius Lance ER]: 154.7749 173.0917
5) [atk-atk set ER]: 145.8108 156.9070
6) [overall atk]: 3129.922 3301.716
7) [overall ER]: 146.9655 156.5325
8) [overall ER_req_met]: 0.178143 0.318501
The majority of fully built Shenhes on display (between 0.178 and 0.319) do not meet KQM’s energy requirements. This could possibly indicates a severe misunderstanding of Shenhe’s role as a character by the community at large, or could demonstrate a tendency of players to maximize the most seemingly important stats, while neglecting smooth rotations and consistent damage.
With respect to gear in the player’s control, Calamity queller, Skyward Spine, and Vortex Vanquisher were correlated with the largest atk increase from Favonius Lance. An atk-atk set bonus was correlated with a similar increase in atk from the full Noblesse Oblige set. Additionally, Engulfing Lightning, Skyward Spine, and Calamity Queller were correlated with increases in ER. This information can be used to construct a final ranking of gear within the dataset.
Because the upper bound of the confidence interval for the ER of Shenhes equipping the full Noblesse Set includes the lower limit of Shenhe’s ER requirement, it generally places higher in the ranking of gear, despite atk-atk having an overall higher atk stat within the dataset.
As previously discussed, the Calamity Queller’s large extra attack with reference to the Favonius Lance, as well as it having a higher population mean ER stat as deduced from the hypothesis testing results in it placing at the top of the list. Engulfing Lightning is slightly worse than the Favonius Lance overall, because the Favonius Lance provides energy to the whole team from its passive, and there was no evidence from the data to suggest that there is any difference in mean atk between the two. The skyward spine ranks higher than the Engulfing lightning, because it manages to have a higher mean atk while also having a decent bump in ER from the Favonius Lance, and ranks higher than Favonius as well, because the extra atk is comparable to that of Calamity Queller’s. The final ordering of gear is as follows:
For Artifacts:
1) Full Noblesse
2) atk-atk
3) All Others
For Polearms:
1) Calamity Queller
2) Skyward Spine
3) Favonius Lance
4) Engulfing Lightning
Where these rankings apply for Shenhes intended to be build as supports, and not for their own personal damage. Ultimately, these rankings have no standing in practice, because they only describe Shenhes on display, and do not provide any basis for gear recommendations.
Co-op mode. Genshin Impact Wiki. (n.d.). Retrieved December 14, 2022, from https://genshin-impact.fandom.com/wiki/Co-Op_Mode
Kazuha EM vs. ER | The GUOBA Project. (n.d.). Guoba.keqingmains.com; Yami#8591. Retrieved December 14, 2022, from https://guoba.keqingmains.com/experiments/kazuha-em-er
Petrov, S. (2021, April 26). Permutation test in R. Medium. Retrieved December 15, 2022, from https://towardsdatascience.com/permutation-test-in-r-77d551a9f891
Shenhe | KQM TCL. (n.d.). Library.keqingmains.com; Yami#8591. Retrieved December 14, 2022, from https://library.keqingmains.com/characters/cryo/shenhe
XenoVX#6150, Zamo#6399, KB#1111, ApolloIV#8177, & Sitri#9504. (2022, February 10). Shenhe Guide: The Divine Damsel of Devastation. KQM; Yami#8591. https://keqingmains.com/shenhe/
Zakharov. (n.d.). Energy Recharge Calculator. Google Docs; Yami#8591. Retrieved December 14, 2022, from https://docs.google.com/spreadsheets/d/1-vkmgp5n0bI9pvhUg110Aza3Emb2puLWdeoCgrxDlu4/edit#gid=651762937
Thanks to Raizel Davis and Professor Rachel Saidi for helping with the code for the randomization post-hoc test, and for the motivation to apply my intuition for coding to data science. This project has revealed to me how much I love both coding and data science, which were both subjects I previously believed I despised. Now, I am excited to do a project like this all over again, and that wouldn’t be true without either of their support through this process.
Comments on the Analysis
If I could redo this process of data collection and analysis, there would be many things I would change. It goes without saying that if an experimental design were possible for this type of study, then I would much prefer it in order to create a more unequivocal ranking of gear, and also provide concrete recommendations to users. This analysis was helpful in observing patterns from users, but ultimately did not extract any novel information on causation.
Firstly, I wish I had included not only the level, but the ascension rank of the characters and the polearms. This would have provided more detailed information on the stats of the characters, and could have helped to fine tune the exclusion criteria further. This may have also created an opening to perform multiple linear regression for the ER stat, and logistic regression for the ER requirement variable.
Secondly, I wish I had included all possible information from the user’s profile, such as their progression in the Spiral Abyss, because I then could have tried to use logistic regression to create a model predicting whether or not they had cleared the abyss.
Thirdly, I wish I had included a variable which provided a sample damage output given the stats the Shenhe had. This could have been performed using the damage calculator tools available online, and I could have used a formula in an Excel or Google spreadsheet to autofill these values for me. This could have been, for example, a team rotation damage on an Ayaka / Kazuha / Shenhe / Kokomi composition. This quantitative variable could have been used as a response variable to a treatment such as the “polearm_name” or “set_bonus” variables, and I could have thereby conducted direct analysis on the Damage outputs being changed by Shenhe’s stats.
Fourthly, as all researchers hope, I wish I could have obtained a larger sample, especially for rare cases such as Engulfing Lightning, so that I could be more sure of the true mean difference and effect. This would have also allowed me to apply the central limit theorem, and use a t-test or other parametric tests, broadening the tools at my disposal.
I am overall very happy with this project, and I believe I have deepened my understanding of using R for data analysis profoundly, but the sources of error and deficiencies of the data remain, such as the voluntary bias in the sampling, the lack of controls, and the missing data about ascension ranks. I feel that my questions about damage output and correlation of all variables remain unanswered, but perhaps in a future study of Shenhe, or a different character entirely, I could use the content from multiple linear regression and the F- distribution to answer my quantitative-quantitative relationship questions.