資料來源:疾管署資料、觀測資料查詢 (CODiS)、AccWeather

dta <- read.csv("data.csv")
names(dta) <- c("Domestic","Oversea","Rainy_Taipei","Highest_Temperature_Taipei","Lowest_Temperature_Taipei","Date")
head(dta)
##   Domestic Oversea Rainy_Taipei Highest_Temperature_Taipei
## 1       15     124            N                         21
## 2       14     122            Y                         28
## 3       21      82            Y                         25
## 4       83     120            Y                         17
## 5       34      93            Y                         18
## 6       33      63            Y                         24
##   Lowest_Temperature_Taipei Date
## 1                        15  324
## 2                        19  325
## 3                        17  326
## 4                        16  327
## 5                        15  328
## 6                        18  329

檢視前六筆資料,且因為資料在呈現時出現了名稱上的呈現問題,因此進行重新命名變項的動作。 各變項命名意義: Domestic:本土案例 Oversea:海外案例 Rainy_Taipei:台北當日下雨與否 Highest Temperature _Taipei:台北當日最高溫 Lowest Temperature _Taipei:台北當日最低溫 Date:日期

str(dta)
## 'data.frame':    20 obs. of  6 variables:
##  $ Domestic                  : int  15 14 21 83 34 33 56 87 104 160 ...
##  $ Oversea                   : int  124 122 82 120 93 63 107 152 132 244 ...
##  $ Rainy_Taipei              : chr  "N" "Y" "Y" "Y" ...
##  $ Highest_Temperature_Taipei: int  21 28 25 17 18 24 26 23 17 15 ...
##  $ Lowest_Temperature_Taipei : int  15 19 17 16 15 18 21 17 15 13 ...
##  $ Date                      : int  324 325 326 327 328 329 330 331 401 402 ...

看資料結構是否相符

dta$Rainy_Taipei <- as.factor(dta$Rainy_Taipei)

把類別變項轉成factor

summary(dta)
##     Domestic        Oversea      Rainy_Taipei Highest_Temperature_Taipei
##  Min.   : 14.0   Min.   : 63.0   N: 9         Min.   :15.00             
##  1st Qu.: 50.5   1st Qu.: 96.0   Y:11         1st Qu.:20.25             
##  Median :146.5   Median :122.5                Median :24.00             
##  Mean   :202.4   Mean   :123.8                Mean   :23.45             
##  3rd Qu.:382.5   3rd Qu.:142.5                3rd Qu.:26.50             
##  Max.   :551.0   Max.   :244.0                Max.   :31.00             
##  Lowest_Temperature_Taipei      Date      
##  Min.   :13.00             Min.   :324.0  
##  1st Qu.:15.75             1st Qu.:328.8  
##  Median :18.00             Median :402.5  
##  Mean   :18.00             Mean   :374.9  
##  3rd Qu.:20.00             3rd Qu.:407.2  
##  Max.   :23.00             Max.   :412.0

大致看一下資料的相關訊息

prop.table(table(dta$Rainy_Taipei))
## 
##    N    Y 
## 0.45 0.55

觀看於類別變項中的下雨與否的部分中,下雨與沒有下雨的比例為何,我們可以看見於2022/3/24~2022/4/12的期間中,沒有下雨的日子稍微比下雨的日子來的多一點。

ggplot(aes(y = Oversea, x = Domestic, color = Rainy_Taipei), data = dta) +
  geom_point() +
  geom_smooth(method = lm, se = F) + 
  theme_bw()
## `geom_smooth()` using formula 'y ~ x'

看資料之間的作圖與線性關係,我們可以看見其圖形相當的分散且點皆與所呈現出的線相差甚遠。所以我們可以猜測台北下雨與否這個變項也許與確診案例並沒有太大的關係,但這只是初步猜測,我們仍需要進行後續分析才得以下結論。

cvmod <- lm(Domestic ~ Oversea + Rainy_Taipei + Highest_Temperature_Taipei + Lowest_Temperature_Taipei , data = dta)
summary(cvmod)
## 
## Call:
## lm(formula = Domestic ~ Oversea + Rainy_Taipei + Highest_Temperature_Taipei + 
##     Lowest_Temperature_Taipei, data = dta)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -270.01  -79.07   -0.27   95.69  211.34 
## 
## Coefficients:
##                             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)                -543.7402   269.5071  -2.018   0.0619 .
## Oversea                       1.0807     0.7845   1.378   0.1885  
## Rainy_TaipeiY               -52.1254    75.6127  -0.689   0.5011  
## Highest_Temperature_Taipei   -4.5709    16.7293  -0.273   0.7884  
## Lowest_Temperature_Taipei    41.5696    25.2539   1.646   0.1205  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 136.2 on 15 degrees of freedom
## Multiple R-squared:  0.5245, Adjusted R-squared:  0.3977 
## F-statistic: 4.136 on 4 and 15 DF,  p-value: 0.01871

