1. Introduction

Scenario

A hospital has recorded daily information about Emergency Department (ED) patient arrivals during 2025. Hospital management wants to understand variation in daily arrivals and identify factors associated with demand.

The dataset contains:

  • Date: date of observation
  • Day: day of week
  • Weekend: 1 = weekend, 0 = weekday
  • Arrivals: number of ED patients
  • Acuity: mean patient acuity score
  • Temp: daily temperature in °C
  • Rain: daily rainfall in mm
  • Holiday: 1 = public holiday, 0 = otherwise
  • AvgWait: average waiting time in minutes
  • Admissions: number of patients admitted

Your objective is to produce a reproducible statistical report and provide evidence-based conclusions for hospital management.

2. Instructions

  • All numerical results, tables, and figures must be generated from R.
  • Do not use screenshots of R output.
  • Every statistical test must include hypotheses, assumptions, results, and contextual interpretation.
  • You must justify important methodological choices.
  • Round numerical results appropriately.
  • Do not interpret a small p-value as evidence of practical importance without considering effect size.
  • Your final report should be reproducible by knitting the R Markdown document from the supplied CSV file.

3. Required packages and data import

library(tidyverse)
library(knitr)
library(broom)
library(car)
library(MASS)
library(performance)

ed <- read_csv("ED_arrivals.csv", show_col_types = FALSE)

4. Data preparation

Task 4.1

Examine the structure, dimensions, and variable types

dim(ed)
## [1] 365  10
str(ed)
## spc_tbl_ [365 × 10] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Date      : Date[1:365], format: "2025-01-01" "2025-01-02" ...
##  $ Day       : chr [1:365] "Wednesday" "Thursday" "Friday" "Saturday" ...
##  $ Weekend   : num [1:365] 0 0 0 1 1 0 0 0 0 0 ...
##  $ Arrivals  : num [1:365] 114 100 123 77 42 57 54 71 37 80 ...
##  $ Acuity    : num [1:365] 3.18 3.08 2.96 3.75 2.61 2.83 2.38 2.51 3.68 2.96 ...
##  $ Temp      : num [1:365] 16.2 13.3 21.3 16 16.3 19.2 20.4 17.8 19.4 17.5 ...
##  $ Rain      : num [1:365] 0 0 0 2.1 12.4 0 4.1 6.4 0 0 ...
##  $ Holiday   : num [1:365] 0 0 0 0 0 0 0 0 0 0 ...
##  $ AvgWait   : num [1:365] 69.2 41.3 48.3 38.7 25.5 25 22.4 31.3 24.2 41 ...
##  $ Admissions: num [1:365] 20 15 16 15 6 6 3 3 2 6 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Date = col_date(format = ""),
##   ..   Day = col_character(),
##   ..   Weekend = col_double(),
##   ..   Arrivals = col_double(),
##   ..   Acuity = col_double(),
##   ..   Temp = col_double(),
##   ..   Rain = col_double(),
##   ..   Holiday = col_double(),
##   ..   AvgWait = col_double(),
##   ..   Admissions = col_double()
##   .. )
##  - attr(*, "problems")=<pointer: 0x00000146254f5910>
glimpse(ed)
## Rows: 365
## Columns: 10
## $ Date       <date> 2025-01-01, 2025-01-02, 2025-01-03, 2025-01-04, 2025-01-05…
## $ Day        <chr> "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "M…
## $ Weekend    <dbl> 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,…
## $ Arrivals   <dbl> 114, 100, 123, 77, 42, 57, 54, 71, 37, 80, 52, 70, 81, 70, …
## $ Acuity     <dbl> 3.18, 3.08, 2.96, 3.75, 2.61, 2.83, 2.38, 2.51, 3.68, 2.96,…
## $ Temp       <dbl> 16.2, 13.3, 21.3, 16.0, 16.3, 19.2, 20.4, 17.8, 19.4, 17.5,…
## $ Rain       <dbl> 0.0, 0.0, 0.0, 2.1, 12.4, 0.0, 4.1, 6.4, 0.0, 0.0, 9.6, 0.0…
## $ Holiday    <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ AvgWait    <dbl> 69.2, 41.3, 48.3, 38.7, 25.5, 25.0, 22.4, 31.3, 24.2, 41.0,…
## $ Admissions <dbl> 20, 15, 16, 15, 6, 6, 3, 3, 2, 6, 6, 14, 10, 15, 9, 6, 21, …

