In this example, I take the concept of the Matrix developed in the Design and construct a fictious firm. This demonstrates in practice how this design made be implemented with real firm data.
For example, suppose we have a Minnesota firm such as Red Wing Shoes. This firm mainly produces a variety of one type of commodity: Shoes similar to the one shown below.
Impacts
Company Impact Matrix (\(C\))
To implement the matrix, first we start with the Company Activity Matrix \((C)\). This specifies a list of activities in specific locations. To keep this simple, let us suppose the shoe manufacturer conducts only two production activities: factories to assemble shoes (assembly) and distribution of the manufactured product (distribution). Suppose that both assembly and distribution is measured by thousands of shoes. The following matrix describes activities \(y\) in locations \(x\).
Code
library(tibble)library(knitr)library(tidyverse)# Simulate company activities for Red Wing Shoesc <-tibble(city =c("Duluth", "Minneapolis", "St Paul", "Rochester", "Mankato"),assembly =c(100, 50, 0, 0, 10), distribution =c(10, 40, 60, 25, 25))# Print Company Activity Matrixkable(c)
city
assembly
distribution
Duluth
100
10
Minneapolis
50
40
St Paul
0
60
Rochester
0
25
Mankato
10
25
Single Impact Matrix (\(I_z\))
The impact of Red Wings can be viewed through the three following categories:
Impact Categories:
Category
Scope
Description
Category 1
Direct Operations
Dependencies and impacts from the company’s own operations only
Category 2
Supply Chain
Category 1 plus dependencies and impacts from upstream suppliers back to primary producers
Category 3
Full Value Chain
Category 2 plus dependencies and impacts from downstream activities through to final end consumers
For this example, let us consider only three potential impacts (\(z\)). These are:
Water Pollution (Category 1): Water pollution from the tanning and dyeing processes in assembly activities.
Carbon Emissions (Category 1): GHG emissions related to distribution of shoes from the distribution centers.
Carbon Emissions (Category 2): GHG emissions from the animal hides necessary to produce the leather for shoe production.
For each of these three impacts, we then construct a single impact matrix \((I_z)\). This means for the Company Activities Matrix \((C)\) we translate the activities \(y\) in locaiton \(x\) into impacts \(z | y,x\).
Water Pollution (Category 1)
This relates to assembly plants only. We will measure pollution as g/ha of total dissolved solids (TDS).
Code
# Simulate company activities for Red Wing Shoesz1 <-tibble(city =c("Duluth", "Minneapolis", "St Paul", "Rochester", "Mankato"),assembly =c(10, 5, 0, 0, 1))# Print Impact Matrixkable(z1)
city
assembly
Duluth
10
Minneapolis
5
St Paul
0
Rochester
0
Mankato
1
Carbon Emissions (Category 1)
This relates to distribution centers only. We will measure GHG as tons of \(CO_2e\).
Code
# Simulate company activities for Red Wing Shoesz2 <-tibble(city =c("Duluth", "Minneapolis", "St Paul", "Rochester", "Mankato"),distribution =c(1, 4, 6, 2.5, 2.5))# Print Impact Matrixkable(z2)
city
distribution
Duluth
1.0
Minneapolis
4.0
St Paul
6.0
Rochester
2.5
Mankato
2.5
Carbon Emissions (Category 2)
This relates to assembly plants only. We will measure GHG as tons of \(CO_2e\).
Code
# Simulate company activities for Red Wing Shoesz3 <-tibble(city =c("Duluth", "Minneapolis", "St Paul", "Rochester", "Mankato"),assembly =c(5, 2, 0, 0, 0.5))# Print Impact Matrixkable(z3)
city
assembly
Duluth
5.0
Minneapolis
2.0
St Paul
0.0
Rochester
0.0
Mankato
0.5
Company Single Impact Matrix (\(CI_z\))
Not clear on this…
Company Location Single Impact Vector (\(LCI_z\))
We can summarize the impact of all activites \(y\) in a locaiton \(x\) for any given impact \(z\). In our example, this produces two vectors of location level impacts for water pollution and GHG emissions. Note, that this only impacts GHG emissions as they are covered via two seperate activities \(y\) (distribution and assembly) through two seperate impact scopes (Scope 1 and 2, respectively).
# Summarize z2 and z3 across cities cz2 <-left_join(z2, z3, by ="city") |>mutate(ghg = distribution + assembly) |>select(-c(distribution, assembly))# Print Company Impactkable(cz2)
city
ghg
Duluth
6.0
Minneapolis
6.0
St Paul
6.0
Rochester
2.5
Mankato
3.0
Company Impact Matrix (\(CI\))
We can determine the overall impact at each location \(x\) across all environmental concerns \(z\) by combining the individual impact vectors (\(LCI_z\))
Code
# Combine water and ghg emissionsci <-left_join(cz1, cz2, by ="city")# Print Company Impactkable(ci)
city
water
ghg
Duluth
10
6.0
Minneapolis
5
6.0
St Paul
0
6.0
Rochester
0
2.5
Mankato
1
3.0
Financial Impact Matrix (\(FI\))
With \(CI\) we have the location \(x\) level aggregation of all impacts \(z\) in environmental terms. To translate this into monetary terms, we need to use either a non-market valuation method or avoided abatement cost to translate these emissions into financial terms. For our example, we want to know the willingness-to-pay (WTP) to reduce TDS of water pollution and the social cost of carbon (SCC) as measured through carbon rental rates.
Water Pollution
For water pollution, suppose that we have a homogenous WTP for reducing a g/ha of total dissolved solids (TDS). You can imagine that this translates to heterogenous prices spatially across locations if there is important variation. Or this could be modified if the activity for the source of the impact has different abatement costs (e.g., it is cheaper or more expensive to abatement emissions at different stages of the production process).
For our example, suppose:
\[
WTP_{TDS} = \$500 \text{ g/ha}
\]
We can simply multiply this rate by the emissions rate from the Company Location Single Impact Vector (\(LCI_z\)).
Code
# WTP wtp <-500# Convert by WTPfi1 <- cz1 |>mutate(water = water * wtp)# Print Financial Impactkable(fi1)
city
water
Duluth
5000
Minneapolis
2500
St Paul
0
Rochester
0
Mankato
500
Carbon Emissions
For our example, suppose:
\[
WTP_{GHG} = \$190 \text{ tons } CO_2e
\]
We can simply multiply this rate by the emissions rate from the Company Location Single Impact Vector (\(LCI_z\)).
This is a trival aggregation of the monetary impact values the same analogous to the Company Impact Matrix (\(CI\)).
Code
# Combine water and ghg emissionsfi <-left_join(fi1, fi2, by ="city")# Print Company Impactkable(fi)
city
water
ghg
Duluth
5000
1140
Minneapolis
2500
1140
St Paul
0
1140
Rochester
0
475
Mankato
500
570
Dependencies
Again, we repeat this procedure for all the ecosysetm services that the firm is dependent on from nature. To keep this simple, let us suppose that again, we only have three dependencies:
Water Supply (Scope 1): Water supply used in the assembly of the shoes.
Energy Resources (Scope 1): Energy used in both the assembly and distribution process.
Livestock Production (Scope 2): The reliance on biomass for livestock production which provides the leather for shoe production.
Single Dependency Matrix (\(D_z\))
Water Supply (Scope 1)
This relates to assembly plants only. We will measure water supply in \(m^3\).
Code
# Simulate company dependencies for Red Wing Shoesd1 <-tibble(city =c("Duluth", "Minneapolis", "St Paul", "Rochester", "Mankato"),assembly =c(8, 4, 0, 0, 0.8))# Print Dependency Matrixkable(d1)
city
assembly
Duluth
8.0
Minneapolis
4.0
St Paul
0.0
Rochester
0.0
Mankato
0.8
Energy Resources (Scope 1)
This relates to both assembly plants and distribution centers. We will measure energy in MWh.
Code
# Simulate company dependencies for Red Wing Shoesd2 <-tibble(city =c("Duluth", "Minneapolis", "St Paul", "Rochester", "Mankato"),assembly =c(20, 10, 0, 0, 2),distribution =c(5, 20, 30, 12.5, 12.5))# Print Dependency Matrixkable(d2)
city
assembly
distribution
Duluth
20
5.0
Minneapolis
10
20.0
St Paul
0
30.0
Rochester
0
12.5
Mankato
2
12.5
Livestock Production (Scope 2)
This relates to assembly plants only. We will measure biomass dependence in tons.
Code
# Simulate company dependencies for Red Wing Shoesd3 <-tibble(city =c("Duluth", "Minneapolis", "St Paul", "Rochester", "Mankato"),assembly =c(3, 1.2, 0, 0, 0.3))# Print Dependency Matrixkable(d3)
city
assembly
Duluth
3.0
Minneapolis
1.2
St Paul
0.0
Rochester
0.0
Mankato
0.3
Company Single Dependency Matrix (\(CD_z\))
Not clear on this…
Company Location Single Dependency Vector (\(LCD_z\))
# Combine water, energy, and livestock dependenciescd <- cd1 |>left_join(cd2, by ="city") |>left_join(cd3, by ="city")# Print Company Dependencykable(cd)
city
water_supply
energy
livestock
Duluth
8.0
25.0
3.0
Minneapolis
4.0
30.0
1.2
St Paul
0.0
30.0
0.0
Rochester
0.0
12.5
0.0
Mankato
0.8
14.5
0.3
Financial Dependence Matrix (\(FD\))
Water Supply
Code
# Unit valuewtp <-40# Convert by unit valuefd1 <- cd1 |>mutate(water_supply = water_supply * wtp)# Print Financial Dependencekable(fd1)
city
water_supply
Duluth
320
Minneapolis
160
St Paul
0
Rochester
0
Mankato
32
Energy Resources
Code
# Unit valuewtp <-120# Convert by unit valuefd2 <- cd2 |>mutate(energy = energy * wtp)# Print Financial Dependencekable(fd2)
city
energy
Duluth
3000
Minneapolis
3600
St Paul
3600
Rochester
1500
Mankato
1740
Livestock Production
Code
# Unit valuewtp <-250# Convert by unit valuefd3 <- cd3 |>mutate(livestock = livestock * wtp)# Print Financial Dependencekable(fd3)
city
livestock
Duluth
750
Minneapolis
300
St Paul
0
Rochester
0
Mankato
75
Company Financial Dependence Matrix (\(CFD\))
Code
# Combine water, energy, and livestock dependence valuescfd <- fd1 |>left_join(fd2, by ="city") |>left_join(fd3, by ="city")# Print Company Financial Dependencekable(cfd)