從上述結果,我們可以得出一個迴歸公式: 本土案例=-543.7402+1.0807Oversea -52.1254Rainy_TaipeiY-4.5709Highest_Temperature_Taipei+41.5696Lowest_Temperature_Taipei+136.2
從公式我們可以看見截距為-543.7402,表示本土案例的平均數為-543.7402。代表本土確診數最少從-543.7402開始,這個結果並不合理,而同時我們也可以從資料中看到此截距的統計檢定並沒有達顯著,其t值為-2.018(小於1.96),且其p值為0.0619(大於0.05),因此我們並不能以上述說的結果作為結論。 而Oversea的beta估計值為1.08,雖然看起來為正相關,但是因為其t值為1.378(小於1.96),且p值為0.1885(大於0.05),所以我們可以說此結果無法推翻虛無假設(beta為0)。也就是說,從這個結果來看,我們可以說本土案例與海外案例的關係沒有達到顯著水準,所以海外確診案例並不是本土案例的有效預測變項。
在Rainy_TaipeiY ,其beta值為-52.1254 ,也就是說在下雨天的資料中,有下雨的確診平均數比沒有下雨的確診平均數小了52.1254,但因為此統計檢定的結果,t值為-0.689(小於1.96),其p值為0.5011(大於0.05),表示兩者的平均數的差異並沒有達到顯著水準,因此我們並不能推翻虛無假設,也就是說,台北下雨與否對本土確診人數並沒有顯著的影響(並不是一個很好的預測變項)。
在Highest_Temperature_Taipei,也就是台北單日最高溫度的部分,我們可以看見其beta值為-4.5709,呈現負相關。但因為其t值為-0.273(小於1.96),且p值為0.7884(大於0.05),無法推翻推翻虛無假設(beta為0)。也就是說台北單日最高溫與本土確診人數之間的關係沒有達到顯著水準(台北單日最高溫並不是本土案例的有效預測變項)。
在Lowest_Temperature_Taipei(台北單日最低溫),我們可以看見其beta值為41.5696,呈現正相關。但因為其t值為1.646(小於1.96),且p值為0.1205(大於0.05),無法推翻推翻虛無假設(beta為0)。也就是說台北單日最低溫與本土確診人數之間的關係沒有達到顯著水準(台北單日最高溫並不是本土案例的有效預測變項)。
而從R平方值的部份(R-squared=0.5245)我們也可以做出這個model僅能對結果做出52.45%的變異解釋,也就是說,海外案例與台北下雨與否以及台北單日最高溫與最低溫,僅能夠解釋本土案例的52.45%變異。
同樣的我們也可以從公式中看見,在此一模型中當海外案例提高1時,本土案例將提高1.0807;當台北最高溫提高1時,本土案例將降低4.5709;當台北最低溫提高1時,本土案例將提高41.5696。但因為這些迴歸係數皆未達顯著,所以其時上述這些結論並沒有實質上的意義。

Diagnostic

接下來將以下方的圖形來進行資料的常態性觀察

hist( x = residuals(cvmod),
      xlab = "Value of residual",
      main = "",
      breaks = 20)

從這張圖中可以看見殘差不為常態分佈,而且應該有outliers

plot(cvmod, which  = 1)

此圖中的紅色線很不平,而且不接近0,表示此模式並不能很好的預測依變項。

plot(cvmod, which = 2)

plot(cvmod, which = 3)

library(car)
residualPlots(cvmod)

##                            Test stat Pr(>|Test stat|)
## Oversea                       0.0503           0.9606
## Rainy_Taipei                                         
## Highest_Temperature_Taipei    1.5998           0.1320
## Lowest_Temperature_Taipei     1.5290           0.1485
## Tukey test                    0.9383           0.3481

從上面這些圖中,我們可以驗證出我們的殘差基本上並沒有服從常態分佈。而且同時我們也可以看見在圖中的紅色虛線並沒有成水平線,且沒有貼近0,也就是說依變項中還是有變異不能被這個model所解釋。