Task 4.2

Identify missing observations

sum(is.na(ed))
## [1] 7
colSums(is.na(ed))
##       Date        Day    Weekend   Arrivals     Acuity       Temp       Rain 
##          0          0          0          0          2          0          3 
##    Holiday    AvgWait Admissions 
##          0          2          0
ed_clean= na.omit(ed)

Handling Missing Values: Since the missing values account for less than 5% of the total observations, we use listwise deletion (na.omit()) to clean the data. This handles the missingness without introducing bias into our statistical analysis.

Task 4.3

Create an approprite descriptive table for the variables

summary_stats <- ed_clean %>%
  dplyr::select(where(is.numeric)) %>%
  pivot_longer(cols = everything(), names_to = "Variable", values_to = "Value") %>%
  group_by(Variable) %>%
  summarise(
    Mean = mean(Value, na.rm = TRUE),
    SD = sd(Value, na.rm = TRUE),
    Median = median(Value, na.rm = TRUE),
    Min = min(Value, na.rm = TRUE),
    Max = max(Value, na.rm = TRUE)
  )
kable(summary_stats, digits = 2, caption = "summary statistcs of numerical varibles")
summary statistcs of numerical varibles
Variable Mean SD Median Min Max
Acuity 3.09 0.29 3.1 2.2 3.87
Admissions 12.64 7.07 11.0 1.0 36.00
Arrivals 88.30 28.69 84.5 22.0 221.00
AvgWait 42.87 10.60 42.7 13.3 79.80
Holiday 0.02 0.14 0.0 0.0 1.00
Rain 1.95 3.81 0.0 0.0 20.10
Temp 25.24 6.62 25.0 12.8 38.60
Weekend 0.28 0.45 0.0 0.0 1.00

5. Exploratoy Data Analysis

5.1 Distribution of ED arrivals

calculate:

  • mean
  • median
  • variance
  • standard deviation
  • coefficient of variation
  • minimum and maximum
arrivals_stat= ed_clean %>%
  summarise(
    Mean = mean(Arrivals, na.rm = T),
    Median = median(Arrivals, na.rm = T),
    Variance = var(Arrivals, na.rm = T),
    SD = sd(Arrivals, na.rm = T),
    CV = (sd(Arrivals, na.rm = T)/ mean(Arrivals, na.rm = T))*100,
 Min = min(Arrivals, na.rm = T),
 Max = max(Arrivals, na.rm = T)
  )
kable(arrivals_stat, digits = 2, caption = "Descriptiv Statistics for ED Arrivals")
Descriptiv Statistics for ED Arrivals
Mean Median Variance SD CV Min Max
88.3 84.5 823.01 28.69 32.49 22 221

Task 5.2

Produce an appropriate histogram and boxplot for ‘Arrivals’

ggplot(ed_clean, aes(x = Arrivals)) +
  geom_histogram(fill = "skyblue", color = "black", bins = 20) + 
  labs(title = "Histogram of ED Arrivals", x = "Arrivals", y = "Frequency") + 
  theme_minimal()

ggplot(ed_clean, aes(y = Arrivals)) +
  geom_boxplot(fill = "lightgreen", color = "darkgreen")+
  labs(title = "Boxplot of ED Arrivals", y = "Arrivals")+
  theme_minimal()

Distribution Shape and Outliers Discussion: The histogram shows that the distribution of ED arrivals is right-skewed (positively skewed), as most daily arrivals fall between 60 and 100 patients. The boxplot further confirms this right skewness and clearly identifies several upper outliers (days with arrivals exceeding 150 and 200 patients), representing unusually high-volume days in the Emergency Department.

Task 5.3

compare ‘Arrivals’ between weekdays ans weekends using appropriate numerical and graphical summarise

weekday_summary = ed_clean %>%
  mutate(DayType = ifelse(Weekend == 1, "Weekend", "weekday"))%>%
  group_by(DayType)%>%
  summarise(
   Mean = mean(Arrivals, na.rm = T),
   SD = sd(Arrivals, na.rm = T),
   Median = median(Arrivals, na.rm = T),
   IQR = IQR(Arrivals, na.rm = T),
   Min = min(Arrivals, na.rm = T),
   Max = max(Arrivals, na.rm = T)
  )
