Julian Simon liked to proclaim that
The only true measure of scarcity is price …
In this lab we are going to take advantage of a database put together by David Jacks. The data for his paper “From Boom to Bust: A Typology of Real Commodity Prices in the Long Run” (2013, NBER Working Paper 18874) has consistent series of commodity prices for everything ranging from barley to zinc. For our lab we’ve selected prices since 1900.
We’re going to ask the following:
What has been the long-term trend in commodity prices?
Was Simon lucky to have won the bet?
Do commodity price trends differ by commodity in a way that we can understand? (This section will be more exploratory than in past labs. Here the important point is to report what you find, not to find a specific “right” answer.)
# Do not edit this chunk, but *do* press the green button to the answer key for the quiz info (the unreadable string below)
tot = 0
answer.key = "eJzNVk2P4zYMvedXEDmMd4FASZzMYHeBwSIzLdBeiqKz94EiM7YaWfLqYz359yVlJ/Phaw69GKFok3yP5FPET5vaPfq1WMM90HMmlPMeVRTShv7smP82n4lG2ziaf3utMID0CNpW+IIVRAfrr6sVSFvlc1n9m0Ikx8F5eulgZNTOUhhtQ/RJsRXGcP9gZ6RCiA3CXzvodWzg5JKHoQb4hKIWCyh2BUWCn8lFDJ8pFL7QdzYHvkSSBrqxulzBJP8FcZkRl1PE7Jg/XBBns4mxC9+WS7Si10fdYaWlcL5esrV8bLxrdWon8MqrwcuRdopqrbStme5LHQv4cgsdeoU2gibgXUcdsNGcIAWsZoIpiA15nEXoku9cQAE7n0uiZ0j7EHVMlDfT1XkqgSBQHmohmu+vtJWZ53I6KINj/jjSNppP9M5pAdYBH36gp7xa98dIPxhNEUAZlJ7QSzAugjvAL8ftNzqeCLaJjUt1k/PlUeGw5Wp9y9w1uqYg5JOWj3mkFwN3lcNgi0gh3RGMPtKID4kgEtnVAoK2FIv5a5NqOC1nKFcEhzuT/OlNyl4GitR/SCXeEl1moifzOTjmF56z9WdtHS9diq4lpApaDEHWdLJ3Kb6jc4/c14KKHcMWM5GJY/jUqGI8L8YPBDykTKKiIIFR03gcKDwB7V0yFRAJdiai66WvoHgsJm2+1hb8T8FeOrbJHdtMO7Z5qyijuTMmC6VHGZyVe4MLwBeFXYRH6BtNI0Q1vlYOP2iAZC2JHH1gkFDpigdyhPogJrxvrsb7UPFFV2gl6N1RZ3umUzkbvTOGBJ890kfY8wIq+oWGGSUiq6TQBwFPiHAW1L7vhY5eE2ciHZf5OhFd0313Hae+V659bmnD8CbKcLyXMT5XrrfGyerGaHt81tX99uvd6vZGHfh3uc0rKImdoFIIFAMOpM6Qt6yiG4Fo9BhocYnhQEQofLN2m6wkm6m+DY5LE0fzj0EuRiZamg1oeTYD4VYsNx96srma5I2RdoxK8QxlGRsLCamuMcQwgL64Z6I4F1YsaMZkhN8bb3jUWI/2GLPmO/uOkDITMtGhzXglXQgZdtMGpN6T8mqL36Cggmz85LyutZVGUApB5CcTP2doTIByFT2aZI98qwUcaBneOqsofzeh8lqyckYCFms6+IUwQM/9DK9jTrcrj94i/8cJDp50S8M1yEIj6bP+HXPb3KHtdJS270dpNEfmhhuZhWG9umPcga/PSNbqIwPbqw3TGOmuXHJS/guRlXQlbr+I+X+1gFbM"
devtools::install_github("josh-goldstein-git/quizify")
Registered S3 method overwritten by 'htmlwidgets':
method from
print.htmlwidget tools:rstudio
Downloading GitHub repo josh-goldstein-git/quizify@HEAD
── R CMD build ───────────────────────────────────────────────────────────────────────────────────────────────────
checking for file ‘/tmp/RtmplAVnjh/remotes63144eccbd/josh-goldstein-git-quizify-20d36b4/DESCRIPTION’ ...
✔ checking for file ‘/tmp/RtmplAVnjh/remotes63144eccbd/josh-goldstein-git-quizify-20d36b4/DESCRIPTION’
─ preparing ‘quizify’:
✔ checking DESCRIPTION meta-information
─ checking for LF line-endings in source and make files and shell scripts
─ checking for empty or unneeded directories
Omitted ‘LazyData’ from DESCRIPTION
─ building ‘quizify_0.1.0.tar.gz’
Installing package into ‘/srv/r’
(as ‘lib’ is unspecified)
* installing *source* package ‘quizify’ ...
** using staged installation
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (quizify)
library(quizify)
source.coded.txt(answer.key)
Note: the most helpful reading for this lab is David Lam (2011), “How the World Survived the Population Bomb”
These commodity prices are modified in two ways. First, the nominal prices have been adjusted for inflation. Second, all prices are indexed to 100 in 1900 (we call this the base year). This makes it easy for us to compare across commodities and over time.
More details: nominal prices are those that are experienced by people, but more importantly they can vary between periods because of inflation. For instance, the fact that the price of a product increases from one year to another, may be from a change in its value, but also just as a result in increasing prices of its inputs. So, to account for changing prices (inflation), economists evaluate prices in real terms, which ‘removes’ the effect of changing prices, so that we can compare values over time. When you look at values in real terms, you are comparing apples with apples.
## get commodity data from a file on our server
file <- "https://raw.githubusercontent.com/josh-goldstein-git/econ_demog_c175/main/data/Real_commodity_prices_1900_2015.csv"
commod <- read.table(file, sep = ",") # read the data into, with column header
head(commod) # looks at first few lines
You can scroll to the right and left using the black arrows in the display of the data. For the question below, scroll to the right until you find the column labelled ‘Zinc’.
Q1.1 What does the number 110.51 under Zinc mean?
Zinc costs 110.51 cents per pound
Zinc prices increased by about 110 percent between 1900 and 1904
Zinc cost about 10.51 percent more in nominal terms in 1904 than in 1900
Zinc cost 10.51 percent more in real terms in 1904 than in 1900
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer1.1 = 'D'
quiz.check(answer1.1)
Your answer1.1 : D
Correct.
Explanation: Real prices adjust for inflation
Q1.2 What is the major use of Chromium?
For browsing the internet
As Chrome plating and stainless steel
As vitamin supplement for breakfast cereal
As a precious metal for storing value
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer1.2 = 'B'
quiz.check(answer1.2)
Your answer1.2 : B
Correct.
Explanation: According to wikipedia, 85 percent is apparently used
.for this one purpose. Are there substitutes for protecting steel?
To select a value from this matrix of data you can index by the label of the row and column. For example,
commod["1963", "Chromium"]
[1] 55.07
## note for those interested in R:
## the index "1963" needs to be in quotes, otherwise R will think it
## is the 1963rd row of the matrix. Here we're telling it that it is
## the row labeled "1963".
tells us that the real price of Chromium in 1963 was 55 percent of that in 1900.
(Note: in the rest of the lab, when we say “price” we mean “real price”, unless otherwise stated.)
Let’s see how the price of Chromium varies over time.
year.vec <- rownames(commod)
plot(year.vec, commod$Chromium, type = "l")
abline(v = 1980) # the date of "the bet"
Q2.1 How would you describe the history of Chromium prices?
A. Steadily rising
B. Steadily falling
C. Very volatile, with little clear long-term trend
D. Very volatile, with a clear upward trend
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer2.1 = 'C'
quiz.check(answer2.1)
Your answer2.1 : C
Correct.
Explanation: There's clearly a lot of volatility. Although the price in 2015 is higher than in 1900, this doesn't look like a clear trend, since for much of the 20th century the price was lower than in 1900.
Imagine a “random walk”, in which prices go up or down each year by some random amount that averages zero. Each realization of this random walk will have, by luck, some trend, but the underlying process generating the randomness has no trend – on average the change is “zero”. It is very easy to falsely interpret a random walk as having an underlying trend. The subject of how to make inferences about the trend of a time series is covered in an econometrics or statistics class. For now, we will just look at some realizations of the random walk to get a feeling for what random realizations of trendless data can look like.
## here we create a function that will plot a random walk.
plot.random.walk <- function(seed)
{
set.seed(seed) # this initializes the random
# number generator used in
# sample(). If we use the same
# seed, we will get the same
# set of "random" numbers.
random.steps <- sample(x = c(-1,1), size = 40, replace = TRUE)
## this selects the number -1 or 1 randomly 40 times
random.walk <- cumsum(random.steps)
## this turns the random steps into a walk by summing them up.
## cumsum(c(1,2,3)) returns a vector with values 1, 3, and 6.
plot(1:40, random.walk, type = "l")
}
Here’s an example
plot.random.walk(seed = 23) # Here we set seed to 23
Modify the code below to try 1,2, 3, and 4 as “seeds”
plot.random.walk(seed = 23)
plot.random.walk(seed = 23)
plot.random.walk(seed = 23)
plot.random.walk(seed = 23)
Q.2.2 Which of the following seems to be true
A. Even if price changes are random, averaging zero, the realization of a random process can look like it has a trend.
B. A historical trend is the one reality we observe and we shouldn’t let anyone confuse us with alternative random realizations.
C. Thinking about randomness may help us understand and interpret the reality we see and thus is a subject worth of study.
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer2.2 = 'C'
quiz.check(answer2.2)
Your answer2.2 : C
Warning: Sorry, incorrect. Try again.
Warning: Hint: Ignore automatic message about your answer being 'incorrect.'
.There is no 'correct' answer. But of course a professor would lean
.toward 'C'
Plot the price of tin. You can use the same code we used for Chromium, modifying just slightly.
## put your code for Tin here
## (Hint: you can copy and modify the commands we used for Chromium, and modify the name of the column of interest)
year.vec <- rownames(commod)
plot(year.vec, commod$Tin, type = "l")
abline(v = 1980) # the date of "the bet"
Q2.3 Why do you think Ehrlich chose Tin as one of his commodities to bet on?
Tin is difficult to substitute for
Tin had shown a sharp increase in price for the decade or so before 1980 and so it looked like it would continue.
The price had been going down before 1980 and was ready for a recovery
There was evidence that the tin mines were running out of ore
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer2.3 = 'B'
quiz.check(answer2.3)
Your answer2.3 : B
Correct.
Explanation: Apparently, tin prices were controlled in part by a cartel of producers. See https://www.itri.co.uk/index.php?option=com_mtree&task=att_download&link_id=49605&cf_id=24 for a discussion from an industry research source.
In the original bet, Ehrlich was allowed to choose any commodities he wished. He chose Chromium, Copper, Tin, Tungsten, and Nickel. In our data, we don’t have Tungsten. We can check to see if Simon still wins with the four commodities we have.
We strongly suggest to see the Lam (2011) reading, p. 1242 for an account of the bet.
We will use a function to compare commodities over time. This uses the indexing by label we did above. It returns the change in value of a $1000 purchase of the commodity basket in the start year. So if the function returns +100, this means that the value of the commodity basket increased by $100.
Q3.1 If the value of the basket increased by $100, who would win?
A. Simon
B. Ehrlich
C. Neither, because the value of the basket doesn’t tell us if all of the commodities increased in price at the same time.
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer3.1 = 'B'
quiz.check(answer3.1)
Your answer3.1 : B
Correct.
Explanation: An increase in prices suggests an increase in
.'scarcity', what Ehrlich was betting on.
# This is the function described above.
bet.fun <- function(start, end, basket.vec, data)
{
## start = 1980
## end = 1990
## data = commod
## basket.vec <- c("Copper", "Chromium", "Nickel", "Tin")
year <- rownames(data)
start.price <- data[year == start, basket.vec]
end.price <- data[year == end, basket.vec]
## we invest 1000, buying an equal $ amount in each commodity.
start.funds <- 1000
dollars.per.commod <- start.funds/length(basket.vec) # e.g. $250 with 4
## amount purchased of each commodity
holdings.vec <- dollars.per.commod/start.price
## value at the end
value.at.end <- sum(holdings.vec * end.price)
change.in.value <- value.at.end - start.funds
return(change.in.value)
}
who.wins.fun <- function(change.in.value)
{
ifelse(change.in.value > 0, "ehrlich", "simon")
}
Let’s try this for 1980 to 1990 with Ehrlich’s basket.
ehrlich.basket.vec <- c("Copper", "Chromium", "Nickel", "Tin")
original.bet.result <- bet.fun("start" = 1980,
"end" = 1990,
"basket.vec" = ehrlich.basket.vec,
"data" = commod)
who.wins.fun(original.bet.result)
[1] "simon"
Q3.2 How much would Simon have won with our version of the “bet”? Hint: what was the value of the bet result? Check the original.bet.result object
A. About 300 dollars
B. He wouldn’t have won. He would have lost about 300 dollars
C. About 500 dollars
D. About 100 dollars
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer3.2 = 'A'
quiz.check(answer3.2)
Your answer3.2 : A
Correct.
Explanation: A negative number means prices went down, and so Simon would have won.
Commodities are highly volatile. Even if commodities were generally rising, Ehrlich could have been unlucky about the timing of his bet.
Let’s check over all years since 1900. We can construct a “loop” using R that will repeat the bet according to our instructions. We can then save the output in a vector and make a judgement about whether Ehrlich was simply unlucky.
Here’s a simple example of a loop, in which we repeat an action 7 times, each time increasing the value of “i”, and printing this value along with a label “iteration”.
for (i in 1:7) ## the variable "i" takes the value 1, 2, 3, ...
{
## anything in between {} is done once
## for each value that "i" takes
print(c("iteration", i))
}
[1] "iteration" "1"
[1] "iteration" "2"
[1] "iteration" "3"
[1] "iteration" "4"
[1] "iteration" "5"
[1] "iteration" "6"
[1] "iteration" "7"
Now let’s do a loop to see who won the bet in every year of the last century.
start.vec <- 1900:2005 ## a vector of years to start the bet
bet.result.vec <- rep(NA, length(start.vec)) ## an empty vector to be
## used to store the
## results
names(bet.result.vec) <- start.vec ## labeling the elements (you can ignore)
for (i in 1:length(start.vec))
{
bet.result.vec[i] <- bet.fun(start = start.vec[i],
end = start.vec[i] + 10,
basket.vec = ehrlich.basket.vec,
data = commod)
}
print(bet.result.vec)
1900 1901 1902 1903 1904 1905 1906 1907 1908
-258.700000 -156.431856 49.123809 -2.021327 -127.212088 -95.459327 -52.223399 -21.845369 293.912953
1909 1910 1911 1912 1913 1914 1915 1916 1917
-175.917402 -424.804605 -552.181803 -531.713958 -479.901991 -406.828864 -457.454997 -483.863734 -488.154673
1918 1919 1920 1921 1922 1923 1924 1925 1926
-501.451139 -259.693188 -81.082163 216.717344 243.454453 252.717049 341.054540 365.566495 331.228393
1927 1928 1929 1930 1931 1932 1933 1934 1935
386.168194 276.108124 306.675598 392.074108 414.174885 351.395641 38.681985 -29.656863 -72.914365
1936 1937 1938 1939 1940 1941 1942 1943 1944
-150.671378 -113.895743 74.669806 -21.202224 -3.043024 132.044717 202.843571 269.671205 213.919871
1945 1946 1947 1948 1949 1950 1951 1952 1953
395.367748 542.721218 291.148075 176.863221 283.016148 92.501372 -34.354117 84.176895 16.043674
1954 1955 1956 1957 1958 1959 1960 1961 1962
199.861978 170.674010 38.283426 107.300058 183.451841 109.764135 286.654596 400.477990 181.086693
1963 1964 1965 1966 1967 1968 1969 1970 1971
314.033040 526.655925 591.149632 599.870085 591.992619 507.597248 647.651367 627.592390 308.600045
1972 1973 1974 1975 1976 1977 1978 1979 1980
97.417259 -38.528232 -294.608549 -353.756361 -475.654892 -441.250784 71.947758 -57.956949 -306.220473
1981 1982 1983 1984 1985 1986 1987 1988 1989
-275.830073 -193.578232 -353.610315 -237.373103 35.802145 16.675437 -96.471592 -524.143483 -588.938139
1990 1991 1992 1993 1994 1995 1996 1997 1998
-354.297500 -393.554388 -372.843395 -10.989176 366.094672 68.122978 768.730531 1523.535732 2017.405153
1999 2000 2001 2002 2003 2004 2005
1150.647495 1747.100492 2599.771715 2193.400721 1525.633810 609.806673 216.228316
To summarize our results, let’s look at them in several ways.
Plot the numbers
plot(start.vec, bet.result.vec)
abline(h = 0)
text(1960, 1500, "Ehrlich wins", col = "blue")
text(1960, -250, "Simon wins", col = "red")
In the graph, it looks like Ehrlich would have won more of the time. But not a lot more.
Let’s tabulate how many times Ehrlich and Simon would have won:
## Convert to a vector of "simon" and "ehrlich", depending on who won
winners.vec <- who.wins.fun(bet.result.vec)
print(winners.vec)
1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910
"simon" "simon" "ehrlich" "simon" "simon" "simon" "simon" "simon" "ehrlich" "simon" "simon"
1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921
"simon" "simon" "simon" "simon" "simon" "simon" "simon" "simon" "simon" "simon" "ehrlich"
1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932
"ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich"
1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943
"ehrlich" "simon" "simon" "simon" "simon" "ehrlich" "simon" "simon" "ehrlich" "ehrlich" "ehrlich"
1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954
"ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "simon" "ehrlich" "ehrlich" "ehrlich"
1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965
"ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich"
1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976
"ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "simon" "simon" "simon" "simon"
1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987
"simon" "ehrlich" "simon" "simon" "simon" "simon" "simon" "simon" "ehrlich" "ehrlich" "simon"
1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998
"simon" "simon" "simon" "simon" "simon" "simon" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich"
1999 2000 2001 2002 2003 2004 2005
"ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich" "ehrlich"
## count number of times each won using the "table()" function
table(winners.vec)
winners.vec
ehrlich simon
62 44
Q4.1 What percent of the time would Ehrlich have won of the 106 simulated bets from 1900 to 2005?
A. About 62 percent
B. About 58 percent
## "Replace the NA with your answer (e.g., 'A' in quotes)"
answer4.1 = 'B'
quiz.check(answer4.1)
Your answer4.1 : B
Correct.
Explanation: 62/106 is about 0.58.
Make a fancier plot which shows all the periods when each would’ve won. (You don’t need to understand this code.)
plot(start.vec, bet.result.vec, type = "n") #an empty plot
abline(h = 0)
e <- which(winners.vec == "ehrlich") # T or F, to subset text()
s <- which(winners.vec == "simon")
text(x = start.vec[e], y = bet.result.vec[e], labels = "e", col = "blue")
text(x = start.vec[s], y = bet.result.vec[s], labels = "s", col = "red")
text(1960, 1500, "Ehrlich wins", col = "blue")
text(1960, -250, "Simon wins", col = "red")
A change in the supply of a particular commodity may or may not cause a large price change – depending on the availability of substitutes. (Note: the results from this section will be useful for your write-up of the graded questions at the end of the lab.)
The following code provides a template for a single commodity, in this case “Chromium” (but you can change the commodity).
start.vec <- 1900:2005
result.vec <- rep(NA, length(start.vec))
for (i in 1:length(start.vec))
{
result.vec[i] <- bet.fun(start = start.vec[i],
end = start.vec[i] + 10,
basket.vec = c("Chromium"),
data = commod)
}
winner.vec <- who.wins.fun(result.vec)
cat("counts:\n")
counts:
table(winner.vec)
winner.vec
ehrlich simon
61 45
cat("proportions:\n")
proportions:
prop.table(table(winner.vec))
winner.vec
ehrlich simon
0.5754717 0.4245283
Well done. You are finished with the computing portion of Lab 5.
- What relationship did Ehrlich expect to hold between commodity prices and population growth? Ehrlich expected that with population growth, commodity prices would increase as well.
- Who won the bet in 1990? Given our analysis of other time periods, would you say that the winner was “lucky” or “right”, or both? [Explain your answer in 50 to 100 words.] Simon won the bet in 1990 for a check of $576 from Ehrlich. I would say he wwere both lucky and right. The timing of his decision definitely affects his winning, but he probably also had a good idea of how commodity prices were to grow or decrease.
As noted in the lab, this section is for you to explore and describe what you found. Whether what you find is conclusive or inconclusive, you can still get full credit by reporting whatever you found.
- Choose another easily substitutable commodity from the database. Conduct the analysis of its price as the previous part of the lab and answer the following questions.
3.1) Why do you think this commodity would be easily substitutable, explaining what “service” it provides with 1 or 2 sentences. I think Pork would be easily substitutable for any other variety of meat, such as beef or lamb. Since it is a food option, it isn’t so much vital as say beef and lamb, since those animals are valuable for more than just their meat, but also their leather/wool.
3.2) Attach a plot of the real price of your chosen commodity and comment on its trend up to 1980 in 1 sentence. Hint: you can modify code in section 2.
year.vec <- rownames(commod)
plot(year.vec, commod$Pork, type = "l")
abline(v = 1980) # the date of "the bet"
The trend definitely goes downward as time goes on.
3.3) Attach a plot of the change of prices (“bet.result”) of the chosen commodity.
start.vec <- 1900:2005 ## a vector of years to start the bet
bet.result.vec <- rep(NA, length(start.vec)) ## an empty vector to be
## used to store the
## results
names(bet.result.vec) <- start.vec ## labeling the elements (you can ignore)
for (i in 1:length(start.vec))
{
bet.result.vec[i] <- bet.fun(start = start.vec[i],
end = start.vec[i] + 10,
basket.vec = c("Pork"),
data = commod)
}
plot(start.vec, bet.result.vec)
abline(h = 0) # the date of "the bet"
text(1980, 1000, "Ehrlich wins", col = "blue")
text(1960, -500, "Simon wins", col = "red")
Hint 1: there would only be your chosen commodity in the “basket.vec”. You can either modify the original “ehrlich.basket.vec” or create your own “basket.vec”. Remember to modify for-loop consistently.
Hint 2: you don’t need to show whether Ehrlich or Simon win about this commodity. But labelling the plot with different colors can help you understand the general trend.
Note (NOT REQUIRED): To make it a better graph, you can add a title to the graph indicating the commodity you choose adding ‘main = “commodity name”’ to the syntax.
- Choose a commodity from the database which you think would be hard to substitute for. And explain why you think this commodity would NOT be easily substituted, explaining what “service” it provides. (In 1 or 2 sentences) [Note: you don’t need to analyze the data for this problem.] Wheat or Coal would be difficult to substitute for. Wheat is a common commodity for grains, such as bread, and gives lots of nutrition. Bread is very crucial for meals, and thus wheat would be very difficult to simply substitute for something else. Coal is also very important, as it is the main commodity for heat in homes and for machinery to work.
Congratulations! You are finished with Lab 5.