您當前的位置:首頁 > 娛樂

某個城市近70年來的氣溫統計

作者:由 Mr.bin 發表于 娛樂時間:2023-01-27

專案背景

這個專案的資料記錄了一個城市的近70年來的氣溫變化, 降雨量等的記錄,而這個專案是採用R語言作為資料分析工具。 是一個練手的專案,如有錯誤還望大家多多提意見,同時也感謝來自Kaggle提供的原始資料

切入正題

資料的載入, 匯入csv檔案

dataSet<-read。csv(“D:/R/weather_1948-2017/weather_1948-2017。csv”)

檢視資料集合的基本資訊

str(dataSet)

某個城市近70年來的氣溫統計

可以看出共觀測到25551條資料 和5個數據欄位

$ DATE #時間日期

$ PRCP #當天的降水量 以英寸為單位

$ TMAX: #當天的最高氣溫 (華氏攝氏度)

$ TMIN: #當天的最低氣溫 (華氏攝氏度)

$ RAIN: #當天是否降雨 (true/false)

我們來對每年的降雨量進行大致上資料的統計

library(lubridate)

library(sqldf)

dataSet$year <- year(dataSet$DATE)

我們獲取了從1948年到2017年每年的總降水量

yearRain <- sqldf(“select sum(PRCP) as yPRCP, year from dataSet as yPRCP group by year”)

獲取年降雨量的平均值

mean(yearRain$yPRCP)

我們將年降雨量的資料進行歸類

table(cut(yearRain$yPRCP, breaks = c(20, 30, 40, 50, 60)))

某個城市近70年來的氣溫統計

從圖片可以看出年降雨量大部分集中在35~40英寸和40~50英寸2個區間內

現在我們來分析一下年降水量是否近似正態分佈

histRains <- hist(yearRain$yPRCP, ylab = “數量”, xlab = “降水量的區間(英寸)”, main = “降水量的分佈圖”)

xfit <- seq(min(yearRain$yPRCP), max(yearRain$yPRCP), length(70))

yfit <- dnorm(xfit, mean = mean(yearRain$yPRCP), sd = sd(yearRain$yPRCP))

yfit <- yfit * (diff(histRains$mids[1:2])-0。2) * length(yearRain$yPRCP)

lines(xfit, yfit, col = “blue”, lwd = 2)

某個城市近70年來的氣溫統計

可以看出圖上的資料大致上呈正態分佈,說明這個城市70年來的降雨量還是比較正常的

既然已經知道這年降雨量的大致情況 ,那麼我們再進一步的瞭解這一年中的月份的降水量情況

sqldf(“select count(*) from dataSet group by RAIN”)

某個城市近70年來的氣溫統計

可以看出這70年來的降雨的天數與不降雨的天數大致比例是2:3也就是平均一年中大概150天在下雨

dataSet$month <- month(dataSet$DATE)

rainDataSet <- sqldf(“select * from dataSet where RAIN = 1”)

table(rainDataSet$month)

barplot(table(rainDataSet$month))

某個城市近70年來的氣溫統計

可以看出這近70年來每年的降雨量在11, 12, 1,3月份是比較多,而且可以看出這個城市的夏天明顯降雨量是比較少,會比較乾燥

問題1:是不是當月的降水天數越多, 當月降雨天的日降水量就越大

PRCPMax <- sqldf(“select PRCP from rainDataSet where month in (11, 12, 1)”)

nrow(PRCPMax)

table(cut(PRCPMax$PRCPmm, breaks = c(0, 10, 25, 50, 100, 200)))

nrow(PRCPMin)

table(cut(PRCPMin$PRCPmm, breaks = c(0, 10, 25, 50, 100, 200)))

某個城市近70年來的氣溫統計

圖中 PRCPMax是降水天數最多的月份11, 12, 1月份資料集合,PRCPMin是降水天數最少的月份7, 8, 9月份資料集合。可以看出這夏天這3個月的降水天數明顯少很多,也看出夏季日降水量小於25毫米天數比例的確實比冬季高,且降水量在10-25毫米天數比例明顯少於冬季

test1 <- c(PRCPMax$PRCPmm)

test2 <- c(PRCPMin$PRCPm)