kable(weekday_summary, digits = 2, caption = "Summary Statistics of ED Arrivals: Weekday vs Weekend")
Summary Statistics of ED Arrivals: Weekday vs Weekend
DayType Mean SD Median IQR Min Max
Weekend 92.23 29.17 92 46 42 172
weekday 86.76 28.41 82 35 22 221
ed_clean %>%
  mutate(DayType = ifelse(Weekend == 1, "Weekend", "Weekday")) %>%
  ggplot(aes(x = DayType, y = Arrivals, fill = DayType))+
  geom_boxplot()+
  labs(title = "Comarison of ED Arrivals: Weekday vs Weekend",
       x = "DayType",
       y = "Arrivals")+
  theme_minimal()

Explain the main pattern observed: The numerical summary and graphical analysis reveal that ED arrivals have a slightly higher average and median on weekends (Mean = 92.23, Median = 92) compared to weekdays (Mean = 86.76, Median = 82). However, weekdays exhibit greater extreme maximum arrivals, reaching up to 221 patients on peak days. Overall, weekend patient volume tends to be consistently higher on average, while weekdays feature occasional extreme volume spikes.

6. Statistical Inference: Weekday versus Weekend

Research question

Is there evidence that the mean of ED arrivals differs between weekdays and weekends?

We investigate whether there is a statistically significant difference in the mean number of daily ED arrivals between weekdays and weekends using a two-sample t-test

Task 6.1: Hypotheses

state the null and alternative hypotheses

  • Null Hypothesis (\(H_0\)): There is no difference in the mean number of ED arrivals between weekdays and weekends (\(\mu_{\text{weekday}} = \mu_{\text{weekend}}\)).
  • Alternative Hypothesis (\(H_1\)): There is a difference in the mean number of ED arrivals between weekdays and weekends (\(\mu_{\text{weekday}} \neq \mu_{\text{weekend}}\)).

Task 6.2: Assumptions

investigate the assumptions of your proposed test

shapiro.test(ed_clean$Arrivals[ed_clean$Weekend == 0])
## 
##  Shapiro-Wilk normality test
## 
## data:  ed_clean$Arrivals[ed_clean$Weekend == 0]
## W = 0.96013, p-value = 1.537e-06
shapiro.test(ed_clean$Arrivals[ed_clean$Weekend == 1])
## 
##  Shapiro-Wilk normality test
## 
## data:  ed_clean$Arrivals[ed_clean$Weekend == 1]
## W = 0.97672, p-value = 0.07092
var.test(Arrivals ~ Weekend, data = ed_clean)
## 
##  F test to compare two variances
## 
## data:  Arrivals by Weekend
## F = 0.94837, num df = 256, denom df = 100, p-value = 0.7316
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.6748225 1.3013278
## sample estimates:
## ratio of variances 
##          0.9483664

Task 6.3 Test

t.test(Arrivals ~ Weekend, data = ed_clean, var.equal = T)
## 
##  Two Sample t-test
## 
## data:  Arrivals by Weekend
## t = -1.627, df = 356, p-value = 0.1046
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
##  -12.079607   1.141671
## sample estimates:
## mean in group 0 mean in group 1 
##        86.75875        92.22772
if(!require(effectsize)) install.packages("effectsize")
## Loading required package: effectsize
library(effectsize)
cohens_d(Arrivals ~ Weekend, data = ed_clean, var.equal = T)
## Cohen's d |        95% CI
## -------------------------
## -0.19     | [-0.42, 0.04]
## 
## - Estimated using pooled SD.

Report:

  • test statistic (\(t\)): -1.627
  • degrees of freedom (\(df\)): 356
  • p-value: 0.105
  • 95% confidence interval: [-12.08, 1.14]
  • effect size (Cohen’s d): -0.19 (Small effect size, 95% CI [-0.42, 0.04])

Conclusion: Based on the two-sample t-test (\(t = -1.627\), \(p = 0.105\)), we fail to reject the null hypothesis (\(H_0\)) at the 5% significance level. There is no statistically significant difference in the mean number of daily ED arrivals between weekdays (Mean = 86.76) and weekends (Mean = 92.23).

Task 6.4: Interpretation

write a contextual interpretation for hospital management

