Lýsandi gildi

Samanteknar upplýsingar

psych::describe(df) # Gefur öll helstu gildi fyrir allar breytur

psych::describe(df)
              vars   n     mean       sd   median  trimmed      mad     min
verð             1 500 58623.11 13006.74 58000.00 58204.60 12602.10 23900.0
tegund*          2 500     2.39     1.37     3.00     2.37     1.48     1.0
sveitarfélag*    3 500     3.39     1.59     3.50     3.48     2.22     1.0
stærð            4 500   200.13    56.52   195.65   198.38    47.29    56.6
herbergi         5 500     4.09     1.40     4.00     4.04     1.48     0.0
aldur            6 500    35.27    20.10    34.00    33.89    19.27     1.0
                  max   range  skew kurtosis     se
verð          96500.0 72600.0  0.26     0.09 581.68
tegund*           4.0     3.0  0.09    -1.83   0.06
sveitarfélag*     5.0     4.0 -0.30    -1.51   0.07
stærð           439.9   383.3  0.44     1.21   2.53
herbergi         10.0    10.0  0.57     1.03   0.06
aldur           117.0   116.0  0.85     1.47   0.90

summary(df) # Gefur svipaðar upplýsingar og describe, taktu þó eftir að undir flokkabreytunni fæst talning fyrir hvert gildi (n)

summary(df)
      verð                tegund           sveitarfélag     stærð      
 Min.   :23900   Einbýlishús :233   Garðabær     : 94   Min.   : 56.6  
 1st Qu.:49900   Fjölbýlishús: 14   Hafnarfjörður: 80   1st Qu.:167.3  
 Median :58000   Parhús      : 77   Kópavogur    : 76   Median :195.7  
 Mean   :58623   Raðhús      :176   Mosfellsbær  : 38   Mean   :200.1  
 3rd Qu.:66550                      Reykjavík    :212   3rd Qu.:232.3  
 Max.   :96500                                          Max.   :439.9  
    herbergi          aldur       
 Min.   : 0.000   Min.   :  1.00  
 1st Qu.: 3.000   1st Qu.: 21.00  
 Median : 4.000   Median : 34.00  
 Mean   : 4.094   Mean   : 35.27  
 3rd Qu.: 5.000   3rd Qu.: 46.00  
 Max.   :10.000   Max.   :117.00  

str(df) er gagnleg til að fá upplýsingar um strúktúr gagna. Skipunin gefur okkur upplýsingar um þær breytur sem eru til staðar, hvernig þær eru skilgreindar (samfelldar, flokka, o.s.frv.) ásamt nokkrum dæmum um þau gildi sem breytan tekur.

str(df)
'data.frame':   500 obs. of  6 variables:
 $ verð        : int  49000 67600 55000 94187 50500 42000 64000 94550 68000 60000 ...
 $ tegund      : Factor w/ 4 levels "Einbýlishús",..: 1 4 3 1 1 4 1 1 1 1 ...
 $ sveitarfélag: Factor w/ 5 levels "Garðabær","Hafnarfjörður",..: 1 2 5 5 3 5 2 5 2 1 ...
 $ stærð       : num  189 238 180 244 137 ...
 $ herbergi    : int  4 5 5 7 4 3 5 5 4 6 ...
 $ aldur       : int  44 9 58 48 62 30 34 37 17 54 ...

length(df) # Fyrir (df) fengist fjöldi breyta, fyrir (df$breyta) fengist fjöldi raða (n)

length(df)
[1] 6

Tegund stika

X(hlutur)

X:

mean() gefur meðaltal

median() gefur miðgildi

sd() gefur staðalfrávik

range() gefur lægsta og hæsta gildi

dim() gefur dimensions fyrir gagnasafn, fyrri tala gefur fjölda í úrtaki, seinni tala gefur fjölda breyta

hlutur:

df þá fæst stikinn fyrir allar breytur gagnasafnsins

df$breyta þá fæst stikinn fyrir þá tilteknu breytu

Gildi einnar breytu út frá gildum annarrar.

tapply() skipunin er gagnleg til að fá tiltekna mælingu á einni breytu skipt eftir gildum annarrar.

Hér er ég að biðja um mean fyrir breyta1 eftir gildum breyta2.

tapply(df$breyta1, df$breyta2, mean)
  • mean gefur meðaltal
  • sd gefur staðalfrávik
  • median gefur miðgildi
  • range gefur lægsta og hæsta gildi

Dæmi: Hér bið ég um að fá meðalverð fyrir hvert sveitarfélag.

tapply(df$verð, df$sveitarfélag, mean)
     Garðabær Hafnarfjörður     Kópavogur   Mosfellsbær     Reykjavík 
     60687.77      54935.94      60412.50      53436.84      59387.17 

Fjöldi

sum() skipunina má nota á marga vegu til að fá ólíkar upplýsingar. Hér að neðan eru nokkur dæmi:

