var_disprop: Wariancja (wazona wariancja odsetkow).

Description Usage Arguments Details Value Examples

Description

Wylicza "ważoną wariancję odsetków" - wariancję zaadaptowaną do roli miary dysproporcjonalności.

Usage

1
var_disprop(x, y, unorm = NULL, komponent = NULL)

Arguments

x

wektor ważony

y

wektor ważący

unorm

stała normująca lub NULL, jeśli współczynnik ma nie być normowany - p. szczegóły

komponent

opcjonalnie lista wektorów definiujących podział na komponenty; kolejne elementy listy definiują kolejne poziomy podziału (przy czym podział na każdym kolejnym poziomie będzie traktowany jako zagnieżdżony w poziomach wyższych)

Details

Uwaga, porównywane wektory nie mogą zawierać braków danych!

W przypadku normowania wartości wskaźnika istnieją dwa typowe wybory wartości stałej normującej:

Pewien problem ze wskaźnikiem polega na tym, że jego wartość bardzo szybko spada nawet przy niewielkich odstępstwach od maksymalnej możliwej dysproporcjonalności, co jest niezbyt intuicyjne (szczególnie wyraźnie widać to w przypadku drugiego z ww. typów unormowania) - p. przykłady.

Value

funkcja zwraca wartość liczbową

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
vTG=c(10,40,50)
sTG=c(15,25,60)
var_disprop(sTG, vTG)

# przykład dekomponowalności
dane = data.frame(
  gr = rep(1:3, each=3),
  v  = c(150, 90, 100, 120, 80, 70, 200, 20, 30),
  s  = c(  3,  2,   2,   5,  1,  1,   3,  0,  0)
)
wewnGrup = c(
  gr1 = with(subset(dane, gr==1), var_disprop(s, v)),
  gr2 = with(subset(dane, gr==2), var_disprop(s, v)),
  gr3 = with(subset(dane, gr==3), var_disprop(s, v))
)
sumy = aggregate(dane[, -1], list(gr=dane$gr), sum)
wewnGrup = weighted.mean(wewnGrup, sumy$v)
miedzyGrup = with(sumy, var_disprop(s, v))
miedzyGrup + wewnGrup
( ogolem = with(dane, var_disprop(s, v)) )
all.equal(miedzyGrup + wewnGrup, ogolem)

# przykład własności unormowań
n = c(10, 100, 1000)
zestawienie = matrix(NA, nrow=6, ncol=length(n),
  dimnames=list(c("Gini n1=1", "Gini n1=2", "var  n1=1, unorm=n",
                  "var  n1=2, unorm=n", "var  n1=1, unorm=1", "var  n1=2, unorm=1"),
                paste0("n=", n)))
for(i in 1:length(n)) {
  zestawienie[, i] = c(
    gini_disprop(c(1,0), c(1, n[i]-1)),
    gini_disprop(c(1,0), c(2, n[i]-2)),
    var_disprop (c(1,0), c(1, n[i]-1), n[i]),
    var_disprop (c(1,0), c(2, n[i]-2), n[i]),
    var_disprop (c(1,0), c(1, n[i]-1), 1),
    var_disprop (c(1,0), c(2, n[i]-2), 1)
  )
}
zestawienie
# n1=1 oznacza, że jeden obiekt posiada wszystko (a n-1 obiektów nie posiada nic)
# n1=2 oznacza, że dwa obiekty posiadają wszystko (a n-2 obiektów nie posiada nic)

# dekompozycja wskaźnika wyliczonego z unorm=1
dane = data.frame(
  gr = rep(1:3, each=3),
  v  = c(150, 90, 100, 120, 80, 70, 200, 20, 30),
  s  = c(  3,  2,   2,   5,  1,  1,   3,  0,  0)
)
wewnGrup = c(
  gr1 = with(subset(dane, gr==1), var_disprop(s, v, unorm=1)),
  gr2 = with(subset(dane, gr==2), var_disprop(s, v, unorm=1)),
  gr3 = with(subset(dane, gr==3), var_disprop(s, v, unorm=1))
)
sumy = aggregate(dane[, -1], list(gr=dane$gr), sum)
wewnGrup = weighted.mean(wewnGrup * with(sumy, {(s / v)^2 / (sum(s) / sum(v))^2}),
                         sumy$v)
miedzyGrup = with(sumy, var_disprop(s, v, unorm=1))
miedzyGrup + wewnGrup
( ogolem = with(dane, var_disprop(s, v, unorm=1)) )
all.equal(miedzyGrup + wewnGrup, ogolem)

tzoltak/disprop documentation built on May 3, 2019, 2:07 p.m.