1 Executive Summary

Examining census data indicates that Australia has quite high and apparently consistent rates of homeownership and mortgaging across all states. Viewing the data at a finer grain shows some variety amongst regions in these rates. Isolating NSW as a sample of the data overall shows that both rates in NSW are both above the means for Australia overall and outside the confidence interval for those means. However, ultimately the difference is insufficiently great to justify rejecting the null hypothesis that the means from the NSW sample do not vary meaningfully from the means from the overall data.


2 Full Report

2.1 Initial Data Analysis

2.1.1 IDA 1

This report uses the Australian Bureau of Statistics’ (ABS) dataset on patterns of housing arrangements as recorded in the 2011 census and released in 2013. It is a large dataset from a respectable and reliable source, and the data acquired was done so in an ethically unobjectionable way, as participation in the census is not compulsory.

However, this places it at risk of excluding some sources of data through volunteer bias. Beyond that, it only takes into account those households which were both occupied on the night of the census, and occupied in a calssifiable way. It is grouped by Local Government Areas (LGA), which results in the exclusion of potential data from unicorporated areas and from the Australian Capital territory. The totals for each LGA include those households where tenure type was not recorded - thus, proportions of stated tenure type compared to that total may not accurately reflect genuine proportions in the population.

###importing libraries and dataset
library(readr)
library(ggplot2)
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(plyr))
library(tidyr)
data <- read_csv("housing.csv")
## Parsed with column specification:
## cols(
##   `Local Government Area` = col_character(),
##   `Owned - outright` = col_double(),
##   `Owned - with a mortgage` = col_double(),
##   `Rented - Real estate agent` = col_double(),
##   `Rented - State or territory housing authority` = col_double(),
##   `Rented - Person not in same household` = col_double(),
##   `Rented - Housing co-operative, community or church group` = col_double(),
##   `Rented - Other landlord type` = col_double(),
##   `Rented - Landlord type not stated` = col_double(),
##   `Other tenure type` = col_double(),
##   `Tenure type not stated` = col_double(),
##   Total = col_double(),
##   `Median mortgage repayment ($/monthly)` = col_double(),
##   State = col_character()
## )
# data head
head(data)
## # A tibble: 6 x 14
##   `Local Governme… `Owned - outrig… `Owned - with a… `Rented - Real …
##   <chr>                       <dbl>            <dbl>            <dbl>
## 1 LGA10050 Albury…             5440             6403             3783
## 2 LGA10110 Armida…             2888             2322             1803
## 3 LGA10150 Ashfie…             4408             4240             4624
## 4 LGA10200 Auburn…             5505             7104             5824
## 5 LGA10250 Ballin…             6274             4169             2415
## 6 LGA10300 Balran…              327              216               44
## # … with 10 more variables: `Rented - State or territory housing
## #   authority` <dbl>, `Rented - Person not in same household` <dbl>,
## #   `Rented - Housing co-operative, community or church group` <dbl>,
## #   `Rented - Other landlord type` <dbl>, `Rented - Landlord type not
## #   stated` <dbl>, `Other tenure type` <dbl>, `Tenure type not
## #   stated` <dbl>, Total <dbl>, `Median mortgage repayment
## #   ($/monthly)` <dbl>, State <chr>
#data dimensions
dim(data)
## [1] 559  14
#data classification
class(data)
## [1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame"
#variable classification
str(data)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 559 obs. of  14 variables:
##  $ Local Government Area                                   : chr  "LGA10050 Albury (C)" "LGA10110 Armidale Dumaresq (A)" "LGA10150 Ashfield (A)" "LGA10200 Auburn (C)" ...
##  $ Owned - outright                                        : num  5440 2888 4408 5505 6274 ...
##  $ Owned - with a mortgage                                 : num  6403 2322 4240 7104 4169 ...
##  $ Rented - Real estate agent                              : num  3783 1803 4624 5824 2415 ...
##  $ Rented - State or territory housing authority           : num  827 451 231 836 602 ...
##  $ Rented - Person not in same household                   : num  1067 519 972 1432 1065 ...
##  $ Rented - Housing co-operative, community or church group: num  144 103 158 130 135 20 469 72 102 31 ...
##  $ Rented - Other landlord type                            : num  170 123 93 236 241 47 508 106 149 70 ...
##  $ Rented - Landlord type not stated                       : num  88 76 62 128 93 23 305 99 111 53 ...
##  $ Other tenure type                                       : num  149 71 125 135 199 11 394 71 114 52 ...
##  $ Tenure type not stated                                  : num  545 233 384 751 404 ...
##  $ Total                                                   : num  18616 8589 15297 22081 15597 ...
##  $ Median mortgage repayment ($/monthly)                   : num  1450 1430 2167 2000 1733 ...
##  $ State                                                   : chr  "New South Wales" "New South Wales" "New South Wales" "New South Wales" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   `Local Government Area` = col_character(),
##   ..   `Owned - outright` = col_double(),
##   ..   `Owned - with a mortgage` = col_double(),
##   ..   `Rented - Real estate agent` = col_double(),
##   ..   `Rented - State or territory housing authority` = col_double(),
##   ..   `Rented - Person not in same household` = col_double(),
##   ..   `Rented - Housing co-operative, community or church group` = col_double(),
##   ..   `Rented - Other landlord type` = col_double(),
##   ..   `Rented - Landlord type not stated` = col_double(),
##   ..   `Other tenure type` = col_double(),
##   ..   `Tenure type not stated` = col_double(),
##   ..   Total = col_double(),
##   ..   `Median mortgage repayment ($/monthly)` = col_double(),
##   ..   State = col_character()
##   .. )
sapply(data, class)
##                                    Local Government Area 
##                                              "character" 
##                                         Owned - outright 
##                                                "numeric" 
##                                  Owned - with a mortgage 
##                                                "numeric" 
##                               Rented - Real estate agent 
##                                                "numeric" 
##            Rented - State or territory housing authority 
##                                                "numeric" 
##                    Rented - Person not in same household 
##                                                "numeric" 
## Rented - Housing co-operative, community or church group 
##                                                "numeric" 
##                             Rented - Other landlord type 
##                                                "numeric" 
##                        Rented - Landlord type not stated 
##                                                "numeric" 
##                                        Other tenure type 
##                                                "numeric" 
##                                   Tenure type not stated 
##                                                "numeric" 
##                                                    Total 
##                                                "numeric" 
##                    Median mortgage repayment ($/monthly) 
##                                                "numeric" 
##                                                    State 
##                                              "character"
###subsetting and pivoting
area <-data$'Local Government Area'
owned <- data$`Owned - outright`
ownedm <- data$`Owned - with a mortgage`
all_owned <- owned + ownedm
rent1 <- data$`Rented - Real estate agent`
rent2 <- data$`Rented - State or territory housing authority`
rent3 <- data$`Rented - Person not in same household`
rent4 <- data$`Rented - Housing co-operative, community or church group`
rent5 <- data$`Rented - Other landlord type`
rent6 <- data$`Rented - Landlord type not stated`
other <- data$`Other tenure type`
n_s <- data$`Tenure type not stated`
total <- data$Total
state <- data$State
all_rent <- rent1 + rent2 + rent3 + rent4 + rent5 + rent6
all_other <- other + n_s
all_not_owned <- all_other + all_rent
tot_ownedm <- sum(ownedm)
tot_owned <- sum(owned)
tot_all_owned <- sum(all_owned)
tot_nowned <- sum(all_not_owned)
tot_total <- sum(total)
nsw_owned <- subset(owned, state=="New South Wales")
nsw_ownedm <- subset(ownedm, state=="New South Wales")
nsw_all_owned <-subset(all_owned, state=="New South Wales")
nsw_nowned <- subset(all_not_owned, state=="New South Wales")
nsw_tot <- subset(total, state=="New South Wales")
vic_owned <-subset(owned, state=="Victoria")
vic_ownedm <- subset(ownedm, state=="Victoria")
vic_all_owned <-subset(all_owned, state=="Victoria")
vic_nowned <- subset(all_not_owned, state=="Victoria")
vic_tot <- subset(total, state=="Victoria")
qld_owned <-subset(owned, state=="Queensland")
qld_ownedm <- subset(ownedm, state=="Queensland")
qld_all_owned <-subset(all_owned, state=="Queensland")
qld_nowned<-subset(all_not_owned, state=="Queensland")
qld_tot <- subset(total, state=="Queensland")
sa_owned<-subset(owned, state=="South Australia")
sa_ownedm<-subset(ownedm, state=="South Australia")
sa_all_owned <-subset(all_owned, state=="South Australia")
sa_nowned<-subset(all_not_owned, state=="South Australia")
sa_tot <- subset(total, state=="South Australia")
wa_owned<-subset(owned, state=="Western Australia")
wa_ownedm<-subset(ownedm, state=="Western Australia")
wa_all_owned <-subset(all_owned, state=="Western Australia")
wa_nowned<-subset(all_not_owned, state=="Western Australia")
wa_tot <- subset(total, state=="Western Australia")
tas_owned<-subset(owned, state=="Tasmania")
tas_ownedm<-subset(ownedm, state=="Tasmania")
tas_all_owned <-subset(all_owned, state=="Tasmania")
tas_nowned<-subset(all_not_owned, state=="Tasmania")
tas_tot <- subset(total, state=="Tasmania")
nt_owned<-subset(owned, state=="Northern Territory")
nt_ownedm<-subset(ownedm, state=="Northern Territory")
nt_all_owned <-subset(all_owned, state=="Northern Territory")
nt_nowned<-subset(all_not_owned, state=="Northern Territory")
nt_tot <- subset(total, state=="Northern Territory")
data_2 <- data.frame(Owned_OR = c(sum(nsw_owned), sum(vic_owned), sum(qld_owned), sum(sa_owned), sum(wa_owned), sum(tas_owned), sum(nt_owned)), Owned_M = c(sum(nsw_ownedm), sum(vic_ownedm), sum(qld_ownedm), sum(sa_ownedm), sum(wa_ownedm), sum(tas_ownedm), sum(nt_ownedm)), Not_Owned = c(sum(nsw_nowned), sum(vic_nowned), sum(qld_nowned), sum(sa_nowned), sum(wa_nowned), sum(tas_nowned), sum(nt_nowned)), State = as.factor(c("NSW", "Vic", "QLD", "SA", "WA", "Tas", "NT")))
data_2_pivot <- data_2 %>% gather("Tenure", "Count", -State)