Hversu margar eignir eru í sveitarfélaginu “Garðabær”

sum(df$sveitarfélag == "Garðabær")
[1] 94

Hversu margar eignir eru 100 fermetrar?

sum(df$stærð == 100)
[1] 0

Hversu margar eignir eru undir 100fm?

sum(df$stærð < 100)
[1] 15

Hversu margar eignir eru 100 fermetrar eða stærri?

sum(df$stærð >= 100)
[1] 485

Skipunin table() getur einnig verið gagnleg þegar unnið er með flokkabreytur.

table(df$flokkabreyta)
  • Hér fæ ég einfalda talningu á fjölda innan hvers hóps sem flokkabreytan tekur til.

Dæmi: bið um fjölda eigna í hverju sveitarfélagi

table(df$sveitarfélag)

     Garðabær Hafnarfjörður     Kópavogur   Mosfellsbær     Reykjavík 
           94            80            76            38           212 
table(df$flokkabreyta1, df$flokkabreyta2)
  • Hér fengist krosstafla sem gæfi fjölda byggt á báðum flokkabreytum.
table(df$sveitarfélag, df$tegund)
               
                Einbýlishús Fjölbýlishús Parhús Raðhús
  Garðabær               46           14      7     27
  Hafnarfjörður          49            0     15     16
  Kópavogur              36            0     21     19
  Mosfellsbær            15            0      8     15
  Reykjavík              87            0     26     99

Hlutföll

Hlutföll heildar

Skipunin prop.table() er gagnleg þegar við viljum hlutföll á flokkabreytum í stað einfaldrar talningar.

prop.table(table(df$flokkabreyta1))
  • Hér fást hlutföll hvers hóps sem flokkabreytan tekur til.

Dæmi: Bið um hlutfallslega skiptingu eigna eftir sveitarfélögum

prop.table(table(df$sveitarfélag))

     Garðabær Hafnarfjörður     Kópavogur   Mosfellsbær     Reykjavík 
        0.188         0.160         0.152         0.076         0.424 

Hlutföll tveggja breyta

prop.table(table(df$flokkabreyta1, df$flokkabreyta2))
  • Hér fæst hlutfall heildar sem flokkast undir báðar breytur.
prop.table(table(df$sveitarfélag, df$tegund))
               
                Einbýlishús Fjölbýlishús Parhús Raðhús
  Garðabær            0.092        0.028  0.014  0.054
  Hafnarfjörður       0.098        0.000  0.030  0.032
  Kópavogur           0.072        0.000  0.042  0.038
  Mosfellsbær         0.030        0.000  0.016  0.030
  Reykjavík           0.174        0.000  0.052  0.198
  • Hér sjáum við að 17,4% eigna eru bæði einbýlishús og staðsett í Reykjavík.

Hlutföll milli breyta

prop.table(table(df$flokkabreyta1, df$flokkabreyta2), 1)
  • Hér fæst hlutfallsleg skipting á flokkabreytu 2 út frá flokkabreytu 1.
prop.table(table(df$sveitarfélag, df$tegund), 1)
               
                Einbýlishús Fjölbýlishús     Parhús     Raðhús
  Garðabær       0.48936170   0.14893617 0.07446809 0.28723404
  Hafnarfjörður  0.61250000   0.00000000 0.18750000 0.20000000
  Kópavogur      0.47368421   0.00000000 0.27631579 0.25000000
  Mosfellsbær    0.39473684   0.00000000 0.21052632 0.39473684
  Reykjavík      0.41037736   0.00000000 0.12264151 0.46698113
  • Hér sést að af öllum eignum í Garðabæ eru 48,9% þeirra einbýlishús.
prop.table(table(df$breyta1, df$breyta2),2)
  • Hér er þessu snúið við og við fáum hlutfallslega skiptingu flokkabreytar 1 út frá flokkabreytu 2.
prop.table(table(df$sveitarfélag, df$tegund), 2)
               
                Einbýlishús Fjölbýlishús     Parhús     Raðhús
  Garðabær       0.19742489   1.00000000 0.09090909 0.15340909
  Hafnarfjörður  0.21030043   0.00000000 0.19480519 0.09090909
  Kópavogur      0.15450644   0.00000000 0.27272727 0.10795455
  Mosfellsbær    0.06437768   0.00000000 0.10389610 0.08522727
  Reykjavík      0.37339056   0.00000000 0.33766234 0.56250000
  • Hér fáum við að af öllum einbýlishúsum, þá eru 19,7% þeirra í Garðabæ.

Fylgni

Skipunin cor() gefur okkur fylgni á milli breyta, eðlilega þurfa breyturnar því að vera mældar á samfelldum kvarða.

Ef gagnasafnið inniheldur aðeins samfelldar breytur má setja allt gagnasafnið innan cor().

cor(df)

