聯合國政府間氣候變遷專門委員會第五次報告(IPCC AR5)中指出,全球暖化的增溫效應將會大幅加劇未來氣候情境中,極端氣候出現的頻率及強度。因此,聯合國多次呼籲各國政府,一方面要持續減少溫室氣體排放,以減緩(mitigation)全球增溫;另一方面則應針 對氣候變遷下各類的衝擊,積極採取適當的調適作為(adaptation)。
2015年的聯合國永續發展大會訂定了永續發展目標(以下簡稱 SDGs),其中第13項為「氣候行動:對氣候變遷及其影響採取緊急行動。」(Climate Action:Take urgent action to combat climate change and its impacts. )而在氣候變遷的減緩作為中,主要目標為減少各國的二氧化碳(CO2)的排放量,其中最大宗的排碳類別為能源及石化產業(CAIT, 2017)。
臺灣也在2016年聯合國《氣候變化綱要公約》第21屆締約國大會(UNFCCC COP21)時,提交了我國的國家自定預期貢獻(NDC)。接續在民進黨政府執政後的非核家園承諾下,核電廠將陸續除役,但再生能源發電比例還來不及跟上的情況下,必然出現能源缺口及限電危機。所以氣候變遷減緩,不只是減少碳排量,而是台灣能源轉型的契機及挑戰。
台灣大學2016年的電費高達四億六千萬元,約等於一億四千萬度電,不但對學校是沉重的開銷,超爆高的用電量也直接貢獻在全球暖化的進程上。一群自發性的台大學生試圖貢獻所長,透過成立學生會永續部及發起校園節電專案,期待達到永續校園的理想。
而節電專案推行期間,專案成員也修習相關課程。本報告將以資校科學程式設計課程目標為經,校園節電專案為緯。透過結合課堂所學的R語言統計應用,分析台大校園內不同類型的建物耗能情形,進而提出我們所觀察到的現象及建議。
台灣現今普遍的建築物耗能標準以「用電強度(Energy Usage Intensity, EUI)」來表示,它是由建築物總用電量除以建築樓地板面積的用電數據來計算。但相較於校園的空間使用方式,涵蓋了更多更複雜的層面。包含了電費繳交的制度、被電費綁架的節電政策、校園建物歷史脈絡及設備汰換的時序差異,或是建物當中的空間權力分配跨院系所等。
其中我們想依據經濟部能源局2015年發行的《綠建築評估手冊:基本型》中,依據分辨照明密度、人員密度、電器設備密度之差異,包含空調、照明、插座用電之耗能量計算的空間分類方式,對應到台大校園中的同類型建築,挑出耗能超過官方建議EUI標準的建物更進一步探討及分析其用電情形。
我們參考上述官方分類,將選定的校內建物歸為以下五類:
| 代碼 | K1 | K2 | K3 | K5 | I9 |
|---|---|---|---|---|---|
| 類別 | 辦公類空間 | 圖書館 | 學校教室與辦公行政 | 工廠實驗、研究室 | 體育館、運動場館空間 |
| 說明 | 辦公、會議、行政、視聽、研究、實驗相關空間及其附屬大廳與室內公共空間 | 含閱讀區、書庫區及其附屬大廳與室內公共空間 | 普通教室、專科教室、視聽教室、學校辦公行政區 | 研發空間及其附屬大廳與室內公共空間 | 健身房、舞蹈室、室內球場、保齡球道、運動練習室、運動俱樂部、室內游泳池、含附屬空間 |
| 建物 | 行政大樓 | 總圖書館 | 新生教學館、普通教學館、博雅教學館、共同教學館 | 凝態館、原分所 | 新體育館、舊體育館 |
| EUI標準 | 120 | 111 | 135 | 162 | 125 |
單位:度/(平方米 · 年)
動態EUI指標中規定了不同空間每年單位面積的耗能標準,計算公式如下:
我們將按照相同的方式計算台大校園內不同建物不同年份的EUI指標,并將其與官方的EUI指標進行對比,從而得到台大有哪些建築物的用電量超過了能源局的能耗標準,又有哪些建築物的能耗在規定之內。并對超過能耗標準的建築進行進一步的資料分析,試圖尋求是哪些因素導致了這些建物超過了EUI標準耗能,他們之間有沒有什麼共同之處,有沒有什麼辦法可以減少這些建物的能耗。
我們使用台大總務處校園數位電錶監視系統(http://140.112.166.97/power/index.aspx) 中的電力資料。但因為資料儲存的單位為單一電錶,所以會發生同一建物中有多個電錶的情形,以下說明資料處理的方法。
依據前述抓取十棟建築物之下的電錶資料,包含行政大樓(為口字型建築,一、二合併計算)、總圖書館、四大教學館(新生、普通、博雅、共同)、凝態館、原分所、新體育館和舊體育館。建物和電錶的關係可分為以下幾種型態:
在清理資料時發現因為用電度數(用電量)是電錶數值的差:今天電錶數值 - 昨天電錶數值=今日用電度數,所以當電錶數值達到上限歸零重新計算之後,用電度數就會出現極大的負值。如上圖所示 2016/9/5 新體育館的用電度數是 -983589.07,實際上應該是1000000(電錶上限值)- 989071.75 + 5482.68=16410.93。簡單說新體的電錶上限是1000000,下一個值會從1重新開始,所以才會出現用電量是負值的現象。解決的方式可以是遇到負值後加上電錶上限,算法是: - 983589.07 + 1000000=16410.93。
但如前所述,並不是每棟建築都只有單一電錶,所以會產生多個電錶在不同時間點發生負值的現象。另外像是行政大樓歷經多次整修,所以總共有14個電錶,而電錶的上限值因為廠牌型號的不同而不同,例如:2016/11/10 行政大樓就出現 -53659.16的值。此部分的處理方式為詢問總務處後做人工修正再彙整建物用電資料。
在資料清理的過程中也發現一些奇怪的缺失值,在經過訪談資料收集後整理如下:
library(stringi)
library(ggplot2)
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
# 清資料:c_year
c1 <- read.csv("combine_v2.csv", header = T,fileEncoding='big5')
c1$EUI <- c1$kwh/c1$m.2
c_year <- aggregate(.~year+building, data = c1[,c(1,4,7,8)], FUN = sum)
c_year$year <- as.character(c_year$year)
c_year$EUIType <- c(rep('K3',times=6), rep('K1',times=3),
rep('I9',times=3), rep('K5',times=3),
rep('K3',times=6), rep('I9',times=3),
rep('K5',times=3), rep('K2',times=3))
c_year$EUI_Standard <- c(rep(135,times=6), rep(120,times=3),
rep(125,times=3), rep(162,times=3),
rep(135,times=6), rep(125,times=3),
rep(162,times=3), rep(111,times=3))
# 原始折線圖
p_EUIall <- plot_ly(c_year, x=~year, y=~EUI, color=~building)%>%
add_lines(yaxis = list(range = c(0,1500)))%>%
layout(title = "依據EUI畫出不同棟的折線圖")
p_kwhAll <- plot_ly(c_year, x=~year, y=~kwh, color=~building) %>%
add_lines(yaxis = list(range = c(0,1500)))%>%
layout(title = "依據kwh畫出不同棟的折線圖")
class_name <- c("K1", "K2", "K3", "K5", "I9")
class_list <- list()
plot_class_list <- list()
for (i in 1:5) {
class_list[[i]] <- rbind(filter(c_year, EUIType == class_name[i]), filter(c_year, EUIType == class_name[i]))
class_list[[i]] <- as.matrix(class_list[[i]])
class_list[[i]][4:6, 2] <- rep(class_list[[i]][1, 5], 3)
class_list[[i]][4:6, 4] <- rep(class_list[[i]][1, 6], 3)
class_list[[i]] <- as.data.frame(class_list[[i]])
plot_class_list[[i]] <- plot_ly(class_list[[i]], x=~year, y=~EUI, color=~building)%>%
add_lines(yaxis = list(range = c(0,150)))
}
# 所需要的資料表
class_list
## [[1]]
## year building kwh EUI EUIType EUI_Standard
## 1 2014 舊體育館 177081.0 41.94938 K1 120
## 2 2015 舊體育館 173536.8 41.10977 K1 120
## 3 2016 舊體育館 183510.2 43.47241 K1 120
## 4 2014 K1 177081.0 120 K1 120
## 5 2015 K1 173536.8 120 K1 120
## 6 2016 K1 183510.2 120 K1 120
##
## [[2]]
## year building kwh EUI EUIType EUI_Standard
## 1 2014 總圖書館 6632507 187.7556 K2 111
## 2 2015 總圖書館 7281557 206.1291 K2 111
## 3 2016 總圖書館 7430281 210.3393 K2 111
## 4 2014 K2 6632507 111 K2 111
## 5 2015 K2 7281557 111 K2 111
## 6 2016 K2 7430281 111 K2 111
##
## [[3]]
## year building kwh EUI EUIType EUI_Standard
## 1 2014 博雅教學館 1048099.1 96.42126 K3 135
## 2 2015 博雅教學館 1087473.8 100.04359 K3 135
## 3 2016 博雅教學館 1154629.0 106.22162 K3 135
## 4 2014 K3 353466.6 135 K3 135
## 5 2015 K3 340639.2 135 K3 135
## 6 2016 K3 339055.5 135 K3 135
## 7 2014 新生教學館 326346.9 62.74755 K3 135
## 8 2015 新生教學館 334941.0 64.39997 K3 135
## 9 2016 新生教學館 341472.8 65.65585 K3 135
## 10 2014 新體育館 4290991.6 1016.50950 K3 135
## 11 2015 新體育館 4225600.2 1001.01869 K3 135
## 12 2016 新體育館 4274204.9 1012.53284 K3 135
## 13 2014 博雅教學館 1048099.1 96.42126 K3 135
## 14 2015 博雅教學館 1087473.8 100.04359 K3 135
## 15 2016 博雅教學館 1154629.0 106.22162 K3 135
## 16 2014 共同教學館 353466.6 64.73083 K3 135
## 17 2015 共同教學館 340639.2 62.38173 K3 135
## 18 2016 共同教學館 339055.5 62.09170 K3 135
## 19 2014 新生教學館 326346.9 62.74755 K3 135
## 20 2015 新生教學館 334941.0 64.39997 K3 135
## 21 2016 新生教學館 341472.8 65.65585 K3 135
## 22 2014 新體育館 4290991.6 1016.50950 K3 135
## 23 2015 新體育館 4225600.2 1001.01869 K3 135
## 24 2016 新體育館 4274204.9 1012.53284 K3 135
##
## [[4]]
## year building kwh EUI EUIType EUI_Standard
## 1 2014 普通教學館 445259.7 50.64700 K5 162
## 2 2015 普通教學館 442959.3 50.38534 K5 162
## 3 2016 普通教學館 466363.1 53.04745 K5 162
## 4 2014 K5 3967932.0 162 K5 162
## 5 2015 K5 4599438.8 162 K5 162
## 6 2016 K5 4395009.2 162 K5 162
## 7 2014 普通教學館 445259.7 50.64700 K5 162
## 8 2015 普通教學館 442959.3 50.38534 K5 162
## 9 2016 普通教學館 466363.1 53.04745 K5 162
## 10 2014 原分所 3967932.0 1166.73341 K5 162
## 11 2015 原分所 4599438.8 1352.42209 K5 162
## 12 2016 原分所 4395009.2 1292.31149 K5 162
##
## [[5]]
## year building kwh EUI EUIType EUI_Standard
## 1 2014 凝態館 7246665.4 275.6221 I9 125
## 2 2015 凝態館 6999179.4 266.2092 I9 125
## 3 2016 凝態館 7076289.4 269.1420 I9 125
## 4 2014 I9 642270.2 125 I9 125
## 5 2015 I9 747614.2 125 I9 125
## 6 2016 I9 758051.0 125 I9 125
## 7 2014 凝態館 7246665.4 275.6221 I9 125
## 8 2015 凝態館 6999179.4 266.2092 I9 125
## 9 2016 凝態館 7076289.4 269.1420 I9 125
## 10 2014 行政大樓 642270.2 98.6959 I9 125
## 11 2015 行政大樓 747614.2 114.8838 I9 125
## 12 2016 行政大樓 758051.0 116.4876 I9 125
# 畫出資料表裡的圖片
plot_class_list
## [[1]]
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
##
## [[2]]
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
##
## [[3]]
##
## [[4]]
##
## [[5]]
# 新增每棟大樓資料圖片(取kwh, EUI的平均)
# 製作使用前表格:c_year_mean
building_name <- c("共同教學館", "行政大樓", "原分所", "博雅教學館", "普通教學館", "新生教學館", "新體育館", "凝態館", "總圖書館", "舊體育館")
data2014 <- aggregate(.~month+building+year+EUItype, data = filter(c1, year == 2014)[,c(1, 2, 4, 5 ,7, 8)], FUN = sum)
data2015 <- aggregate(.~month+building+year+EUItype, data = filter(c1, year == 2015)[,c(1, 2, 4, 5 ,7, 8)], FUN = sum)
data2016 <- aggregate(.~month+building+year+EUItype, data = filter(c1, year == 2016)[,c(1, 2, 4, 5 ,7, 8)], FUN = sum)
c_year_mean <- data2014[, c(1,2,4,5,6)]
for(i in 1:120){
c_year_mean[i, 4] <- mean(data2014[i, 5] + data2015[i, 5] + data2016[i, 5])
c_year_mean[i, 5] <- mean(data2014[i, 6] + data2015[i, 6] + data2016[i, 6])
}
c_year_mean[, 1] <- as.character(c_year_mean[, 1])
plot_year_mean <- plot_ly(c_year_mean, x=~month, y=~EUI, color=~building)%>%
add_lines(yaxis = list(range = c(0,1500)))%>%
layout(title = "三年平均月份各個大樓的EUI")
# 所有的圖
p_EUIall
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
p_kwhAll
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
plot_year_mean
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
library(ggplot2)
library(ggmap)
library(mapproj)
NTTUmapll <- as.data.frame(read.csv("fd.csv", fileEncoding='big5'))
NTUmap <- get_map(location = 'taiwan university', zoom = 16, color = "bw", language = "zh-TW")
devtools::install_github("dkahle/ggmap")
devtools::install_github("hadley/ggplot2")
ggmap(NTUmap) +
geom_point(aes(x = lon, y = lat, size = electricity, colour = building, fill = building), data = NTTUmapll) +
scale_size(range = c(0, 10.5))
library(ggplot2)
library(plotly)
data_o <- read.csv("combine_v2.csv",fileEncoding='big5' ,header = T)
data_a <- read.csv("temp_RH.csv",fileEncoding='big5' , header = T)
for(i in 1:10) {
data_o$temp[(1096*(i-1)+1):(1096*i)] <- as.numeric(data_a$temp)
data_o$RH[(1096*(i-1)+1):(1096*i)] <- as.numeric(data_a$RH)
}
wanted_building_name <- c("原分所","新體育館", "凝態館", "總圖書館")
data_w <- filter(data_o, building == wanted_building_name[1]|building == wanted_building_name[2]|building == wanted_building_name[3]|building == wanted_building_name[4])
data_w$quarter <- rep(0, dim(data_w)[1])
data_w$quarter[which(data_w$month == 1|data_w$month == 2|data_w$month == 12)] <- c("Winter")
data_w$quarter[which(data_w$month == 3|data_w$month == 4|data_w$month == 5)] <- c("Spring")
data_w$quarter[which(data_w$month == 6|data_w$month == 7|data_w$month == 8)] <- c("Summer")
data_w$quarter[which(data_w$month == 9|data_w$month == 10|data_w$month == 11)] <- c("Fall")
w_building_temp <- ggplot(data_w, aes(temp, kwh, colour = building))+
layer( geom = "point", stat = "identity", position = "identity", params = list(na.rm = FALSE))+
labs(title = "氣溫與用電量的散佈圖")
每日氣溫與四棟建築物的用電量呈現線性關係,如圖所示。
圖片明顯看出系館的用電量與每日平均氣溫呈現高度正相關性,意即若當日平均溫度越高,系館的用電量會因此增加。
w_building_RH <- ggplot(data_w, aes(RH, kwh, colour = building))+
layer( geom = "point", stat = "identity", position = "identity", params = list(na.rm = FALSE))+
labs(title = "濕度與用電量的散佈圖")
每日相對濕度則與四棟建築物的用電量呈現較低度的線性關係,如圖所示。
圖片較看不出相對濕度與用電量呈現的相關性,或許是因為台北溼度較不受到季節影響,一年四季都處在較潮濕的狀態,因此相對濕度不會是影響用電量的因子之一。
anova(lm(kwh ~ quarter, data = data_w))
將月份分為四季,分類方式大致如下:
觀察季節的分類會不會影響用電量。
如ANOVA分析所示,兩因子呈現高度相關性***。可與上述(一)的分析結果相做結合,每日氣溫會影響用電量,而因四季不同的氣候,也會影響用電量。
anova(lm(kwh ~ EUItype, data = data_w))
根據標題二將建築物分類的方法,透過ANOVA分析不同EUI的類別是否也會影響用電量,而分析結果呈現高度相關性***,說明EUI的類別會影響用電量,例如每日高效率運轉的體育館類型(I9),的確會比辦公類空間(K1)所需的用電量高出許多。