nsw_perc_owned <- (sum(nsw_owned)/sum(nsw_tot))*100
vic_perc_owned <-(sum(vic_owned)/sum(vic_tot))*100
qld_perc_owned <-(sum(qld_owned)/sum(qld_tot))*100
sa_perc_owned <-(sum(sa_owned)/sum(sa_tot))*100
wa_perc_owned <-(sum(wa_owned)/sum(wa_tot))*100
tas_perc_owned <-(sum(tas_owned)/sum(tas_tot))*100
nt_perc_owned <-(sum(nt_owned)/sum(nt_tot))*100
tot_perc_owned <-(tot_owned/tot_total)*100
nsw_perc_ownedm <- (sum(nsw_ownedm)/sum(nsw_tot))*100
vic_perc_ownedm <-(sum(vic_ownedm)/sum(vic_tot))*100
qld_perc_ownedm <-(sum(qld_ownedm)/sum(qld_tot))*100
sa_perc_ownedm <-(sum(sa_ownedm)/sum(sa_tot))*100
wa_perc_ownedm <-(sum(wa_ownedm)/sum(wa_tot))*100
tas_perc_ownedm <-(sum(tas_ownedm)/sum(tas_tot))*100
nt_perc_ownedm <-(sum(nt_ownedm)/sum(nt_tot))*100
tot_perc_ownedm <-(tot_ownedm/tot_total)*100
nsw_perc_all_owned <- (sum(nsw_all_owned)/sum(nsw_tot))*100
vic_perc_all_owned <-(sum(vic_all_owned)/sum(vic_tot))*100
qld_perc_all_owned <-(sum(qld_all_owned)/sum(qld_tot))*100
sa_perc_all_owned <-(sum(sa_all_owned)/sum(sa_tot))*100
wa_perc_all_owned <-(sum(wa_all_owned)/sum(wa_tot))*100
tas_perc_all_owned <-(sum(tas_all_owned)/sum(tas_tot))*100
nt_perc_all_owned <-(sum(nt_all_owned)/sum(nt_tot))*100
tot_perc_all_owned <-(tot_all_owned/tot_total)*100
data_3 <- data.frame(Perc_Owned_OR = c(nsw_perc_owned, vic_perc_owned, qld_perc_owned, sa_perc_owned, wa_perc_owned, tas_perc_owned, nt_perc_owned, tot_perc_owned), Perc_Owned_M = c(nsw_perc_ownedm, vic_perc_ownedm, qld_perc_ownedm, sa_perc_ownedm, wa_perc_ownedm, tas_perc_ownedm, nt_perc_ownedm, tot_perc_ownedm), Perc_Owned_All = c(nsw_perc_all_owned, vic_perc_all_owned, qld_perc_all_owned, sa_perc_all_owned, wa_perc_all_owned, tas_perc_all_owned, nt_perc_all_owned, tot_perc_all_owned), State = as.factor(c("NSW", "Vic", "QLD", "SA", "WA", "Tas", "NT", "Overall")))
data_3_pivot <- data_3 %>% gather("Tenure", "Percent", -State)