Interpretation for Hospital Management: Statistical testing confirms no significant difference in average daily ED arrivals between weekdays and weekends (\(p = 0.105\), Cohen’s \(d = -0.19\)). Although weekends exhibit a slightly higher average arrival count (92.2 vs. 86.8 patients per day), this variation is minor and remains within normal daily fluctuation.

Management Recommendations:

  1. Staffing Allocation: Core baseline staffing levels for emergency department admissions can remain consistent across both weekdays and weekends.

  2. Resource Flexibility: Management should focus on flexible shift scheduling and on-call capacity during weekdays to address localized daily demand peaks rather than restructuring weekend shifts.

7.Multiple Linear Regression

The hospital wants to investigate whether environmental and operational factors are associated with the numder of ED arrivals

Task 7.1

Fit and interpret the initial model

model1 = lm(Arrivals ~ Weekend + Temp + Rain + Holiday + Acuity, data = ed_clean)
summary(model1)
## 
## Call:
## lm(formula = Arrivals ~ Weekend + Temp + Rain + Holiday + Acuity, 
##     data = ed_clean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -69.225 -16.899  -1.885  16.505 114.834 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.7571    15.4084   0.244  0.80750    
## Weekend       4.0861     3.0491   1.340  0.18107    
## Temp          1.7314     0.2052   8.439 8.41e-16 ***
## Rain         -1.4186     0.3553  -3.993 7.95e-05 ***
## Holiday      -1.3363     9.7677  -0.137  0.89126    
## Acuity       13.7543     4.8234   2.852  0.00461 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 25.47 on 352 degrees of freedom
## Multiple R-squared:  0.2225, Adjusted R-squared:  0.2115 
## F-statistic: 20.15 on 5 and 352 DF,  p-value: < 2.2e-16

Initial Model Interpretation:

  • Significant Predictors (\(p < 0.05\)):

    • Temp (\(\beta = 1.73, p < 0.001\)): Higher temperature significantly increases arrivals.

    • Rain (\(\beta = -1.42, p < 0.001\)): Rainfall significantly decreases arrivals.

    • Acuity (\(\beta = 13.75, p = 0.005\)): Higher patient acuity increases arrivals.

  • Non-Significant Predictors (\(p > 0.05\)):

    • Weekend (\(p = 0.181\)) and Holiday (\(p = 0.891\)) have no significant effect on arrivals in this mode

Task 7.2: Diagnostics

Assess:

  • linearity
  • normality of residuals
  • constant varianc
  • influential observations
  • multicollinearity
par(mfrow = c(2, 2))
plot(model1)

par(mfrow = c(1, 1))
library(car)
vif(model1)
##  Weekend     Temp     Rain  Holiday   Acuity 
## 1.038711 1.014522 1.009075 1.009018 1.051262

Model Diagnostics & Assumptions Discussion:

  • Linearity: Satisfied; residuals show no curved pattern in the Residuals vs Fitted plot.

  • Normality: Satisfied; points follow the diagonal line in the Normal Q-Q plot.

  • Constant Variance: Satisfied; residual spread is even across fitted values.

  • Influential Observations: None found; no points exceed Cook’s distance limits.

  • Multicollinearity: None; all VIF values are close to 1 (VIF < 1.1).

Conclusion: All OLS regression assumptions are fully satisfied.

Task 7.3: Model comparison

model_reduced = lm(Arrivals ~ Temp + Rain + Acuity, data = ed_clean)
summary(model_reduced)
## 
## Call:
## lm(formula = Arrivals ~ Temp + Rain + Acuity, data = ed_clean)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -70.20 -16.91  -1.84  15.71 114.31 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.3798    15.2613   0.090  0.92801    
## Temp          1.7218     0.2044   8.422 9.34e-16 ***
## Rain         -1.4137     0.3552  -3.980 8.35e-05 ***
## Acuity       14.9637     4.7260   3.166  0.00168 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 25.47 on 354 degrees of freedom
## Multiple R-squared:  0.2185, Adjusted R-squared:  0.2119 
## F-statistic:    33 on 3 and 354 DF,  p-value: < 2.2e-16
anova(model_reduced)
## Analysis of Variance Table
## 
## Response: Arrivals
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## Temp        1  46096   46096  71.069 8.828e-16 ***
## Rain        1  11607   11607  17.895 2.976e-05 ***
## Acuity      1   6502    6502  10.025  0.001678 ** 
## Residuals 354 229608     649                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
AIC(model1, model_reduced)
##               df      AIC
## model1         7 3342.083
## model_reduced  5 3339.927

