Lesið gagnasafnið inn í R
po <- read_csv2("https://ahj.hi.is/kaupskra.csv", locale = locale(encoding = "ISO8859-1"),show_col_types = FALSE)
Notið filter() skipunina til að velja fullbúnar eignir (sjá fullbuid breytuna) sem eru “Fjolbyli” og “Serbyli” og byggja á samningum sem eru er nothæfir. Yfirskrifið stóra gagnaramman í a) lið með þessum eignum.
po <- filter(po, fullbuid=="1", tegund %in% c("Serbyli", "Fjolbyli"), onothaefur_samningur=="0")
Búið til nýja breytu í gagnarammanum ykkar sem inniheldur fermetraverð eignanna, nefnið breytuna fermetraverd.
po <- po %>%
mutate(fermetraverd=kaupverd/einflm)
Búið til nýja breytu í gagnarammanum ykkar sem inniheldur árið sem eignin var seld, nefnið breytuna ar (t.d. með að nota year() fallið í lubridate pakkanum).
po <- po %>%
mutate(ar=year(thinglystdags))
Veljið ykkur þrjú póstnúmer til að vinna með. Það þurfa að vera a.m.k. 200 sérbýli í hverju póstúmeri fyrir sig. Yfirskrifið gagnaramman í b) lið með eignum úr þessum þremur póstnúmerum. Þið skulið nota þennan gagnaramma í verkefninu.
po <- filter(po, postnr %in% c("230", "101", "310"))
Kannið gerð breytanna í gagnarammanum ykkar og breytið ef þarf.
Breytum postnr í flokkabreytu.
glimpse(po)
## Rows: 10,332
## Columns: 24
## $ faerslunumer <dbl> 539707, 627520, 641989, 683292, 591536, 668261, 6…
## $ emnr <dbl> 434, 448, 448, 448, 448, 448, 448, 442, 413, 413,…
## $ skjalanumer <chr> "C-003359/2007", "A-004947/2017", "A-000942/2019"…
## $ fastnum <dbl> 2087527, 2087527, 2087542, 2087542, 2247401, 2247…
## $ heimlilisfang <chr> "Faxabraut 40A", "Faxabraut 40A", "Faxabraut 42A"…
## $ postnr <dbl> 230, 230, 230, 230, 230, 230, 230, 310, 310, 310,…
## $ heinum <dbl> 1035100, 1035100, 1035108, 1035108, 1095920, 1095…
## $ svfn <chr> "2000", "2000", "2000", "2000", "2000", "2000", "…
## $ sveitarfelag <chr> "Reykjanesbær", "Reykjanesbær", "Reykjanesbær", "…
## $ utgdag <dttm> 2007-10-09, 2017-12-06, 2019-03-13, 2022-01-14, …
## $ thinglystdags <dttm> 2007-10-11 08:55:03, 2018-01-15 08:57:09, 2019-0…
## $ kaupverd <dbl> 23900, 41000, 45900, 60000, 32500, 56500, 52500, …
## $ fasteignamat <dbl> 20580, 28700, 41400, 46000, 27150, 56800, 53000, …
## $ byggar <dbl> 1960, 1960, 1960, 1960, 2001, 2001, 2001, 1977, 1…
## $ epilog <chr> "010101", "010101", "010101", "010101", "010101",…
## $ einflm <dbl> 179.9, 179.9, 180.5, 180.5, 160.7, 160.7, 160.7, …
## $ lod_flm <dbl> 442.0, 442.0, 481.0, 481.0, 608.0, 608.0, 608.0, …
## $ lod_flmein <chr> "m²", "m²", "m²", "m²", "m²", "m²", "m²", "m²", "…
## $ tegund <chr> "Serbyli", "Serbyli", "Serbyli", "Serbyli", "Serb…
## $ fullbuid <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ onothaefur_samningur <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ ...22 <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ fermetraverd <dbl> 132.8516, 227.9044, 254.2936, 332.4100, 202.2402,…
## $ ar <dbl> 2007, 2018, 2019, 2022, 2015, 2021, 2019, 2020, 2…
# Breyta póstnúmerum í flokkabreytu
po$postnr <- factor(po$postnr)
Hugsum okkur nú að eignirnar í gagnarammanum ykkar sé þýðið ykkar. Nú ætlum við að taka úrtak úr þýðinu, 200 eignir úr hverju hverfi. Það má gera á eftirfarandi hátt:
set.seed(17)
po %>%
group_by(postnr) %>%
sample_n(size = 200) -> urtak
Búið til töflu sem sýnir fjölda eigna í hverfunum þremur eftir gerð eigna (sérbýli eða fjölbýli).
taflah <- table(urtak$tegund,urtak$postnr)
print(taflah)
##
## 101 230 310
## Fjolbyli 188 138 108
## Serbyli 12 62 92
Búið til töflu sem sýnir hlutfall sérbýla og fjölbýla í hverfunum þremur. Það á s.s. að vera hægt að lesa hvert hlutfall sérbýla og fjölbýla er í hverju hverfi fyrir sig.
taflai <- prop.table(table(urtak$tegund,urtak$postnr),2)
print(taflai)
##
## 101 230 310
## Fjolbyli 0.94 0.69 0.54
## Serbyli 0.06 0.31 0.46
Kannið með viðeigandi tilgátuprófi hvort hlutfall fjölbýla sé misjafnt í hverfunum þremur. Sýnið úttakið úr prófinu. Eru forsendur til að nota prófið uppfylltar? Setjið tilgáturnar fram, tilgreinið gildið á prófstærðinni, p-gildið og hvaða ályktun þið dragið.
Við ætlum að bera saman hlutföll þriggja þýða og því notum við
kí-kvaðrat próf. Tilgáturnar eru
\(H_0\): \(p_1=p_2=p_3\)
\(H_1\): Hlutföllin eru ekki
jöfn.
Við sjáum að prófstærðin er \(X^2=81.617\) og við höfum tvær frígráður.
p-gildið er \(p<2.2*10^{-16}\). Ef
við miðum við \(\alpha =0.05\) sjáum
við að \(p<\alpha\). Því er ljóst að
við getum hafnað núlltilgátunni og ályktað að hlutfall sérbýla og
fjölbýla í a.m.k. einu póstnúmeri sé frábrugðið hinum tveimur.
proptestj <- prop.test(table(urtak$postnr,urtak$tegund))
print(proptestj)
##
## 3-sample test for equality of proportions without continuity correction
##
## data: table(urtak$postnr, urtak$tegund)
## X-squared = 81.617, df = 2, p-value < 2.2e-16
## alternative hypothesis: two.sided
## sample estimates:
## prop 1 prop 2 prop 3
## 0.94 0.69 0.54
Kannið með viðeigandi tilgátuprófi hvort munur sé á meðalfermetraverði fasteigna eftir því hvort þær séu sérbýli eða fjölbýli. Setjið tilgáturnar fram, tilgreinið gildið á prófstærðinni, p-gildið og hvaða ályktun þið dragið.
Tilgátur:
H0: μ1 = μ2 (Meðalfermetraverð sérbýla og fjölbýla er það sama)
H1: μ1 ≠ μ2 (Meðalfermetraverð sérbýla og fjölbýla er ekki það sama)
Niðurstöður:
Prófstærð(t): 8.4993
Frígráður(df): 528.65
P-gildi (p-value): < 2.2e-16
P-gildi er minna en α svo við getum hafnað núlltilgátunni og því er hægt
að segja að munur sé á meðalfermetraverði sérbýla og fjölbýla.
# t-próf
t_prof <- t.test(fermetraverd ~ tegund, data = urtak)
# Prenta út niðurstöður
print(t_prof)
##
## Welch Two Sample t-test
##
## data: fermetraverd by tegund
## t = 8.4993, df = 528.65, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group Fjolbyli and group Serbyli is not equal to 0
## 95 percent confidence interval:
## 80.91251 129.55942
## sample estimates:
## mean in group Fjolbyli mean in group Serbyli
## 341.3272 236.0913
Búið til nýja breytu, staerd200, sem gefur til kynna hvort eignir séu stærri eða minni en 200 fermetrar (það skiptir ekki máli í hvorum flokknum 200 fermetra eignir lenda). Kallið flokkinn með stærri eignunum Stærri og minni eignunum Minni. Ábending: notið ifelse() til að búa til breytuna.
# Búa til nýja breytu, staerd200
urtak <- urtak %>%
mutate(staerd200 = ifelse(einflm > 200, "Stærri", "Minni"))
Kannið með viðeigandi tilgátuprófi hvort munur sé á meðalfermetraverði fasteigna eftir því hvort þær séu stærri eða minni en 200 fermetrar. Setjið tilgáturnar fram, tilgreinið gildið á prófstærðinni, p-gildið og hvaða ályktun þið dragið.
Tilgátur:
H0: μ1 = μ2 (Það er enginn munur á meðalfermetraverði fasteigna sem eru
stærri eða minni en 200 fermetrar)
H1: μ1 ≠ μ2 (Það er munur á meðalfermetraverði fasteigna sem eru stærri
eða minni en 200 fermetrar)
Niðurstöður:
Prófstærð(t): 4.9653
Frígráður(df): 62.657
P-gildi (p-value): < 5.575e-06
P-value er minna en α(0.05) svo við getum hafnað núlltilgátunni og því er hægt að segja að munur sé á meðalfermetraverði sérbýla og fjölbýla sem eru minni en 200 fermetrar.
# t-próf
t_prof <- t.test(fermetraverd ~ staerd200, data = urtak)
# Prenta út niðurstöður
print(t_prof)
##
## Welch Two Sample t-test
##
## data: fermetraverd by staerd200
## t = 4.9653, df = 62.657, p-value = 5.575e-06
## alternative hypothesis: true difference in means between group Minni and group Stærri is not equal to 0
## 95 percent confidence interval:
## 55.19316 129.55584
## sample estimates:
## mean in group Minni mean in group Stærri
## 318.9861 226.6116
Teiknið viðeigandi mynd af breytunum fermetraverd og postnr.
# Teikna mynd
ggplot(urtak, aes(x = postnr, y = fermetraverd)) +
geom_boxplot() +
labs(x = "Póstnúmer", y = "Fermetraverð", title = "Fermetraverð eftir póstnúmerum") +
theme_minimal()
Kannið með viðeigandi tilgátuprófi hvort munur sé á meðalfermetraverði fasteigna í hverfunum þremur. Sýnið úttakið úr prófinu. Setjið tilgáturnar fram, tilgreinið gildið á prófstærðinni, p-gildið og hvaða ályktun þið dragið. Segði nokkur orð um hvort forsendur tilgátuprófsins séu uppfylltar. Þið þurfið ekki að prófa það með tilgátuprófi, nóg er að notast við myndrit (t.d. myndina í lið n).
Tilgátur:
H0: μ1 = μ2 = μ3 (Það er enginn munur á meðalfermetraverði fasteigna í þremur póstnúmerum)
H1: μ1 ≠ μ2 | μ1 ≠ μ3 | μ2 ≠ μ3 (A.m.k. eitt meðalferðmetraverð fasteigna er er ekki jafnt hinum tveimur)
Prófstærð (F value): 191.1
P-gildi (Pr(>F)): <2e-16
P-gildi er töluvert minna en α (0.05) svo við getum hafnað
núlltilgátunni og því er A.m.k. eitt meðalferðmetraverð í póstnúmeri er
er ekki jafnt hinum tveimur
# ANOVA próf
anova_prof <- aov(fermetraverd ~ postnr, data = urtak)
# Prenta út niðurstöður
summary(anova_prof)
## Df Sum Sq Mean Sq F value Pr(>F)
## postnr 2 7557490 3778745 191.1 <2e-16 ***
## Residuals 597 11807167 19777
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Teiknið viðeigandi mynd af breytunum einflm og kaupverd. Segið með nokkrum orðum hvort þið teljið viðeigandi að nota einfalt línulegt aðhvarf til að lýsa sambandinu á milli breytanna.
Myndin sýnir jákvætt fylgni milli einflm og kaupverd en það er mikil dreifing og leifar hafa ekki jafna dreifni. Við teljum samt viðeigandi að nota einfalt línulegt aðhvarf.
# Teikna mynd
ggplot(urtak, aes(x = einflm, y = kaupverd)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(x = "Einflm", y = "Kaupverð", title = "Kaupverð eftir einflm") +
theme_minimal()
Smíðið einfalt aðhvarfslíkan sem lýsir sambandi stærðar og kaupverðs eigna. Með líkaninu á að vera hægt að spá fyrir um kaupverð úr frá stærð. Tilgreinið í texta hvert matið á skurðpunktinum og hallatölunni eru ásamt skýringarhlutfallinu (notið klumpakommur). Segið í örfáum orðum hvað hallatalan segir okkur í þessu tilviki.
Skurðpunktur er 14315.02
Hallatalan er 161.27, hver eining hallatölunnar segir okkur hversu mikið
kaupverd breytist fyrir hvert einflm.
Ef hallatalan er jákvæð, þá eykst kaupverd þegar einflm eykst.
Ef hallatalan er neikvæð, þá minnkar kaupverd þegar einflm eykst.
Skýringahlutfall er: 0.1968 eða 19.68%
# Einfalt línulegt aðhvarf
model <- lm(kaupverd ~ einflm, data = urtak)
# Prenta út niðurstöður
summary(model)
##
## Call:
## lm(formula = kaupverd ~ einflm, data = urtak)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36067 -12314 -3982 6992 107173
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14315.02 1690.56 8.468 <2e-16 ***
## einflm 161.27 13.32 12.103 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 18180 on 598 degrees of freedom
## Multiple R-squared: 0.1968, Adjusted R-squared: 0.1954
## F-statistic: 146.5 on 1 and 598 DF, p-value: < 2.2e-16