perc_ownedm <-(ownedm/total)*100
perc_all_owned <-(all_owned/total)*100
data_4 <-data.frame("Owned_mortgage" = c(perc_ownedm), "Owned_all" = c(perc_all_owned), "Area" = c(area))
data_4_pivot <-data_4%>%gather("Tenure", "Percent", -"Area")

nsw_area_perc_ownedm <-(subset(ownedm, state=="New South Wales")/subset(total, state=="New South Wales"))*100
nsw_area_perc_all_owned <-(subset(all_owned, state=="New South Wales")/subset(total, state=="New South Wales"))*100
nsw_area <- subset(area, state=="New South Wales")
data_5 <-data.frame("Owned_mortgage" = c(nsw_area_perc_ownedm), "Owned_all" = c(nsw_area_perc_all_owned), "Area" = c(nsw_area))
data_5_pivot <-data_5%>%gather("Tenure", "Percent", -"Area")

The most obvious stakeholder in this dataset is the ABS itself, given that it elicited, compiled, and curated the data. Beyond that, the ABS data has implications for policymakers and actors in the public and private sectors.

2.1.2 IDA 2

The ABS data is placed in context of findings about patterns of homeownership and mortgage debt both over time and at the time of the 2011 census. Bourassa et al chart the pattern of owner-occupation rates reflected in census data from 1911 to 1991. Worthington uses private and public sector data, as well as a range of secondary literature, to examine changes in housing affordability between 1985 and 2010. Varadkhani, in a paper primarily oriented at examining possible determinants of the standard variable mortgage rates of major lenders, draws briefly on data from the Reserve Bank of Australia (RBA) from 2012 about patterns of homeownership and mortgaging, as well as citing and independently supporting Worthington’s findings. Finally, Yates et al provide some considerations about the broader social significance of rates of homeownership in context of the Australian government’s tacit and explicit reliance on private asset ownership as a mode of social security, especially for individuals post-retirement.