wilcox。test(test1, test2, alternative = “greater”)

某個城市近70年來的氣溫統計

透過Wilcoxon秩檢驗我們發現p-value遠小於0。05,的確11, 12, 1月份日降水量的確大於7, 8, 9月份

問題2:降水對溫度是否有影響(我們取1949年-2017年的全部8月份的資料比較,因為夏天氣溫比較高,降雨對氣溫的影響會比較明顯)

rainDataSet$year <- year(rainDataSet$DATE)

PRCPAugust <- rainDataSet[which(rainDataSet$month == “8”), c(“PRCP”, “year”)]

TMAXAugust <- rainDataSet[which(rainDataSet$month == “8”), c(“TMAX”)]

dataSetAugust <- data。frame(PRCPAugust, TMAXAugust)

names(dataSetAugust) <- c(“PRCP”, “year”, “TMAX”)

attach(dataSetAugust)

plot(TMAX ~ PRCP, main=“當天的降雨量與最高溫度的散點圖”, xlab=“降水量(英寸)”, ylab=“最高溫度(華氏度)”)

abline(lm(TMAX ~ PRCP))

summary(lm(TMAX ~ PRCP))

某個城市近70年來的氣溫統計

從圖形上看, 溫度會隨著降水量的增加而下降

某個城市近70年來的氣溫統計

從資料的迴歸分析上看, 引數確實是高度顯著,也就是降雨量與溫度的確存在某種關係。但是我們也應該注意到Multiple R-squared=0。06059,這也說明了降水量和溫度的線性關係並不是很強

問題3:年降水量是不是在逐年增加還是逐年降少

attach(yearRain)

plot(year, yPRCP,)

summary(lm(yPRCP ~ year))

某個城市近70年來的氣溫統計

從散點圖 除了1980-1990這10年的降水量比較少, 基本上其他年份並沒很明顯的變化趨勢

某個城市近70年來的氣溫統計

Q-Q圖可以看其圖形基本上是呈一條直線,這也說明了總體上降水量處於正態分佈,即便是算上降水量比較少的10年,也是在合理的範圍內

問題4:是不是天氣越來越熱了呢(我們獲取沒有無降水天的資料,因為降水可能會降低溫度,影響資料)

unRainDataSet <- sqldf(“select * from dataSet where RAIN = 0”)

PRCPMedian <- sqldf(“select median(TMAX), year from unRainDataSet group by year”)

names(PRCPMedian) <- c(“TMAX”, “year”)

plot(TMAX ~ year, data = PRCPMedian)

某個城市近70年來的氣溫統計

可以看出在2010年前,每年的溫度總體上是比較平衡的趨勢, 在進入2010年後,溫度有一個比較明顯的上升趨勢

PRCPMedian <- PRCPMedian[order(PRCPMedian$TMAX, decreasing = T), c(“TMAX”, “year”)]

row。names(PRCPMedian) <- c(1:70)

某個城市近70年來的氣溫統計

這是我們對每年溫度做一個排名,可以看出在前12名中2010年後的年份佔據了4個,而且溫度最高的年份是2017年和2016年,貌似現在的天氣正變得越來越熱了

最後我們在分析下在過去剛剛結束的2017年裡, 這座城市的氣候狀況

states2017 <- sqldf(“select * from dataSet where date >= ‘2017-01-01’ and date <= ‘2017-12-31’”)

sum(states2017$PRCP)

max(states2017$TMAX)

min(states2017$TMIN)

某個城市近70年來的氣溫統計

可以看出這一年裡的總降水量為43。55英寸(約為1106。17毫米),最高溫度華氏96度(35。5攝氏度),最低溫度是20華氏度(-6。66攝氏度)

wencha <- states2017$TMAX-states2017$TMIN

wencha2017 <- data。frame(c(1:348), wencha)

names(wencha2017) <- c(“day”, “wencha”)

plot(wencha2017$wencha2017 ~ wencha2017$day)

某個城市近70年來的氣溫統計

可以看在橫座標150-275這段時間對應的縱座標比較大,折算一下也就是說從6月到9月這夏季的四個月溫差比較大的

標簽: 降雨量  降水量  溫度  tMax  2017