Install relevant R packages

packages = c('rgdal', 'maptools', 'raster','spatstat', 'tmap','sf','SpatialEpi', 'tidyverse','spData')
for (p in packages){
if(!require(p, character.only = T)){
install.packages(p)
}
library(p,character.only = T)
}

Import MP14_SUBZONE layer and named it as mpsz

mpsz <- readOGR(dsn = "data/geospatial", layer="MP14_SUBZONE_WEB_PL")
## OGR data source with driver: ESRI Shapefile 
## Source: "C:\IS415 Geospatial Analytics and Applications\take-home2\Take_home_Exe02\data\geospatial", layer: "MP14_SUBZONE_WEB_PL"
## with 323 features
## It has 15 fields
mpsz
## class       : SpatialPolygonsDataFrame 
## features    : 323 
## extent      : 2667.538, 56396.44, 15748.72, 50256.33  (xmin, xmax, ymin, ymax)
## crs         : +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 
## variables   : 15
## names       : OBJECTID, SUBZONE_NO, SUBZONE_N, SUBZONE_C, CA_IND, PLN_AREA_N, PLN_AREA_C,       REGION_N, REGION_C,          INC_CRC, FMEL_UPD_D,     X_ADDR,     Y_ADDR,    SHAPE_Leng,    SHAPE_Area 
## min values  :        1,          1, ADMIRALTY,    AMSZ01,      N, ANG MO KIO,         AM, CENTRAL REGION,       CR, 00F5E30B5C9B7AD8, 2014/12/05,  5092.8949,  19579.069, 871.554887798, 39437.9352703 
## max values  :      323,         17,    YUNNAN,    YSSZ09,      Y,     YISHUN,         YS,    WEST REGION,       WR, FFCCF172717C2EAF, 2014/12/05, 50424.7923, 49552.7904, 68083.9364708,  69748298.792

Import listings data set and named it as airbnb.

airbnb <- read_csv("data/aspatial/listings.csv")

After looking through the details of the data set, the coords of the data set is in longitude and latitude format. One key point to take note is the CRS of the langitude and latitude. It should be in WGS84 (EPSG:4326).

Commonly used by organizations that provide GIS data for the entire globe or many countries. CRS used by Google Earth.

airbnb_sf <- st_as_sf(airbnb, coords = c("longitude","latitude"), crs = 4326)

By using function st_transform, we are able to convert the longitude and latitude to XY coords by defining the EPSG as 3414 (SV21).

airbnb_sf <-st_transform(airbnb_sf, CRS("+init=epsg:3414"))
airbnb_sf
## Simple feature collection with 7713 features and 14 fields
## geometry type:  POINT
## dimension:      XY
## bbox:           xmin: 7215.566 ymin: 25166.35 xmax: 43401.32 ymax: 48466.72
## epsg (SRID):    NA
## proj4string:    +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs
## # A tibble: 7,713 x 15
##        id name  host_id host_name neighbourhood_g~ neighbourhood room_type price
##     <dbl> <chr>   <dbl> <chr>     <chr>            <chr>         <chr>     <dbl>
##  1  49091 "COZ~  266763 Francesca North Region     Woodlands     Private ~    87
##  2  50646 "Ple~  227796 Sujatha   Central Region   Bukit Timah   Private ~    80
##  3  56334 "COZ~  266763 Francesca North Region     Woodlands     Private ~    72
##  4  71609 "Ens~  367042 Belinda   East Region      Tampines      Private ~   214
##  5  71896 "B&B~  367042 Belinda   East Region      Tampines      Private ~    99
##  6  71903 "Roo~  367042 Belinda   East Region      Tampines      Private ~   109
##  7  71907 "3rd~  367042 Belinda   East Region      Tampines      Private ~   217
##  8 117957 "Pri~  448620 Lynnity   North-East Regi~ Sengkang      Private ~    67
##  9 241503 "Lon~ 1017645 Bianca    East Region      Bedok         Private ~    52
## 10 241508 "Lon~ 1017645 Bianca    East Region      Bedok         Private ~    54
## # ... with 7,703 more rows, and 7 more variables: minimum_nights <dbl>,
## #   number_of_reviews <dbl>, last_review <date>, reviews_per_month <dbl>,
## #   calculated_host_listings_count <dbl>, availability_365 <dbl>,
## #   geometry <POINT [m]>