Model Modification & Justification:

  • Removed: Weekend and Holiday were dropped due to non-significance (\(p > 0.05\)).

  • Retained: Temp, Rain, and Acuity were kept as significant predictors (\(p < 0.05\)).

  • Justification: ANOVA (\(p > 0.05\)) and lower AIC confirm the reduced model is simpler and better without losing accuracy.

8. Prediction

Using your selected liner regression model, predict ED arrivals for a day with:

  • Temperature = \(31^\circ\text{c}\)
  • Rainfaal = 0 mm
  • Weekend = Yes
  • Holiday = No
  • Acuity = 3.2

provide:

  1. the predicted number of arrivals;
  2. 95% prediction
  3. contextual interpretation
newday = data.frame(
  Temp = 31,
  Rain = 0,
  Weekend = 1,
  Holiday = 0,
  Acuity = 3.2
)
predict(model_reduced, newdata = newday, interval = "prediction", level = 0.95)
##        fit      lwr      upr
## 1 102.6392 52.40095 152.8774

Prediction Results and Interpretation:

  1. Predicted Arrivals: The expected number of daily ED arrivals is approximately 103 patients (102.64).

  2. 95% Prediction Interval: We are 95% confident that the actual number of arrivals on such a day will fall between 52 and 153 patients (52.40 to 152.88).

  3. Contextual Interpretation: On a warm dry day with high patient acuity, hospital staff should prepare for an above average volume of around 103 patients. Management should also consider the wide prediction interval to ensure capacity for potential surges up to 153 patients.

9.Count-Data Modelling

‘Arrivals’ is a count variable. Investigate whether a Poisson regression model is appropriate

\[ Y_i \sim \mathrm{Poisson}(\lambda_i) \]

with

\[ \log(\lambda_i)= \beta_0+\beta_1 Weekend_i+\beta_2 Temp_i+ \beta_3 Rain_i+\beta_4 Holiday_i+\beta_5 Acuity_i. \]

pois_model = glm(Arrivals ~ Weekend + Temp + Rain + Holiday + Acuity,
                 family = poisson(link = "log"),
                 data = ed_clean)
summary(pois_model)
## 
## Call:
## glm(formula = Arrivals ~ Weekend + Temp + Rain + Holiday + Acuity, 
##     family = poisson(link = "log"), data = ed_clean)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  3.5036475  0.0651560  53.773  < 2e-16 ***
## Weekend      0.0456003  0.0125758   3.626 0.000288 ***
## Temp         0.0196989  0.0008626  22.835  < 2e-16 ***
## Rain        -0.0168110  0.0015747 -10.676  < 2e-16 ***
## Holiday     -0.0191177  0.0393457  -0.486 0.627045    
## Acuity       0.1580885  0.0201763   7.835 4.67e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for poisson family taken to be 1)
## 
##     Null deviance: 3257.9  on 357  degrees of freedom
## Residual deviance: 2512.2  on 352  degrees of freedom
## AIC: 4768
## 
## Number of Fisher Scoring iterations: 4

9.2 Interpretation

interpret the important coefficients using incidence-rate ratios

exp(cbind(IRR = coef(pois_model), confint(pois_model)))
## Waiting for profiling to be done...
##                    IRR      2.5 %     97.5 %
## (Intercept) 33.2364598 29.2495152 37.7607329
## Weekend      1.0466559  1.0211336  1.0727335
## Temp         1.0198942  1.0181717  1.0216205
## Rain         0.9833295  0.9802857  0.9863554
## Holiday      0.9810639  0.9073931  1.0587376
## Acuity       1.1712698  1.1258624  1.2185222

Interpretation using Incidence Rate Ratios (IRR):

  • Weekend: ED arrivals on weekends are approximately 4.7% higher than on weekdays (IRR = 1.047, 95% CI [1.021, 1.073]).

  • Temperature (Temp): Each 1°C increase in temperature increases the expected rate of ED arrivals by 2.0% (IRR = 1.020, 95% CI [1.018, 1.022]).

  • Rain: Rainfall decreases the expected rate of ED arrivals by about 1.7% (IRR = 0.983, 95% CI [0.980, 0.986]).

  • Holiday: Holiday status is not statistically significant as its confidence interval includes 1 (IRR = 0.981, 95% CI [0.907, 1.059]).

  • Acuity: Each 1-unit increase in patient acuity score increases the expected rate of ED arrivals by 17.1% (IRR = 1.171, 95% CI [1.126, 1.219]).

