Palestine

Author

Allan Maino Vieytes

Intro Essay

The topic i chose to cover is Aid worker security in Palestinian Territories through the AWSD (Aid Workers Security Database), which gets majority funding from USAID’s BHA (Bureau for Humanitarian Assistance). The data set includes a variety of categorical variables ranging from city to time, it also includes quantitative variables ranging from gender to number of wounded/killed. The data set also includes the perpetrators of the violence as well as the organizations the victims worked at. The inclusion of geo-location data opens up many opportunities for visualization options. The reason for picking this data set comes form a personal endeavor to research the topic of Palestinian plight and its humanitarian implications. Although i have only recently delved in to the topic, i find myself very attached to the issue through its historical and contemporary roots. Given the nature of the data set, i will most likely not do too much cleanup as i would like to use the whole breadth of the data available.

Library

library(tidyverse)
library(tidyr)
library(leaflet)
library(GGally)
library(geojsonR)
library(sf)
library(wesanderson)
library(highcharter)
library(viridisLite)
library(ggthemes)
library(viridis)
setwd("E:/data-110")
Aid_Safety <- read_csv("Aid_Workers_Palestine.csv")
file_js = FROM_GeoJson( url_file_string = "E:/data-110/geoBoundaries-PSE-ADM2.geojson")
sf_data <- st_read("E:/data-110/geoBoundaries-PSE-ADM2.geojson")
Reading layer `geoBoundaries-PSE-ADM2' from data source 
  `E:\data-110\geoBoundaries-PSE-ADM2.geojson' using driver `GeoJSON'
Simple feature collection with 16 features and 5 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: 34.21867 ymin: 31.22438 xmax: 35.57349 ymax: 32.55215
Geodetic CRS:  WGS 84
head(sf_data)
Simple feature collection with 6 features and 5 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: 34.21867 ymin: 31.22438 xmax: 35.56972 ymax: 32.45815
Geodetic CRS:  WGS 84
  shapeISO           shapeName                 shapeID shapeGroup shapeType
1   PS-JRH Jericho & Al Aghwar 87354302B18647900198549        PSE      ADM2
2   PS-RFH               Rafah 87354302B11532502248212        PSE      ADM2
3   PS-NGZ          North Gaza 87354302B69236118899353        PSE      ADM2
4   PS-TKM             Tulkarm 87354302B17069565895340        PSE      ADM2
5   PS-JEM           Jerusalem 87354302B18092601143781        PSE      ADM2
6  PS-GZA*                Gaza 87354302B92317438543703        PSE      ADM2
                        geometry