Removing those irrelevant column and only keep the room_type column.

airbnb_sf <- subset(airbnb_sf, select = -c(name, host_id,host_name,neighbourhood_group,price,minimum_nights,number_of_reviews,last_review,reviews_per_month, calculated_host_listings_count,availability_365,id,neighbourhood))

Filter room_type by Private room.

private <- airbnb_sf %>%
  filter(room_type == "Private room")

Filter room_type by Hotel room.

Hotel <- airbnb_sf %>%
  filter(room_type == "Hotel room")

Filter room_type by Shared room.

Shared <- airbnb_sf %>%
  filter(room_type == "Shared room") 

Filter room_type by Entire home/apt

Entire <- airbnb_sf %>%
  filter(room_type == "Entire home/apt")

Convert private to Spatialpoints format which only left the coords without any other information.

private_sp <- as(private, "Spatial")
private_sp <- as(private_sp, "SpatialPoints")

Convert hotel to Spatialpoints format which only left the coords without any other information.

Hotel_sp <- as(Hotel, "Spatial")
Hotel_sp <- as(Hotel_sp, "SpatialPoints")

Convert share to Spatialpoints format which only left the coords without any other information.

Shared_sp <- as(Shared, "Spatial")
Shared_sp <- as(Shared_sp, "SpatialPoints")

Convert entire to Spatialpoints format which only left the coords without any other information.

Entire_sp <- as(Entire, "Spatial")
Entire_sp <- as(Entire_sp, "SpatialPoints")

Converting the data set in to spatstat’s ppp object format.

private_ppp <- as(private_sp,"ppp")
private_ppp_jit <- rjitter(private_ppp, retry=TRUE, nsim=1, drop=TRUE)
entire_ppp <- as(Entire_sp,"ppp")
entire_ppp_jit <- rjitter(entire_ppp, retry=TRUE, nsim=1, drop=TRUE)
hotel_ppp <- as(Hotel_sp,"ppp")
hotel_ppp_jit <- rjitter(hotel_ppp, retry=TRUE, nsim=1, drop=TRUE)
shared_ppp <- as(Shared_sp,"ppp")
shared_ppp_jit <- rjitter(shared_ppp, retry=TRUE, nsim=1, drop=TRUE)

Extract the target planning areas

Lavender <- mpsz[mpsz@data$SUBZONE_N == "LAVENDER",]
Tanjong_Pagar <- mpsz[mpsz@data$SUBZONE_N == "TANJONG PAGAR",]

Converting the spatial point data frame into generic sp format

Lavender_sp <- as(Lavender, "SpatialPolygons")
Tanjong_Pagar_sp <- as(Tanjong_Pagar, "SpatialPolygons")

Creating owin object

Lavender_owin <- as(Lavender_sp, "owin")
Tanjong_Pagar_owin <- as(Tanjong_Pagar_sp, "owin")
private_Lavender_ppp <- private_ppp_jit[Lavender_owin]
shared_Lavender_ppp <- shared_ppp_jit[Lavender_owin]
hotel_Lavender_ppp <- hotel_ppp_jit[Lavender_owin]
entire_Lavender_ppp <- entire_ppp_jit[Lavender_owin]
private_Tanjong_Pagar_ppp <- private_ppp_jit[Tanjong_Pagar_owin]
shared_Tanjong_Pagar_ppp <- shared_ppp_jit[Tanjong_Pagar_owin]
hotel_Tanjong_Pagar_ppp <- hotel_ppp_jit[Tanjong_Pagar_owin]
entire_Tanjong_Pagar_ppp <- entire_ppp_jit[Tanjong_Pagar_owin]