Placed in this context, it is evident that perhaps the most important stakeholder (in a broad sense) in the ABS data is the general public, insofar as any individual among them is potentially affected by the decisions and actions of public and private sector policymakers and actors, which are in turn potentially determined by conclusions drawn from the ABS data.


2.2 Patterns of Australian home ownership

Australian homeownership has been observed to increase between the late 1940s and the early 1960s, and remain roughly stable since then (Bourassa et al, Varadkhani). However, the affordability of homeownership has declined considerably in that time (Worthington), and Australian homeowners carry an unusually high level of mortgage debt (Varadkhani, Worthington). Asset-ownership, including homeownership, is an important source of security for individuals (especially post-retirement), and this has become increasingly reflected in policy (Yates et al). In spite of the negative implications and precariousness of homeownership on the basis of mortgage debt, financial outcomes for homeowners seem to be markedly better than for nonhomeowners (Varadkhani, Yates et al) - though it is not certain that homeownership itself necessarily determines these outcomes.

A preliminary graphical summary of the ABS data (grouped by state), seems to roughly accord with the observations noted in Varadkhani, from the RBA’s 2012 data.

###stacked barplot of owned outright, owned with mortage, and not owned (basic)
ggplot(data_2_pivot, aes(x = data_2_pivot$State, y = data_2_pivot$Count, fill = data_2_pivot$Tenure)) + geom_col() + labs(title = "Stacked barplot of tenure type by state", x = "State", y = "Count") + scale_fill_manual(values=c("violetred2", "slateblue2", "steelblue2"), name = "Type of tenure", labels = c("Not owned or not stated", "Owned with mortgage", "Owned outright"))