1 MULTIPOLYGON (((35.56913 32...
2 MULTIPOLYGON (((34.24414 31...
3 MULTIPOLYGON (((34.51986 31...
4 MULTIPOLYGON (((35.12296 32...
5 MULTIPOLYGON (((35.37532 31...
6 MULTIPOLYGON (((34.45359 31...

Cleanup

colnames( Aid_Safety ) <- str_replace_all( colnames(Aid_Safety), "\\s", "\\_") # Replaces spaces in the column names with underscores
Aid_Safety$Total_killed <- as.numeric(Aid_Safety$Total_killed )
Warning: NAs introduced by coercion
Aid_Safety$Total_wounded <- as.numeric(Aid_Safety$Total_wounded )
Warning: NAs introduced by coercion
Aid_Safety$Total_kidnapped <- as.numeric(Aid_Safety$Total_kidnapped )
Warning: NAs introduced by coercion
Aid_Safety$Total_affected <- as.numeric(Aid_Safety$Total_affected )
Warning: NAs introduced by coercion
Aid_Safety$Longitude <- as.numeric(Aid_Safety$Longitude )
Warning: NAs introduced by coercion
Aid_Safety$Latitude <- as.numeric(Aid_Safety$Latitude )
Warning: NAs introduced by coercion
Aid_Safety$Year <- as.numeric(Aid_Safety$Year )
Warning: NAs introduced by coercion
colnames(sf_data)[colnames(sf_data) == "shapeName"] <- "District"
Aid_Safety_D <- Aid_Safety %>%
  mutate(District = case_when(
    District %in% c("Gaza Strip", "Central Gaza") ~ "Gaza",
    TRUE ~ District  # Keep other values unchanged
  ))
Aid_sf <-left_join( sf_data, Aid_Safety_D, by = "District")
Aid_sf_agg <- Aid_sf %>%
  group_by( District ) %>% 
  mutate( cum_d_w = sum( Total_affected, na.rm = TRUE ) ) %>%
  distinct( cum_d_w, District, geometry )

Correlation/Linear-Regression Model

ggpairs(Aid_Safety, which( colnames(Aid_Safety) %in% c("Total_killed", "Total_wounded", "Total_kidnapped" )))  # only include predictor variables in the matrix

cor( Aid_Safety$Total_killed, Aid_Safety$Total_wounded, use = "complete.obs" ) #Provides the correlation Coefficient 
[1] 0.4825659
  • We find a moderate positive correlation of .48 between the Total Killed & Total Wounded Variables
fit1 <- lm( Total_killed ~ Total_wounded, data = Aid_Safety) #Fits the LR Model
summary(fit1) # Summary of the model

Call:
lm(formula = Total_killed ~ Total_wounded, data = Aid_Safety)

Residuals:
    Min      1Q  Median      3Q     Max 
-25.801  -2.758  -0.613  -0.613  43.199 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)     1.6130     0.8698   1.854    0.067 .  
Total_wounded   1.1449     0.2203   5.198 1.27e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 7.935 on 89 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.2329,    Adjusted R-squared:  0.2243 
F-statistic: 27.02 on 1 and 89 DF,  p-value: 1.272e-06

\[Y_{i}=\beta_{0}+\beta_{1}X_{i}\] Where \(Y_{i}\) is the Total-Killed of the \(i^{th}\) observation, \(\beta_{0}\) is the intercept, \(\beta_{1}\) is the slope, and \(X_{i}\) is the Total-Wounded of the \(i^{th}\) observation. \[Y_{i}=1.6130+(1.1449)X_{i}\]

Visualizations: Charting/Mapping

ggplot() +
  geom_sf(data = Aid_sf_agg, aes(fill = cum_d_w), color = "white") +
  scale_fill_viridis(
  alpha = 1,
  begin = 0,
  end = 1,
  direction = 1,
  discrete = FALSE,
  option = "D",
  aesthetics = "fill",
    name = "Deaths & Injury"
) +
  theme_map() +
  labs(title = "Palestine: Hotspot for Aid Worker Deaths and Woundings", caption = "Source: AWSD (Aid Workers Security Database)") +
  theme(
        aspect.ratio =0.8, # Made the overall size of the visualization smaller
        legend.background = element_blank(), # Makes the background of the legend box blank
        legend.box.background = element_rect( color = "black" ),
        legend.position = c( 1, 0.5 ), # Changes legend position
        legend.title = element_text( size = 8.5, face = "bold" ), # Changes the legend title text size
        legend.text=element_text( size = 8.5 ),# Changes the legend text size
        plot.title = element_text( size = 17, # Changes size of Title
                                   face = "bold", # Boldens Title
                                   hjust = 0.5, ), # Centers the Title to the Plots
        plot.caption = element_text( hjust = 0.5, # Centers the caption to the plots
                                    face = "italic" )) 

plot1 <- highchart() |>
  hc_title(text = "Palestine: Aid Worker Death Toll & the Belligerent Misuse of Force",  # Main title
           align = "Center") |>  
  hc_subtitle(text = "Aerial Bombardments and IDF Terror",  # Subtitle
             align = "left") |>
  hc_add_series(data = Aid_Safety, 
                type = "scatter",  
                hcaes(x = Year, y = Total_killed, group = Means_of_attack)) |>

  hc_xAxis(title = list(text = "Year")) |> # x axis title
  hc_yAxis(title = list(text = "Killed")) |>  # y axis title
  hc_plotOptions(series = list(marker = list(symbol = "square"))) |>  #Set all plot circle
  hc_legend(align = "center",
            verticalAlign = "bottom", 
            title = list(text = "Means of Attack")) |> #set legend place on top of right align
  hc_tooltip(shared = TRUE,
             pointFormat = "Region: {point.Region}<br>: Total Wounded: {point.Total_wounded} <br> Event Description: {point.Details}<br>")
 
plot1
palette <- colorNumeric(
  palette = c( "red","purple", "navy" ), # define color range 
  domain = Aid_Safety$Total_affected) # define data range
popupaid <- paste0(
  "<strong>City: </strong>", Aid_Safety$City, "<br>",
  "<b>District: </b>", Aid_Safety$District, "<br>",
  "<b>Year: </b>", Aid_Safety$Year, "<br>",
  "<b>Total Affected: </b>", Aid_Safety$'Total_affected', "<br>",
  "<b>Total Killed: </b>", Aid_Safety$`Total_killed`, "<br>",
  "<b>Total Wounded: </b>", Aid_Safety$`Total_wounded`, "<br>",
  "<b>Means of Attack: </b>", Aid_Safety$`Means_of_attack`, "<br>",
  "<b>Event Description: </b>", Aid_Safety$Details, "<br>"
)
leaflet() %>%
  setView(lng = 34.8, lat = 31.8, zoom = 9) %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addCircles(
    data = Aid_Safety,
    radius = ~Total_affected * 20,
    color = ~palette(Total_affected),
    fillColor = ~palette(Total_affected),
    fillOpacity = 0.9,
    popup = popupaid
  )
Assuming "Longitude" and "Latitude" are longitude and latitude, respectively
Warning in validateCoords(lng, lat, funcName): Data contains 1 rows with either
missing or invalid lat/lon values and will be ignored

Essay: Final Thoughts

The data set came from AWSD (Aid Workers Security Database), which gets majority funding from USAID’s BHA (Bureau for Humanitarian Assistance). It had a plethra of variables that were connected to the Total_killed variable such as which organization the aid workers were from, gender of the murdered aid workera and whether they were national or international among others.

To clean up the data set I first standardized the column names of the Aid_Safety data set by replacing spaces with underscores, which helped in simplifying column references and maintaining consistency. Next, I converted specific columns (Total_killed, Total_wounded, Total_kidnapped, etc.) to numeric data types. I also renamed the shapeName column in another data set (sf_data) to District for clarity and alignment with the Aid_Safety data set. Further, I created a new data set (Aid_Safety_D) by mutating the District column to group certain district names (like “Gaza Strip” and “Central Gaza”) under a single category (“Gaza”) using conditional logic. Lastly, I performed a left join (left_join) operation between sf_data and Aid_Safety_D based on the District column, integrating spatial information with the cleaned Aid_Safety` data for analysis or visualization.

https://www.washingtonpost.com/national/2024/04/02/israel-hamas-war-latest-04-02-2024/a44011a0-f0b5-11ee-a4c9-88e569a98b58_story.html

The article describes a troubling state of affairs for aid work in Gaza, particularly following the tragic incident where Israeli airstrikes killed seven aid workers, including individuals from the United States, Australia, Poland, and the United Kingdom. This event (among many others) has prompted significant reactions internationally, with Australia and Canada seeking assurances of transparency and accountability from Israel regarding the incident.

As a result of this attack and ongoing military actions, several humanitarian organizations, including World Central Kitchen, have suspended their operations in Gaza, halting critical aid deliveries to a population on the brink of starvation. The United Nations has expressed deep concern over the targeting of humanitarian workers, highlighting broader issues related to international humanitarian law and the protection of civilians in conflict zones.

-Anecdote: i personally saw a few Israeli posts making fun of the dead aid workers calling them Nazis and pigs alongside pictures of their corpses -

Overall, the state of aid work in Gaza appears to be in jeopardy due to the volatile security situation and the risks faced by humanitarian personnel operating in the region. The incident underscores the urgent need for diplomatic efforts to ensure the safety and effectiveness of humanitarian operations in Gaza amidst ongoing conflict.

I would like to focus on the leaflet visualization as it demonstrates the sheer difference in death-toll in the Gaza strip compared to the West Bank. I feel the visualization is the culmination of the prior two as it effectively gives the viewer a “playground” of sorts, by providing information on every given point while also showcasing certain hot-spots. I would have loved to add a point layer to the first (Sf) plot, as i felt it would have greatly benefited from an overlay of that nature. Overall, i thoroughly enjoyed working with Sf as well as learning more from high charter (although i personally cant wrap my head around it too well), and personally love the projects as they provide me with a sense of intellectual and creative freedom as it pertains to the data selection and visualization method!