10 Lavender Kernel Density Maps

10.1.1 Lavender kernel density maps for Private

Computing KDE

kde_private_Lavender_bw <- density(private_Lavender_ppp , sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_private_Lavender_bw)

WARNNING: The land area of Lavender is very small approximately 1km2. Therefore, we cannot rescale the size by 1000. An ideal rescale size would be 100m.

private_Lavender_ppp.100m <- rescale(private_Lavender_ppp, 100, "m")
kde_private_Lavender.bw <- density(private_Lavender_ppp.100m, sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_private_Lavender.bw)

gridded_kde_private_Lavender_bw <- as.SpatialGridDataFrame.im(rescale(kde_private_Lavender.bw, 1/100,"m"))
spplot(gridded_kde_private_Lavender_bw)

kde_private_Lavender_bw_raster <- raster(gridded_kde_private_Lavender_bw)
kde_private_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : NA 
## source     : memory
## names      : v 
## values     : -6.352857e-16, 31.49338  (min, max)
projection(kde_private_Lavender_bw_raster) <- CRS("+init=EPSG:3414")
kde_private_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : +init=EPSG:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs 
## source     : memory
## names      : v 
## values     : -6.352857e-16, 31.49338  (min, max)
tmap_mode('view')
## tmap mode set to interactive viewing

10.1.2 Kernel density maps on openstreetmap of Singapore for Private

tm_shape(kde_private_Lavender_bw_raster) +
  tm_raster("v", breaks = c(0,5,10,15,20,25,30,35,40,45,50),alpha = 0.7) +
  tm_layout(legend.position = c("right", "bottom"), frame = FALSE)+
  tm_shape(mpsz)+
  tm_polygons(alpha = 0)
tmap_mode('plot')
## tmap mode set to plotting

10.2.1 Lavender kernel density maps for Shared

Computing KDE

kde_share_Lavender_bw <- density(shared_Lavender_ppp  , sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_share_Lavender_bw)

WARNNING: The land area of Lavender is very small approximately 1km2. Therefore, we cannot rescale the size by 1000. An ideal rescale size would be 100m.

share_Lavender_ppp.100m <- rescale(shared_Lavender_ppp, 100, "m")
kde_share_Lavender.bw <- density(share_Lavender_ppp.100m, sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_share_Lavender.bw)

gridded_kde_share_Lavender_bw <- as.SpatialGridDataFrame.im(rescale(kde_share_Lavender.bw, 1/100,"m"))
spplot(gridded_kde_share_Lavender_bw)

kde_share_Lavender_bw_raster <- raster(gridded_kde_share_Lavender_bw)
kde_share_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : NA 
## source     : memory
## names      : v 
## values     : 5.823105e-07, 3.211342  (min, max)
projection(kde_share_Lavender_bw_raster) <- CRS("+init=EPSG:3414")
kde_share_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : +init=EPSG:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs 
## source     : memory
## names      : v 
## values     : 5.823105e-07, 3.211342  (min, max)
tmap_mode('view')
## tmap mode set to interactive viewing

10.2.2 Kernel density maps on openstreetmap of Singapore for Shared

tm_shape(kde_share_Lavender_bw_raster) +
  tm_raster("v",alpha = 0.7) +
  tm_layout(legend.position = c("right", "bottom"), frame = FALSE)+
  tm_shape(mpsz)+
  tm_polygons(alpha = 0)
tmap_mode('plot')
## tmap mode set to plotting

10.3.1 Lavender kernel density maps for Hotel

Computing KDE

kde_hotel_Lavender_bw <- density(hotel_Lavender_ppp , sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_hotel_Lavender_bw)

WARNNING: The land area of Lavender is very small approximately 1km2. Therefore, we cannot rescale the size by 1000. An ideal rescale size would be 100m.