Focussing on the percentage of homeownership overall compared to homeownership with a mortgage in Australia at a finer grain, a summary can be derived from the two subsets of the ABS data.

###interleaved histogram owned outright, owned with mortgage, and all owned by local government area 
m_1 <- ddply(data_4_pivot, "Tenure", summarise, 
             group_size=length(Percent), group_mean=mean(Percent), 
             group_sd=sd(Percent),
             group_CI_lower=(group_mean-(qnorm(0.975)*group_sd/sqrt(group_size))),
            group_CI_upper=(group_mean+(qnorm(0.975)*group_sd/sqrt(group_size))))
ggplot(data_4_pivot, aes(x=Percent, color=Tenure)) +
  geom_histogram(fill="white", position="dodge", binwidth = diff(range(data_4_pivot$Percent))/30)+
  geom_vline(data=m_1, aes(xintercept=group_mean, color=Tenure), linetype="dashed") + theme(legend.position="top") + labs(title = "Interleaved histogram of frequency of percentages of \nownership with mortgage and overall ownership \nby Local Government Area", x = "Percentage values", y = "Frequency") + scale_color_manual(values=c("seagreen3", "slateblue3"), name = "Type of tenure", labels = c("Owned, all", "Owned with mortgage"))

m_1
##           Tenure group_size group_mean group_sd group_CI_lower
## 1      Owned_all        559   63.17266  18.1132       61.67112
## 2 Owned_mortgage        559   28.22851  10.8509       27.32900
##   group_CI_upper
## 1       64.67420
## 2       29.12803

Performing a similar summary on NSW only yields somewhat higher values.

###interleaved histogram owned outright, owned with mortgage, and all owned by local government area in NSW
m_2 <- ddply(data_5_pivot, "Tenure", summarise, 
             group_size=length(Percent), group_mean=mean(Percent), 
             group_sd=sd(Percent),
             group_CI_lower=(group_mean-(qnorm(0.975)*group_sd/sqrt(group_size))),
            group_CI_upper=(group_mean+(qnorm(0.975)*group_sd/sqrt(group_size))))
ggplot(data_5_pivot, aes(x=Percent, color=Tenure)) +
  geom_histogram(fill="white", position="dodge", binwidth = diff(range(data_5_pivot$Percent))/30)+
  geom_vline(data=m_2, aes(xintercept=group_mean, color=Tenure), linetype="dashed") + theme(legend.position="top") + labs(title = "Interleaved histogram of frequency of percentages of \nownership with mortgage and overall ownership \nby Local Government Area in NSW", x = "Percentage values", y = "Frequency") + scale_color_manual(values=c("seagreen3", "slateblue3"), name = "Type of tenure", labels = c("Owned, all", "Owned with mortgage"))

m_2
##           Tenure group_size group_mean group_sd group_CI_lower
## 1      Owned_all        152   67.86701 7.590403       66.66033
## 2 Owned_mortgage        152   30.23123 6.415650       29.21131
##   group_CI_upper
## 1       69.07369
## 2       31.25116

NSW has comparatively higher rates of both homeownership and homeownership with a mortgage, and these rates fall outside of the 95% confidence interval of the means for Australia overall.

2.3 Is the difference between New South Wales and the whole of Australia significant?

Given that the means of the rates differ in excess of their confidence intervals, it seems to be worth exploring whether these differences are significant or not. One could imagine that they reflect interesting and potentially important differences in patterns of homeownership and indebtedness amongst data recorded for the states.

This section therefore tests the hypothesis that the mean values for the NSW data are greater than the mean values for the data on the whole of Australia, against the null hypothesis that they are equal.

Performing QQ testing and Shapiro-Wilkes testing on the NSW data showed that the NSW data did not completely conform to a normal distribution. However, as the NSW sample population was quite high (152), normality can be assumed on the basis of the Central Limit Theorem.

nsw_owned_qq <- qqnorm(subset(data_5_pivot$Percent, data_5_pivot$Tenure=="Owned_all")); qqline(subset(data_5_pivot$Percent, data_5_pivot$Tenure=="Owned_all"))

nsw_mort_qq <-qqnorm(subset(data_5_pivot$Percent, data_5_pivot$Tenure=="Owned_mortgage")); qqline(subset(data_5_pivot$Percent, data_5_pivot$Tenure=="Owned_mortgage"))

