Does a power-law distribution of performance, as opposed to a normal distribution, support the concept of strength-based development?
I just came across the notion that power-law distribution of performance, as opposed to normal distribution, supports the concept of strength-based development. The reasoning was that developing specific strengths can lead to greater success than trying to raise all skills to at least average level.
This was quite surprising to me as my impression was that it was just the opposite. Given the multiplicative nature of power-law distribution, one should - in addition to developing one’s specific strengths - try to avoid having any of the contributing factors at zero or near-zero level, as anything multiplied by zero is still zero. Instead, a normal distribution with its additive nature would support the idea that one can compensate for one’s weaknesses by excessively developing one’s specific strengths.
To validate my impression, I ran a quick and dirty sim of where a person would rank with the same skill profile combining some excessive highs and lows with the middle grounds in a normal and power-law distribution of performance, respectively.
import pandas as pd
import numpy as np
from scipy.stats import percentileofscore
# creating a dataframe with 7 random variables following a normal distribution
0)
np.random.seed(= pd.DataFrame(np.random.normal(0, 1, (10000, 7)), columns=[f'var{i+1}' for i in range(7)])
data
# transforming these variables to the percentile scale
for col in data.columns:
= data[col].rank(pct=True)
data[col]
# creating two new columns: 'Performance with normal distribution' and 'Performance with power-law distribution'
'Performance with normal distribution'] = data.sum(axis=1)
data['Performance with power-law distribution'] = data.prod(axis=1)
data[
# creating a skill profile combining some excessive highs and lows with the middle grounds
= [1, 0.95, 0.6, 0.4, 0.5, 0.05, 0.025]
profile = sum(profile)
profile_normal = np.round(percentileofscore(data['Performance with normal distribution'], profile_normal), 1)
profile_normal_pct = np.prod(profile)
profile_powerlaw = np.round(percentileofscore(data['Performance with power-law distribution'], profile_powerlaw), 1) profile_powerlaw_pct
As you can see in the charts attached, the sim seems to support the notion that excessive strengths in the presence of excessive weaknesses help much more under the assumption of normally distributed performance.
from plotnine import *
# plotting the normal performance distribution
= (
plot +
ggplot(data) ='Performance with normal distribution') +
aes(x= 'grey', color = "white", alpha = 0.7) +
geom_density(fill = profile_normal, linetype = "dashed") +
geom_vline(xintercept
geom_text(=f"A skill profile combining some excessive highs\nand lows with the middle grounds\n(corresponding to {profile_normal_pct} percentile)",
label=profile_normal + 0.13,
x= 0.45,
y = 'left',
ha = 13
size +
)
labs(="Performance with normal distribution",
title= 'Performance',
x = 'Density'
y +
) +
theme_bw()
theme(= element_text(size=20, margin={'b': 12}, ha='left'),
plot_title = element_text(size=15, margin={'t': 15}),
axis_title_x = element_text(size=15, margin={'r': 15}),
axis_title_y = element_text(size=10),
axis_text_x = element_text(size=10),
axis_text_y = element_blank(),
panel_grid_major = element_blank(),
panel_grid_minor =(13, 6)
figure_size
)
)
print(plot)
# plotting the power-law performance distribution
= (
plot +
ggplot(data) ='Performance with power-law distribution') +
aes(x= 'grey', color = "white", alpha = 0.7) +
geom_density(fill = profile_powerlaw, linetype = "dashed") +
geom_vline(xintercept
geom_text(=f"A skill profile combining some excessive highs and lows with the middle grounds\n(corresponding to {profile_powerlaw_pct} percentile)",
label=profile_powerlaw + 0.05,
x= 50,
y = 'left',
ha = 13
size +
)
labs(="Performance with power-law distribution",
title= 'Performance',
x = 'Density'
y +
) +
theme_bw()
theme(= element_text(size=20, margin={'b': 12}, ha='left'),
plot_title = element_text(size=15, margin={'t': 15}),
axis_title_x = element_text(size=15, margin={'r': 15}),
axis_title_y = element_text(size=10),
axis_text_x = element_text(size=10),
axis_text_y = element_blank(),
panel_grid_major = element_blank(),
panel_grid_minor =(13, 6),
figure_size
)
)
print(plot)
Given these results, one should feel motivated to identify among the mix of factors affecting one’s performance those with multiplicative effect and try to bring them at least to the average level. The question is how one can easily identify which these are. Any tips?
For attribution, please cite this work as
Stehlík (2024, Jan. 2). Ludek's Blog About People Analytics: Strength-based development and power-law vs. normal distribution of performance. Retrieved from https://blog-about-people-analytics.netlify.app/posts/2024-01-02-strength-based-development-and-distributions/
BibTeX citation
@misc{stehlík2024strength-based, author = {Stehlík, Luděk}, title = {Ludek's Blog About People Analytics: Strength-based development and power-law vs. normal distribution of performance}, url = {https://blog-about-people-analytics.netlify.app/posts/2024-01-02-strength-based-development-and-distributions/}, year = {2024} }