hotel_Lavender_ppp.100m <- rescale(hotel_Lavender_ppp, 100, "m")
kde_hotel_Lavender.bw <- density(hotel_Lavender_ppp.100m, sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_hotel_Lavender.bw)

gridded_kde_hotel_Lavender_bw <- as.SpatialGridDataFrame.im(rescale(kde_hotel_Lavender.bw, 1/100,"m"))
spplot(gridded_kde_hotel_Lavender_bw)

kde_hotel_Lavender_bw_raster <- raster(gridded_kde_hotel_Lavender_bw)
kde_hotel_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : NA 
## source     : memory
## names      : v 
## values     : 9.794041e-13, 2.879695  (min, max)
projection(kde_hotel_Lavender_bw_raster) <- CRS("+init=EPSG:3414")
kde_hotel_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : +init=EPSG:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs 
## source     : memory
## names      : v 
## values     : 9.794041e-13, 2.879695  (min, max)
tmap_mode('view')
## tmap mode set to interactive viewing

10.3.2 Kernel density maps on openstreetmap of Singapore for hotel

tm_shape(kde_hotel_Lavender_bw_raster) +
  tm_raster("v",alpha = 0.7) +
  tm_layout(legend.position = c("right", "bottom"), frame = FALSE)+
  tm_shape(mpsz)+
  tm_polygons(alpha = 0)
tmap_mode('plot')
## tmap mode set to plotting

10.4.1 Lavender kernel density maps for Entire

Computing KDE

kde_entire_Lavender_bw <- density(entire_Lavender_ppp , sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_entire_Lavender_bw)

WARNNING: The land area of Lavender is very small approximately 1km2. Therefore, we cannot rescale the size by 1000. An ideal rescale size would be 100m.

entire_Lavender_ppp.100m <- rescale(entire_Lavender_ppp, 100, "m")
kde_entire_Lavender.bw <- density(entire_Lavender_ppp.100m, sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_entire_Lavender.bw)

gridded_kde_entire_Lavender_bw <- as.SpatialGridDataFrame.im(rescale(kde_entire_Lavender.bw, 1/100,"m"))
spplot(gridded_kde_entire_Lavender_bw)

kde_entire_Lavender_bw_raster <- raster(gridded_kde_entire_Lavender_bw)
kde_entire_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : NA 
## source     : memory
## names      : v 
## values     : 1.455076e-10, 7.290718  (min, max)
projection(kde_entire_Lavender_bw_raster) <- CRS("+init=EPSG:3414")
kde_entire_Lavender_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 8.682154, 9.355564  (x, y)
## extent     : 30342.65, 31453.96, 32035.6, 33233.11  (xmin, xmax, ymin, ymax)
## crs        : +init=EPSG:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs 
## source     : memory
## names      : v 
## values     : 1.455076e-10, 7.290718  (min, max)
tmap_mode('view')
## tmap mode set to interactive viewing

10.4.2 Kernel density maps on openstreetmap of Singapore for Entire

tm_shape(kde_entire_Lavender_bw_raster) +
  tm_raster("v",alpha = 0.7) +
  tm_layout(legend.position = c("right", "bottom"), frame = FALSE)+
  tm_shape(mpsz)+
  tm_polygons(alpha = 0)
tmap_mode('plot')
## tmap mode set to plotting

10.5 Possible factors determine the spatial patterns

Lavender is a very old town area in Singapore and the size of the area are relavately small. In addition, the residence population are very stable and there are not much listings in the airbnb listing. Since the location is very near to the town, therefore more private and entire room in the listing compare to hotel and sharing.

11. Tanjong Pagar Kernel Density Maps

11.1.1 Tanjong Pagar kernel density maps for Private

Computing KDE

kde_private_Tanjong_Pagar_bw <- density(private_Tanjong_Pagar_ppp  , sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_private_Tanjong_Pagar_bw)

WARNNING: The land area of Tanjong Pagar is very small approximately 0.2km2. Therefore, we cannot rescale the size by 1000. An ideal rescale size would be 100m.

