一、前言

聯合國政府間氣候變遷專門委員會第五次報告(IPCC AR5)中指出,全球暖化的增溫效應將會大幅加劇未來氣候情境中,極端氣候出現的頻率及強度。因此,聯合國多次呼籲各國政府,一方面要持續減少溫室氣體排放,以減緩(mitigation)全球增溫;另一方面則應針 對氣候變遷下各類的衝擊,積極採取適當的調適作為(adaptation)。



(一)永續目標13:氣候行動

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的值。此部分的處理方式為詢問總務處後做人工修正再彙整建物用電資料。



(二)缺失值

在資料清理的過程中也發現一些奇怪的缺失值,在經過訪談資料收集後整理如下:

  • 行政大樓空調分高低壓,高壓缺失值:因行政大樓曾多次修建,加上新舊建物線路配置等歷史因素,所以電錶資料繁複,而高低壓冷氣是東側大樓改建後調整,但因一二樓線路老舊,配給為低壓空調線路,而高壓冷氣的電錶配給至第一行政會議室,使用次數較少才會出現缺失值。
  • 原分所的缺失值:2014/1/1~2014/3/22期間沒有數據資料,因為2014/3/22後原分所才完成智慧電錶的設置。
  • 其他缺失值:舊體健身房的用電度數全部是0,看起來電錶是正常的但沒接通電流,推測可能是斷路(Open circuit)或是回傳Wifi過程中有其他因素影響,例如:跳電之後的訊號缺失或是維修施工暫時關閉之類。

附件程式碼 : 資料清理

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分析

anova(lm(kwh ~ quarter, data = data_w))

將月份分為四季,分類方式大致如下:

  • 3 - 5 月:春季
  • 6 - 8 月:夏季
  • 9 - 11月:秋季
  • 12 - 2 月:冬季

觀察季節的分類會不會影響用電量。

如ANOVA分析所示,兩因子呈現高度相關性***。可與上述(一)的分析結果相做結合,每日氣溫會影響用電量,而因四季不同的氣候,也會影響用電量。



(四)用電量與EUI類別ANOVA分析

anova(lm(kwh ~ EUItype, data = data_w))

根據標題二將建築物分類的方法,透過ANOVA分析不同EUI的類別是否也會影響用電量,而分析結果呈現高度相關性***,說明EUI的類別會影響用電量,例如每日高效率運轉的體育館類型(I9),的確會比辦公類空間(K1)所需的用電量高出許多。