[SLD] Pareto
Contents
“Increase in the wealth per capita fosters democracy; but the latter, at least according to what we have been able to observe up to now, entails great destruction of wealth and even eventually dries up the sources of it. Hence it is its own grave-digger, it destroys what gave it birth.”
“For many events, roughly 80% of the effects come from 20% of the causes”
Čeprav bi moral biti Pareto bolj poznan po svojih knjigah o ekonomiji (npr. The Rise and Fall of Elites), pa ga večina pozna po pravilu 80 - 20, ki ga je po Paretu poimenoval J. M. Juran.
Zanimivosti:
Revolucije se ne zgodijo od spodaj navzgor ampak ob menjavi elit. Običajni ljudje zgolj podpirajo ene ali druge.
Socialistične voditelje je poimenoval “aristokracija razbojnikov” in Marxa ni maral.
Demokracija je iluzija, vladajoči razred se vedno pojavi in se obogati. Ključno vprašanje je, kako aktivno vladajoči vladajo.
Paretov optimum: sistem se nahaja v ekonomskem maksimumu, ko nihče ne more izboljšati svojega položaja, brez da ga komu poslabša.
Paretov diagram: To je histogram, ki je urejen glede na frekvenco pojavov, ki prikazujejo, koliko rezultatov je povzročil posamezni prepoznani vzrok. Uporablja se med drugim v procesih zagotavljanja kakovosti.
R
V R ga najlažje narišeš s paketom qcc:
library(qcc)
napake <- c( 73, 25, 12, 14, 8)
names(napake) <- c("A", "B", "C", "D", "E")
pareto.chart(napake,
ylab = "Frekvenca napak",
ylab2 = "Komulativa v %",
main="Vzorec pareto diagrama")
##
## Pareto chart analysis for napake
## Frequency Cum.Freq. Percentage Cum.Percent.
## A 73.000000 73.000000 55.303030 55.303030
## B 25.000000 98.000000 18.939394 74.242424
## D 14.000000 112.000000 10.606061 84.848485
## C 12.000000 124.000000 9.090909 93.939394
## E 8.000000 132.000000 6.060606 100.000000
Več o paketu qcc:
Če primerjam podoben vzorec s običajnim ggplot2 načinom, je qcc mnogo enostavnejši, samo oblikovanje po meri, pa je možno v obeh primerih.
KLIKNI ZA 2. PRIMER
library(knitr)
library(ggplot2)
imena <- c("A", "B", "C", "D", "E")
napake <- c( 73, 25, 12, 14, 8)
df <- data.frame(ime = imena, napake = napake, stringsAsFactors = FALSE)
#razporedim padajoče brez tidyversa
df <- df[order(df$napake, decreasing = TRUE), ]
#kategorične spremenljivke v faktorje in levelse določim enako razporejene,
#drugače ggplot razporedi sam razporedi po abecedi
df$ime <- factor(df$ime,
levels = df$ime[order(df$napake, decreasing = TRUE)])
#komulativa
df$komulativa <- cumsum(df$napake)
knitr::kable(df) #samo prikaz df v tabeli
ime | napake | komulativa | |
---|---|---|---|
1 | A | 73 | 73 |
2 | B | 25 | 98 |
4 | D | 14 | 112 |
3 | C | 12 | 124 |
5 | E | 8 | 132 |
ggplot(df, aes(x= df$ime, y=df$napake)) +
geom_bar(fill = "#EE7600", stat="identity") +
geom_point(aes(x= df$ime, y=df$komulativa), color = "#1874CD", pch=16, size=2) +
geom_path(aes(x= df$ime, y=df$komulativa, group=1), color = "#1874CD", lty=2, size=0.9) +
theme(axis.text.x = element_text(angle=90, vjust=0.6)) +
labs(title = "Pareto diagram", subtitle = "vzorec", x = "vzorci", y ="napake")
Python
V Pythonu je zadeva podobna. Obstajajo paketi za izdelavo in obstaja “ročni” načih. V nadaljevanje izdelano z matplotlib brez kakšnih “import pareto”.
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter
imena = ["A", "B", "C", "D", "E"]
napake = [73, 25, 12, 14, 8]
df = pd.DataFrame({'napake': napake})
df.index = imena
df = df.sort_values(by="napake", ascending=False)
df["cumpercentage"] = df["napake"].cumsum()/df["napake"].sum()*100
fig, ax = plt.subplots()
ax.bar(df.index, df["napake"], color="C0")
ax2 = ax.twinx()
ax2.plot(df.index, df["cumpercentage"], color="C1", marker="D", ms=7)
ax2.yaxis.set_major_formatter(PercentFormatter())
ax.tick_params(axis="y", colors="C0")
ax2.tick_params(axis="y", colors="C1")
plt.show()
Excel
Da ne pozabim na excel, kjer je vstavljanje Pareto diagrama v Excel2016 lepo integrirano in enostavno. Makro spodaj je samo za reproduktivni prikaz, enostavneje je preko menija.
'Podatki
Range("A1").Value = "ime"
Range("A2").Value = "A"
Range("A3").Value = "B"
Range("A4").Value = "C"
Range("A5").Value = "D"
Range("A6").Value = "E"
Range("B1").Value = "napaka"
Range("B2").Value = "73"
Range("B3").Value = "25"
Range("B4").Value = "12"
Range("B5").Value = "14"
Range("B6").Value = "8"
'Tabela iz podatkov
Set tabela = ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$B$6"), , xlYes)
tabela.Range.Select
'Pareto diagram
Set graf = ActiveSheet.Shapes.AddChart2(366, xlPareto)
graf.Chart.ChartTitle.Text = "Pareto"
With graf
.Top = Range("B8").Top
.Left = Range("B8").Left
End With
Ukaz za vstavljanje najdeš v meniju “Vstavi” med grafikoni.
Author SlanaD
LastMod 2019-04-14