private_Tanjong_Pagar_ppp.100m <- rescale(private_Tanjong_Pagar_ppp, 100, "m")
kde_private_Tanjong_Pagar.bw <- density(private_Tanjong_Pagar_ppp.100m, sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_private_Tanjong_Pagar.bw)

gridded_kde_private_Tanjong_Pagar_bw <- as.SpatialGridDataFrame.im(rescale(kde_private_Tanjong_Pagar.bw, 1/100,"m"))
spplot(gridded_kde_private_Tanjong_Pagar_bw)

kde_private_Tanjong_Pagar_bw_raster <- raster(gridded_kde_private_Tanjong_Pagar_bw)
kde_private_Tanjong_Pagar_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 3.758669, 4.986962  (x, y)
## extent     : 29169.13, 29650.24, 28430.25, 29068.58  (xmin, xmax, ymin, ymax)
## crs        : NA 
## source     : memory
## names      : v 
## values     : 1.630879e-09, 7.352955  (min, max)
projection(kde_private_Tanjong_Pagar_bw_raster) <- CRS("+init=EPSG:3414")
kde_private_Tanjong_Pagar_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 3.758669, 4.986962  (x, y)
## extent     : 29169.13, 29650.24, 28430.25, 29068.58  (xmin, xmax, ymin, ymax)
## crs        : +init=EPSG:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs 
## source     : memory
## names      : v 
## values     : 1.630879e-09, 7.352955  (min, max)
tmap_mode('view')
## tmap mode set to interactive viewing

11.1.2 Kernel density maps on openstreetmap of Singapore for Private

tm_shape(kde_private_Tanjong_Pagar_bw_raster) +
  tm_raster("v",alpha = 0.7) +
  tm_layout(legend.position = c("right", "bottom"), frame = FALSE)+
  tm_shape(mpsz)+
  tm_polygons(alpha = 0)
tmap_mode('plot')
## tmap mode set to plotting

11.2.1 Tanjong Pagar kernel density maps for Hotel

Computing KDE

kde_hotel_Tanjong_Pagar_bw <- density(hotel_Tanjong_Pagar_ppp  , sigma=bw.diggle, edge=TRUE, kernel="gaussian")
## Warning: Berman-Diggle Cross-Validation criterion was optimised at right-hand
## end of interval [0, 30]; use argument 'hmax' to specify a wider interval for
## bandwidth 'sigma'
plot(kde_hotel_Tanjong_Pagar_bw)

WARNNING: The land area of Tanjong Pagar is very small approximately 0.2km2. Therefore, we cannot rescale the size by 1000. An ideal rescale size would be 100m.

hotel_Tanjong_Pagar_ppp.100m <- rescale(hotel_Tanjong_Pagar_ppp, 100, "m")
kde_hotel_Tanjong_Pagar.bw <- density(hotel_Tanjong_Pagar_ppp.100m, sigma=bw.diggle, edge=TRUE, kernel="gaussian")
## Warning: Berman-Diggle Cross-Validation criterion was optimised at right-hand
## end of interval [0, 0.3]; use argument 'hmax' to specify a wider interval for
## bandwidth 'sigma'
plot(kde_hotel_Tanjong_Pagar.bw)

gridded_kde_hotel_Tanjong_Pagar_bw <- as.SpatialGridDataFrame.im(rescale(kde_hotel_Tanjong_Pagar.bw, 1/100,"m"))
spplot(gridded_kde_hotel_Tanjong_Pagar_bw)

