Skip to main content

A library for cause-effect relationships.

Project description

http://ci.appveyor.com/api/projects/status/m0f9fw5b670whkw8?svg=true

Install it

You can install cause_effect via:

$ pip install cause_effect

Alternatively, you can install from the code repository directly:

$ pip install hg+http://bitbucket.org/hyllos/cause_effect

Core Functions

pareto(values)

Is a pareto distribution present for a list of numbers (ratio <= 1)?

mccauses(values)

Which causes have the highest concentration (rank * value)?

mceffects(values)

Which effects have the highest concentration?

separator(values)`

From which value (including) does the highest concentration begin?

causes(values, effects=0.8)

Determine causes for specified share of effects.

effects(values, causes=0.2)

Determine effects for specified share of causes.

Secondary Functions

ratio(values)

entropy divided by control_limit.

entropy(values)

Calculate entropy for values.

control_limit(count)

Calculate control entropy for count number of elements (length of values).

Tertiary Functions

make_causes(count)

Return list of causes that is cumulative percent of count number of elements.

make_effects(values)

Return list of effects that is cumulative percent of values.

make_concentration(values)

Return list of concentration for list of values that is rank * value.

sort_list(values)

Return sorted list of numbers.

Parameters

values is a list of numbers. effects and causes must be a number between 0 and 1 (including). count is the length of the list of values.

Use it

The function pareto tells you whether a pareto distribution is present for a list of numbers:

from pareto import pareto, mccauses, mceffects
pareto([789, 621, 109, 65, 45, 30, 27, 15, 12, 9])
True

Here, we have a pareto distribution present. That is a minority causes a majority of effects.

But which minority causes which majority?

mccauses([789, 621, 109, 65, 45, 30, 27, 15, 12, 9])
0.2
mceffects([789, 621, 109, 65, 45, 30, 27, 15, 12, 9])
0.818815331010453

20% of causes effect 82% of results.

But which values are that 20%?

separator([789, 621, 109, 65, 45, 30, 27, 15, 12, 9])
621

All values greater or equal than 621 are those 20% causing 82% of results.

That’s it.

Dig Deeper

How many causes are required for only 90% of effects?

from pareto import causes, effects
causes([789, 621, 109, 65, 45, 30, 27, 15, 12, 9], 0.9)
0.4

40%.

How many effects are behind only 10% of causes?

effects([789, 621, 109, 65, 45, 30, 27, 15, 12, 9], 0.1)
0.458

45.8%.

How does it work?

pareto calculates the entropy for a list of effects:

from pareto import entropy, control_limit, ratio
entropy([789, 621, 109, 65, 45, 30, 27, 15, 12, 9])
1.9593816735406657

It calculates the entropy for a control group of ten elements. That is the length of our list.

control_limit(10)
2.7709505944546686

It then checks entropy is less or equal than control_limit.

This can be simplified to:

values = [789, 621, 109, 65, 45, 30, 27, 15, 12, 9]
entropy(values) / control_limit(len(values)) <= 1

The left side of the comparison is done by ratio. So, if you want to find out how nearby or far off you are from a pareto distribution, do:

ratio([109, 65, 45, 30, 27, 15, 12, 9])
1.051

If we remove the first two effects, the control_limit will be exceeded by the values. So, we learn here that the pareto distribution disappears with the first two effects.

mccauses and mceffects return the respective share of the causes and effects where concentration (rank * value) is highest.

History

0.2.0 (2016-10-21)

  • Add function separator().

  • Streamline tests.

0.1.0 (2016-10-20)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cause_effect-0.2.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cause_effect-0.2.0-py2.py3-none-any.whl (5.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file cause_effect-0.2.0.tar.gz.

File metadata

  • Download URL: cause_effect-0.2.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cause_effect-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6173c9e76c273f1b35694f0deaa533f4aac0ec4faae3e2b943129d75604889a2
MD5 4a21e8330c76daa02a558471c14a2b23
BLAKE2b-256 125386ded655a10ba8dfe429132ed2b588e760a7d784fdefc226790d4d7c1bec

See more details on using hashes here.

File details

Details for the file cause_effect-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for cause_effect-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a05072cb38183c06456a53da078c3064427e63e5920bdc71356dde248236d657
MD5 11d9c96c88a1a5d9af75994616114b6c
BLAKE2b-256 cfefbfbb7bb76b2d00bc0c4f3f0703003cfd49f79ff3e3d7b1e8b223c3117319

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page