shapiro.test(subset(data_5_pivot$Percent, data_5_pivot$Tenure=="Owned_all"))
## 
##  Shapiro-Wilk normality test
## 
## data:  subset(data_5_pivot$Percent, data_5_pivot$Tenure == "Owned_all")
## W = 0.93803, p-value = 3.278e-06
shapiro.test(subset(data_5_pivot$Percent, data_5_pivot$Tenure=="Owned_mortgage"))
## 
##  Shapiro-Wilk normality test
## 
## data:  subset(data_5_pivot$Percent, data_5_pivot$Tenure == "Owned_mortgage")
## W = 0.95994, p-value = 0.0002177

As the data for Australia overall was taken to be the population, and the subset of NSW data to be the sample, p-values were computed using z-scores rather than performing t-tests.

aus_owned <- subset(m_1, m_1$Tenure=="Owned_all")
aus_mort <- subset(m_1, m_1$Tenure=="Owned_mortgage")
nsw_owned <-subset(m_2, m_2$Tenure=="Owned_all")
nsw_mort <-subset(m_2, m_2$Tenure=="Owned_mortgage")
samp_n <- nsw_owned$group_size
ev_owned <-aus_owned$group_mean
ev_mort <-aus_mort$group_mean
ob_owned <-nsw_owned$group_mean
ob_mort <-nsw_mort$group_mean
sd_owned <-nsw_owned$group_sd
sd_mort <-nsw_mort$group_sd
pop_v_owned <- var(subset(data_4_pivot$Percent, data_4_pivot$Tenure=="Owned_all"))
pop_v_mort <- var(subset(data_4_pivot$Percent, data_4_pivot$Tenure=="Owned_with mortgage"))
z_owned <- (ob_owned-ev_owned)/(pop_v_owned/sqrt(samp_n))
z_mort <- (ob_mort-ev_mort)/(pop_v_owned/sqrt(samp_n))
p_z_owned <-(1-pnorm(z_owned))
p_z_mort <-(1-pnorm(z_mort))
p_summa <- data.frame("Tenure" = c("Owned_all", "Owned_mortgage"), "Z_score" = c(z_owned, z_mort), "P_value" = c(p_z_owned, p_z_mort))

p_summa
##           Tenure    Z_score   P_value
## 1      Owned_all 0.17640322 0.4299886
## 2 Owned_mortgage 0.07525779 0.4700048

Ultimately, in spite of the apparent difference, the high p-values so computed indicated that neither overall rates of homeownership nor rates of homeownership with a mortage in NSW manifested sufficiently significant differences to motivate rejecting the null hypothesis.


3 References

3.1 Primary source

Australian Bureau of Statistics (2013). “Perspectives on Regional Australia, Housing Arrangements - Homes Owned with a Mortgage in Local Government Areas, 2011.” Viewed 28 October 2019. https://www.abs.gov.au/AUSSTATS/abs@.nsf/0/FE397F0E85A8BA4ECA257C27000E9A40?Opendocument

3.2 Secondary sources

Bourassa, S. C., Greig, A. W., & Troy, P. N. (1995). “The limits of housing policy: Home ownership in Australia.” Housing Studies, 10(1), 83–104. doi: 10.1080/02673039508720810

Valadkhani, A. (2013). “The pricing behaviour of Australian banks and building societies in the residential mortgage market.” Journal of International Financial Markets, Institutions and Money, 26, 133–151. doi: 10.1016/j.intfin.2013.05.003

Worthington, A. C. (2012). “The quarter century record on housing affordability, affordability drivers, and government policy responses in Australia.” International Journal of Housing Markets and Analysis, 5(3), 235–252. doi: 10.1108/17538271211243580

Yates, J., & Bradbury, B. (2010). “Home ownership as a (crumbling) fourth pillar of social insurance in Australia.” Journal of Housing and the Built Environment, 25(2), 193–211. doi: 10.1007/s10901-010-9187-4

3.3 Coding guidance

Holtz, Y. (n.d.). Help and inspiration for R charts. Retrieved from https://www.r-graph-gallery.com/.

R Tutorial. (n.d.). Retrieved from https://www.cyclismo.org/tutorial/R/index.html.