kde_hotel_Tanjong_Pagar_bw_raster <- raster(gridded_kde_hotel_Tanjong_Pagar_bw)
kde_hotel_Tanjong_Pagar_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 3.758669, 4.986962  (x, y)
## extent     : 29169.13, 29650.24, 28430.25, 29068.58  (xmin, xmax, ymin, ymax)
## crs        : NA 
## source     : memory
## names      : v 
## values     : -2.026363e-16, 1.780085  (min, max)
projection(kde_hotel_Tanjong_Pagar_bw_raster) <- CRS("+init=EPSG:3414")
kde_hotel_Tanjong_Pagar_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 3.758669, 4.986962  (x, y)
## extent     : 29169.13, 29650.24, 28430.25, 29068.58  (xmin, xmax, ymin, ymax)
## crs        : +init=EPSG:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs 
## source     : memory
## names      : v 
## values     : -2.026363e-16, 1.780085  (min, max)
tmap_mode('view')
## tmap mode set to interactive viewing

11.2.2 Kernel density maps on openstreetmap of Singapore for hotel

tm_shape(kde_hotel_Tanjong_Pagar_bw_raster) +
  tm_raster("v",alpha = 0.7) +
  tm_layout(legend.position = c("right", "bottom"), frame = FALSE)+
  tm_shape(mpsz)+
  tm_polygons(alpha = 0)
tmap_mode('plot')
## tmap mode set to plotting

11.3.1 Tanjong Pagar kernel density maps for Entire

Computing KDE

kde_entire_Tanjong_Pagar_bw <- density(entire_Tanjong_Pagar_ppp  , sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_entire_Tanjong_Pagar_bw)

WARNNING: The land area of Tanjong Pagar is very small approximately 0.2km2. Therefore, we cannot rescale the size by 1000. An ideal rescale size would be 100m.

entire_Tanjong_Pagar_ppp.100m <- rescale(entire_Tanjong_Pagar_ppp, 100, "m")
kde_entire_Tanjong_Pagar.bw <- density(entire_Tanjong_Pagar_ppp.100m, sigma=bw.diggle, edge=TRUE, kernel="gaussian")
plot(kde_entire_Tanjong_Pagar.bw)

gridded_kde_entire_Tanjong_Pagar_bw <- as.SpatialGridDataFrame.im(rescale(kde_entire_Tanjong_Pagar.bw, 1/100,"m"))
spplot(gridded_kde_entire_Tanjong_Pagar_bw)

kde_entire_Tanjong_Pagar_bw_raster <- raster(gridded_kde_entire_Tanjong_Pagar_bw)
kde_entire_Tanjong_Pagar_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 3.758669, 4.986962  (x, y)
## extent     : 29169.13, 29650.24, 28430.25, 29068.58  (xmin, xmax, ymin, ymax)
## crs        : NA 
## source     : memory
## names      : v 
## values     : 6.576149e-10, 49.87469  (min, max)
projection(kde_entire_Tanjong_Pagar_bw_raster) <- CRS("+init=EPSG:3414")
kde_entire_Tanjong_Pagar_bw_raster
## class      : RasterLayer 
## dimensions : 128, 128, 16384  (nrow, ncol, ncell)
## resolution : 3.758669, 4.986962  (x, y)
## extent     : 29169.13, 29650.24, 28430.25, 29068.58  (xmin, xmax, ymin, ymax)
## crs        : +init=EPSG:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs 
## source     : memory
## names      : v 
## values     : 6.576149e-10, 49.87469  (min, max)
tmap_mode('view')
## tmap mode set to interactive viewing

11.3.2 Kernel density maps on openstreetmap of Singapore for Entire

tm_shape(kde_entire_Tanjong_Pagar_bw_raster) +
  tm_raster("v", breaks = c(0,5,10,15,20,25,30,35,40),alpha = 0.7) +
  tm_layout(legend.position = c("right", "bottom"), frame = FALSE)+
  tm_shape(mpsz)+
  tm_polygons(alpha = 0)
tmap_mode('plot')
## tmap mode set to plotting

11.4 Possible factors determine the spatial patterns

The size Tanjong Pagar areas are very small and the property price are relatively high as the location of the Tanjong Pagar is very near to CBD areas. Therefore, it attract a lot of working adults to rent long term houses around the area. Since the area of Tanjong Pagar are very small, therefore all the residence building tend to cluster within the same area.