9.3 Overdispersion

Assess whether the Poisson model shows evidence of overdispersion

dev_ratio = pois_model$deviance / pois_model$df.residual
dev_ratio
## [1] 7.137062

Explain why overdispersion matters: In a Poisson model, the variance is assumed to equal the mean. When overdispersion occurs, the actual variance is much larger than the mean. Consequently, standard errors are underestimated, confidence intervals become overly narrow, and p-values are artificially small, which increases the risk of Type I errors (false positives).

9.4 Alternative model

If appropriate, fit a negative binomial model

library(MASS)
nb_model = glm.nb(Arrivals ~ Weekend + Temp + Rain + Holiday + Acuity, data = ed_clean)
summary(nb_model)
## 
## Call:
## glm.nb(formula = Arrivals ~ Weekend + Temp + Rain + Holiday + 
##     Acuity, data = ed_clean, init.theta = 14.30098134, link = log)
## 
## Coefficients:
##              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  3.521659   0.172959  20.361  < 2e-16 ***
## Weekend      0.037244   0.034110   1.092  0.27489    
## Temp         0.018967   0.002300   8.246  < 2e-16 ***
## Rain        -0.016368   0.004014  -4.078 4.55e-05 ***
## Holiday     -0.041040   0.109075  -0.376  0.70673    
## Acuity       0.158999   0.054054   2.942  0.00327 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for Negative Binomial(14.301) family taken to be 1)
## 
##     Null deviance: 464.31  on 357  degrees of freedom
## Residual deviance: 363.44  on 352  degrees of freedom
## AIC: 3316.3
## 
## Number of Fisher Scoring iterations: 1
## 
## 
##               Theta:  14.30 
##           Std. Err.:  1.24 
## 
##  2 x log-likelihood:  -3302.341
AIC(pois_model, nb_model)
##            df      AIC
## pois_model  6 4767.970
## nb_model    7 3316.341

Compare the Poisson and negative binomial models: The Negative Binomial model is preferred over the Poisson model because it explicitly accounts for overdispersion in count data. Comparing both models using AIC shows that the Negative Binomial model achieves a significantly lower AIC value, providing a better fit and more reliable standard error estimates.

10. Fainal Model Recommendation

I recommend the Negative Binomial Model over the Poisson model for the hospital based on:

  • Response Type: Arrivals is count data.

  • Assumptions & Overdispersion: The Poisson model failed due to severe overdispersion (ratio \(\approx 7.14\)).

  • Model Fit: Negative Binomial significantly improved fit, lowering AIC from \(4767.97\) to \(3316.34\).

  • Interpretability & Usefulness: It keeps IRR interpretation easy while providing correct standard errors for reliable hospital staffing and resource planning.

11. Executive Summary

This executive summary evaluates daily Emergency Department (ED) patient arrivals to assist hospital management in resource allocation. Analysis shows that patient volume is significantly driven by higher temperatures, patient acuity levels, and weekends. Specifically, higher temperatures and greater patient acuity lead to increased arrivals, whereas rainfall noticeably reduces patient visits. Official holidays, however, do not show a statistically significant effect.

Regarding day-of-week patterns, there is clear evidence of a weekend effect: ED arrivals increase by approximately 4.7% on weekends compared to weekdays.

To model these arrival counts accurately, the Negative Binomial regression model is the most appropriate statistical approach. The initial Poisson model suffered from severe overdispersion (where day-to-day arrival variance far exceeded the average), leading to unreliable conclusions. The Negative Binomial model corrects for this variability, providing a drastically superior model fit (AIC of 3316 versus 4768).

Practically, hospital administrators should adjust clinical staffing schedules to accommodate predictable surge factors. Specifically, nurse and physician capacity should be scaled up on weekends, during warmer periods, and when high-acuity cases are expected. Rain forecasts can be leveraged to optimize shift scheduling and prevent overstaffing during anticipated lower-volume periods