Gagnasafnið okkar inniheldur flokkabreytuna sveitarfélag og tegund, við þyrftum því að tilgreina sérstaklega þær breytur sem við viljum fá fylgni fyrir.

cor(df[c("verð","stærð","herbergi","aldur")])
               verð      stærð  herbergi      aldur
verð      1.0000000  0.6642176 0.3314536 -0.1910744
stærð     0.6642176  1.0000000 0.6391926 -0.1165756
herbergi  0.3314536  0.6391926 1.0000000  0.1631419
aldur    -0.1910744 -0.1165756 0.1631419  1.0000000
  • passa sig: Ef þú ert með missing gildi á breytunni gætir þú fengið villu, þá dugir að bæta við use=“complete.obs”

Með því að bæta as.dist() við þá fæst einfölduð tafla:

as.dist(cor(df[c("verð","stærð","herbergi","aldur")]))
               verð      stærð   herbergi
stærð     0.6642176                      
herbergi  0.3314536  0.6391926           
aldur    -0.1910744 -0.1165756  0.1631419

Ég gæti einnig beðið beint um fylgnifylki fyrir allar breytur sem eru ekki factor, t.d. með:

cor(df [sapply(df, function(x) !is.factor(x))])
               verð      stærð  herbergi      aldur
verð      1.0000000  0.6642176 0.3314536 -0.1910744
stærð     0.6642176  1.0000000 0.6391926 -0.1165756
herbergi  0.3314536  0.6391926 1.0000000  0.1631419
aldur    -0.1910744 -0.1165756 0.1631419  1.0000000

Síuð gögn

subset() skipunin er einnig gagnleg til að sía út þær breytur eða þau gildi á breytum sem þú vilt fá upplýsingar um.

Hér vil ég sía gögnin til að innihalda aðeins eignir sem eru staðsettar í Garðabæ:

#Bý til hlut sem inniheldur aðeins eignir í Garðabæ 
Garðabær <- subset(df, sveitarfélag == "Garðabær")

Næst gæti ég nýtt mér þær skipanir sem fjallað er um hér að ofan til að biðja um ólíkar upplýsingar fyrir eignir í Garðabæ.

Dæmi: Nýti mér describe úr psych pakkanum til að lýsa gagnasafninu fyrir mér

psych::describe(Garðabær)
              vars  n     mean       sd  median  trimmed      mad     min
verð             1 94 60687.77 14064.18 60000.0 60168.42 12231.45 33000.0
tegund*          2 94     2.16     1.31     2.0     2.08     1.48     1.0
sveitarfélag*    3 94     1.00     0.00     1.0     1.00     0.00     1.0
stærð            4 94   188.37    53.78   190.0   187.05    42.25    73.2
herbergi         5 94     3.50     1.18     4.0     3.43     1.48     1.0
aldur            6 94    28.09    17.31    31.5    28.38    21.50     1.0
                  max range  skew kurtosis      se
verð          96500.0 63500  0.34    -0.27 1450.61
tegund*           4.0     3  0.48    -1.55    0.13
sveitarfélag*     1.0     0   NaN      NaN    0.00
stærð           330.2   257  0.17     0.05    5.55
herbergi          8.0     7  0.56     1.25    0.12
aldur            58.0    57 -0.20    -1.31    1.79

Pípur

Pípur fást úr pakkanum dplyr og geta verið mjög gagnlegar til að taka saman upplýsingar í einum kóðabút. (Það er, í staðin fyrir að þurfa að taka þetta í mörgum skrefum.)

Hér bið ég um meðaltal (mean) verðs (verd), skipt niður eftir sveitarfélagi (sveitarfelag) úr gagnasafninu (df).

df %>%
  group_by(sveitarfélag) %>%
  summarise(mean(verð))
# A tibble: 5 × 2
  sveitarfélag  `mean(verð)`
  <fct>                <dbl>
1 Garðabær            60688.
2 Hafnarfjörður       54936.
3 Kópavogur           60412.
4 Mosfellsbær         53437.
5 Reykjavík           59387.

Eins og gefur að skilja býður þetta upp á ótal möguleika. Hér bæti ég við fleiri mælingum fyrir verð, en ég gæti einnig bætt við sömu mælingum fyrir aðrar breytur.

df %>%
  group_by(sveitarfélag) %>%
  summarise(mean(verð), sd(verð), min(verð), max(verð)) 
# A tibble: 5 × 5
  sveitarfélag  `mean(verð)` `sd(verð)` `min(verð)` `max(verð)`
  <fct>                <dbl>      <dbl>       <int>       <int>
1 Garðabær            60688.     14064.       33000       96500
2 Hafnarfjörður       54936.     11787.       23900       85000
3 Kópavogur           60412.     11736.       32000       92000
4 Mosfellsbær         53437.     12846.       24900       82500
5 Reykjavík           59387.     13014.       29000       94550