Section-1

§ 1.1 How many different groups are there?

statesMap = map_data('state')
table(statesMap$group) %>% length
[1] 63

§ 1.2 Which one defined the color of the outline of the states?

ggplot(statesMap, aes(x = long, y = lat, group = group)) + geom_polygon(fill = "white", color = "black")

print("color")
[1] "color"

Section-2

§ 2.1 For how many states is our binary prediction 1 (for 2012), corresponding to Republican?

train = subset(polling, Year!= 2012)
test = subset(polling, Year== 2012)
mod2 = glm(Republican~SurveyUSA+DiffCount, data=train, family="binomial")
TestPrediction = predict(mod2, test, type = "response")
TestPredictionBinary = as.numeric(TestPrediction > 0.5)
predictionDataFrame = data.frame(TestPrediction, TestPredictionBinary, test$State)#弄成資料框才能用ggplot畫出來
sum(TestPredictionBinary)
[1] 22

What is the average predicted probability of our model (on the Test set, for 2012)?

mean(TestPrediction)
[1] 0.4853

§ 2.2 How many observations are there in predictionMap?

predictionDataFrame$region = tolower(predictionDataFrame$test.State)
predictionMap = merge(statesMap, predictionDataFrame, by = "region")
predictionMap = predictionMap[order(predictionMap$order),]
nrow(predictionMap)
[1] 15034

How many observations are there in statesMap?

nrow(statesMap)
[1] 15537

§ 2.3 When we merged the data in the previous problem, it caused the number of observations to change. Why?

print("Because we only make predictions for 45 states, we no longer have observations for some of the states. These observations were removed in the merging process.")
[1] "Because we only make predictions for 45 states, we no longer have observations for some of the states. These observations were removed in the merging process."

§ 2.4 The states appear light blue and dark blue in this map. Which color represents a Republican prediction?

ggplot(predictionMap, aes(x = long, y = lat, group = group, fill = TestPredictionBinary)) + geom_polygon(color = "black")

print("light blue")
[1] "light blue"

§ 2.5 Do the colors of the states in the map for TestPrediction look different from the colors of the states in the map with TestPredictionBinary? Why or why not?

ggplot(predictionMap, aes(x = long, y = lat, group = group, fill = TestPredictionBinary))+ geom_polygon(color = "black") + scale_fill_gradient(low = "blue", high = "red", guide = "legend", breaks= c(0,1), labels = c("Democrat", "Republican"), name = "Prediction 2012")

ggplot(predictionMap, aes(x = long, y = lat, group = group, fill = TestPrediction))+ geom_polygon(color = "black") + scale_fill_gradient(low = "blue", high = "red", guide = "legend", breaks= c(0,1), labels = c("Democrat", "Republican"), name = "Prediction 2012")

print("The two maps look very similar. This is because most of our predicted probabilities are close to 0 or close to 1.")
[1] "The two maps look very similar. This is because most of our predicted probabilities are close to 0 or close to 1."

Section-3

§ 3.1 In the 2012 election, the state of Florida ended up being a very close race. It was ultimately won by the Democratic party. Did we predict this state correctly or incorrectly?

print("We incorrectly predicted this state by predicting that it would be won by the Republican party.")
[1] "We incorrectly predicted this state by predicting that it would be won by the Republican party."
# https://www.worldatlas.com/webimage/testmaps/usanames.htm

§ 3.2 What was our predicted probability for the state of Florida?

predictionMap$TestPrediction[predictionMap$region == "florida"] %>% unique
[1] 0.964

What does this imply?

print("Our prediction model did not do a very good job of correctly predicting the state of Florida, and we were very confident in our incorrect prediction.")
[1] "Our prediction model did not do a very good job of correctly predicting the state of Florida, and we were very confident in our incorrect prediction."

Section-4

grad = scale_fill_gradient(
  low="blue", high="red", 
  guide="legend", breaks= c(0,1), 
  labels=c("Democrat", "Republican"), name="Prediction 2012")
ggplot(predictionMap, aes(x=long, y=lat, group=group, fill=TestPredictionBinary)) + grad +
  geom_polygon(color='black',linetype=3,size=1) + ggtitle("Plot(1)")

ggplot(predictionMap, aes(x=long, y=lat, group=group, fill=TestPredictionBinary)) + grad +
  geom_polygon(color='black',linetype=1,size=3) + ggtitle("Plot(2)")

ggplot(predictionMap, aes(x=long, y=lat, group=group, fill=TestPredictionBinary)) + grad +
  geom_polygon(color='black',linetype=1,size=1,alpha=0.3) + ggtitle("Plot(3)")

§ 4.1 Plots (1) and (2) were created by changing different parameters of geom_polygon from their default values.

What is the name of the parameter we changed to create plot (1)?

print("linetype")
[1] "linetype"

What is the name of the parameter we changed to create plot (2)?

print("size")
[1] "size"

§ 4.2 Plot (3) was created by changing the value of a different geom_polygon parameter to have value 0.3. Which parameter did we use?

print("alpha")
[1] "alpha"
LS0tDQp0aXRsZTogIkFTNy0xIEVsZWN0aW9uIEZvcmVjYXN0aW5nIFJldmlzaXRlZCINCmF1dGhvcjogIumZs+ato+isgCBsb3Vpc2FuMTIzIDIwMTgvMDcvMjkiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyMjIyAgU2VjdGlvbi0xDQpfX8KnIDEuMV9fIEhvdyBtYW55IGRpZmZlcmVudCBncm91cHMgYXJlIHRoZXJlPw0KYGBge3J9DQpzdGF0ZXNNYXAgPSBtYXBfZGF0YSgnc3RhdGUnKQ0KdGFibGUoc3RhdGVzTWFwJGdyb3VwKSAlPiUgbGVuZ3RoDQpgYGANCg0KX1/CpyAxLjJfXyBXaGljaCBvbmUgZGVmaW5lZCB0aGUgY29sb3Igb2YgdGhlIG91dGxpbmUgb2YgdGhlIHN0YXRlcz8NCmBgYHtyfQ0KZ2dwbG90KHN0YXRlc01hcCwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwKSkgKyBnZW9tX3BvbHlnb24oZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gImJsYWNrIikNCnByaW50KCJjb2xvciIpDQpgYGANCg0KIyMjIyAgU2VjdGlvbi0yDQpfX8KnIDIuMV9fIA0KRm9yIGhvdyBtYW55IHN0YXRlcyBpcyBvdXIgYmluYXJ5IHByZWRpY3Rpb24gMSAoZm9yIDIwMTIpLCBjb3JyZXNwb25kaW5nIHRvIFJlcHVibGljYW4/DQpgYGB7cn0NCnRyYWluID0gc3Vic2V0KHBvbGxpbmcsIFllYXIhPSAyMDEyKQ0KdGVzdCA9IHN1YnNldChwb2xsaW5nLCBZZWFyPT0gMjAxMikNCm1vZDIgPSBnbG0oUmVwdWJsaWNhbn5TdXJ2ZXlVU0ErRGlmZkNvdW50LCBkYXRhPXRyYWluLCBmYW1pbHk9ImJpbm9taWFsIikNClRlc3RQcmVkaWN0aW9uID0gcHJlZGljdChtb2QyLCB0ZXN0LCB0eXBlID0gInJlc3BvbnNlIikNClRlc3RQcmVkaWN0aW9uQmluYXJ5ID0gYXMubnVtZXJpYyhUZXN0UHJlZGljdGlvbiA+IDAuNSkNCnByZWRpY3Rpb25EYXRhRnJhbWUgPSBkYXRhLmZyYW1lKFRlc3RQcmVkaWN0aW9uLCBUZXN0UHJlZGljdGlvbkJpbmFyeSwgdGVzdCRTdGF0ZSkj5byE5oiQ6LOH5paZ5qGG5omN6IO955SoZ2dwbG9055Wr5Ye65L6GDQpzdW0oVGVzdFByZWRpY3Rpb25CaW5hcnkpDQoNCg0KYGBgDQpXaGF0IGlzIHRoZSBhdmVyYWdlIHByZWRpY3RlZCBwcm9iYWJpbGl0eSBvZiBvdXIgbW9kZWwgKG9uIHRoZSBUZXN0IHNldCwgZm9yIDIwMTIpPw0KYGBge3J9DQptZWFuKFRlc3RQcmVkaWN0aW9uKQ0KYGBgDQoNCl9fwqcgMi4yX18NCkhvdyBtYW55IG9ic2VydmF0aW9ucyBhcmUgdGhlcmUgaW4gcHJlZGljdGlvbk1hcD8NCmBgYHtyfQ0KcHJlZGljdGlvbkRhdGFGcmFtZSRyZWdpb24gPSB0b2xvd2VyKHByZWRpY3Rpb25EYXRhRnJhbWUkdGVzdC5TdGF0ZSkNCnByZWRpY3Rpb25NYXAgPSBtZXJnZShzdGF0ZXNNYXAsIHByZWRpY3Rpb25EYXRhRnJhbWUsIGJ5ID0gInJlZ2lvbiIpDQpwcmVkaWN0aW9uTWFwID0gcHJlZGljdGlvbk1hcFtvcmRlcihwcmVkaWN0aW9uTWFwJG9yZGVyKSxdDQpucm93KHByZWRpY3Rpb25NYXApDQpgYGANCkhvdyBtYW55IG9ic2VydmF0aW9ucyBhcmUgdGhlcmUgaW4gc3RhdGVzTWFwPw0KYGBge3J9DQpucm93KHN0YXRlc01hcCkNCmBgYA0KDQpfX8KnIDIuM19fIFdoZW4gd2UgbWVyZ2VkIHRoZSBkYXRhIGluIHRoZSBwcmV2aW91cyBwcm9ibGVtLCBpdCBjYXVzZWQgdGhlIG51bWJlciBvZiBvYnNlcnZhdGlvbnMgdG8gY2hhbmdlLiBXaHk/IA0KYGBge3J9DQpwcmludCgiQmVjYXVzZSB3ZSBvbmx5IG1ha2UgcHJlZGljdGlvbnMgZm9yIDQ1IHN0YXRlcywgd2Ugbm8gbG9uZ2VyIGhhdmUgb2JzZXJ2YXRpb25zIGZvciBzb21lIG9mIHRoZSBzdGF0ZXMuIFRoZXNlIG9ic2VydmF0aW9ucyB3ZXJlIHJlbW92ZWQgaW4gdGhlIG1lcmdpbmcgcHJvY2Vzcy4iKQ0KIyBXaGVuIHdlIG1lcmdlIGRhdGEsIGl0IG9ubHkgbWVyZ2VkIHRoZSBvYnNlcnZhdGlvbnMgdGhhdCBleGlzdCBpbiBib3RoIGRhdGEgc2V0cy4gDQpgYGANCg0KX1/CpyAyLjRfXyBUaGUgc3RhdGVzIGFwcGVhciBsaWdodCBibHVlIGFuZCBkYXJrIGJsdWUgaW4gdGhpcyBtYXAuIFdoaWNoIGNvbG9yIHJlcHJlc2VudHMgYSBSZXB1YmxpY2FuIHByZWRpY3Rpb24/DQpgYGB7cn0NCmdncGxvdChwcmVkaWN0aW9uTWFwLCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQsIGdyb3VwID0gZ3JvdXAsIGZpbGwgPSBUZXN0UHJlZGljdGlvbkJpbmFyeSkpICsgZ2VvbV9wb2x5Z29uKGNvbG9yID0gImJsYWNrIikNCnByaW50KCJsaWdodCBibHVlIikNCmBgYA0KDQpfX8KnIDIuNV9fIERvIHRoZSBjb2xvcnMgb2YgdGhlIHN0YXRlcyBpbiB0aGUgbWFwIGZvciBUZXN0UHJlZGljdGlvbiBsb29rIGRpZmZlcmVudCBmcm9tIHRoZSBjb2xvcnMgb2YgdGhlIHN0YXRlcyBpbiB0aGUgbWFwIHdpdGggVGVzdFByZWRpY3Rpb25CaW5hcnk/IFdoeSBvciB3aHkgbm90Pw0KYGBge3J9DQpnZ3Bsb3QocHJlZGljdGlvbk1hcCwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwLCBmaWxsID0gVGVzdFByZWRpY3Rpb25CaW5hcnkpKSsgZ2VvbV9wb2x5Z29uKGNvbG9yID0gImJsYWNrIikgKyBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibHVlIiwgaGlnaCA9ICJyZWQiLCBndWlkZSA9ICJsZWdlbmQiLCBicmVha3M9IGMoMCwxKSwgbGFiZWxzID0gYygiRGVtb2NyYXQiLCAiUmVwdWJsaWNhbiIpLCBuYW1lID0gIlByZWRpY3Rpb24gMjAxMiIpDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3QocHJlZGljdGlvbk1hcCwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwLCBmaWxsID0gVGVzdFByZWRpY3Rpb24pKSsgZ2VvbV9wb2x5Z29uKGNvbG9yID0gImJsYWNrIikgKyBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJibHVlIiwgaGlnaCA9ICJyZWQiLCBndWlkZSA9ICJsZWdlbmQiLCBicmVha3M9IGMoMCwxKSwgbGFiZWxzID0gYygiRGVtb2NyYXQiLCAiUmVwdWJsaWNhbiIpLCBuYW1lID0gIlByZWRpY3Rpb24gMjAxMiIpDQpgYGANCg0KYGBge3J9DQpwcmludCgiVGhlIHR3byBtYXBzIGxvb2sgdmVyeSBzaW1pbGFyLiBUaGlzIGlzIGJlY2F1c2UgbW9zdCBvZiBvdXIgcHJlZGljdGVkIHByb2JhYmlsaXRpZXMgYXJlIGNsb3NlIHRvIDAgb3IgY2xvc2UgdG8gMS4iKQ0KYGBgDQoNCiMjIyMgIFNlY3Rpb24tMw0KX1/CpyAzLjFfXyBJbiB0aGUgMjAxMiBlbGVjdGlvbiwgdGhlIHN0YXRlIG9mIEZsb3JpZGEgZW5kZWQgdXAgYmVpbmcgYSB2ZXJ5IGNsb3NlIHJhY2UuIEl0IHdhcyB1bHRpbWF0ZWx5IHdvbiBieSB0aGUgRGVtb2NyYXRpYyBwYXJ0eS4gRGlkIHdlIHByZWRpY3QgdGhpcyBzdGF0ZSBjb3JyZWN0bHkgb3IgaW5jb3JyZWN0bHk/DQpgYGB7cn0NCnByaW50KCJXZSBpbmNvcnJlY3RseSBwcmVkaWN0ZWQgdGhpcyBzdGF0ZSBieSBwcmVkaWN0aW5nIHRoYXQgaXQgd291bGQgYmUgd29uIGJ5IHRoZSBSZXB1YmxpY2FuIHBhcnR5LiIpDQojIGh0dHBzOi8vd3d3LndvcmxkYXRsYXMuY29tL3dlYmltYWdlL3Rlc3RtYXBzL3VzYW5hbWVzLmh0bQ0KYGBgDQoNCl9fwqcgMy4yX18gDQpXaGF0IHdhcyBvdXIgcHJlZGljdGVkIHByb2JhYmlsaXR5IGZvciB0aGUgc3RhdGUgb2YgRmxvcmlkYT8NCmBgYHtyfQ0KcHJlZGljdGlvbk1hcCRUZXN0UHJlZGljdGlvbltwcmVkaWN0aW9uTWFwJHJlZ2lvbiA9PSAiZmxvcmlkYSJdICU+JSB1bmlxdWUNCmBgYA0KV2hhdCBkb2VzIHRoaXMgaW1wbHk/DQpgYGB7cn0NCnByaW50KCJPdXIgcHJlZGljdGlvbiBtb2RlbCBkaWQgbm90IGRvIGEgdmVyeSBnb29kIGpvYiBvZiBjb3JyZWN0bHkgcHJlZGljdGluZyB0aGUgc3RhdGUgb2YgRmxvcmlkYSwgYW5kIHdlIHdlcmUgdmVyeSBjb25maWRlbnQgaW4gb3VyIGluY29ycmVjdCBwcmVkaWN0aW9uLiIpDQpgYGANCg0KIyMjIyAgU2VjdGlvbi00DQpgYGB7cn0NCmdyYWQgPSBzY2FsZV9maWxsX2dyYWRpZW50KA0KICBsb3c9ImJsdWUiLCBoaWdoPSJyZWQiLCANCiAgZ3VpZGU9ImxlZ2VuZCIsIGJyZWFrcz0gYygwLDEpLCANCiAgbGFiZWxzPWMoIkRlbW9jcmF0IiwgIlJlcHVibGljYW4iKSwgbmFtZT0iUHJlZGljdGlvbiAyMDEyIikNCmBgYA0KDQpgYGB7cn0NCmdncGxvdChwcmVkaWN0aW9uTWFwLCBhZXMoeD1sb25nLCB5PWxhdCwgZ3JvdXA9Z3JvdXAsIGZpbGw9VGVzdFByZWRpY3Rpb25CaW5hcnkpKSArIGdyYWQgKw0KICBnZW9tX3BvbHlnb24oY29sb3I9J2JsYWNrJyxsaW5ldHlwZT0zLHNpemU9MSkgKyBnZ3RpdGxlKCJQbG90KDEpIikNCmBgYA0KDQpgYGB7cn0NCmdncGxvdChwcmVkaWN0aW9uTWFwLCBhZXMoeD1sb25nLCB5PWxhdCwgZ3JvdXA9Z3JvdXAsIGZpbGw9VGVzdFByZWRpY3Rpb25CaW5hcnkpKSArIGdyYWQgKw0KICBnZW9tX3BvbHlnb24oY29sb3I9J2JsYWNrJyxsaW5ldHlwZT0xLHNpemU9MykgKyBnZ3RpdGxlKCJQbG90KDIpIikNCmBgYA0KDQpgYGB7cn0NCmdncGxvdChwcmVkaWN0aW9uTWFwLCBhZXMoeD1sb25nLCB5PWxhdCwgZ3JvdXA9Z3JvdXAsIGZpbGw9VGVzdFByZWRpY3Rpb25CaW5hcnkpKSArIGdyYWQgKw0KICBnZW9tX3BvbHlnb24oY29sb3I9J2JsYWNrJyxsaW5ldHlwZT0xLHNpemU9MSxhbHBoYT0wLjMpICsgZ2d0aXRsZSgiUGxvdCgzKSIpDQpgYGANCg0KX1/CpyA0LjFfXw0KUGxvdHMgKDEpIGFuZCAoMikgd2VyZSBjcmVhdGVkIGJ5IGNoYW5naW5nIGRpZmZlcmVudCBwYXJhbWV0ZXJzIG9mIGdlb21fcG9seWdvbiBmcm9tIHRoZWlyIGRlZmF1bHQgdmFsdWVzLg0KDQpXaGF0IGlzIHRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgd2UgY2hhbmdlZCB0byBjcmVhdGUgcGxvdCAoMSk/DQpgYGB7cn0NCnByaW50KCJsaW5ldHlwZSIpDQpgYGANCldoYXQgaXMgdGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB3ZSBjaGFuZ2VkIHRvIGNyZWF0ZSBwbG90ICgyKT8NCmBgYHtyfQ0KcHJpbnQoInNpemUiKQ0KYGBgDQoNCl9fwqcgNC4yX18gDQpQbG90ICgzKSB3YXMgY3JlYXRlZCBieSBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgYSBkaWZmZXJlbnQgZ2VvbV9wb2x5Z29uIHBhcmFtZXRlciB0byBoYXZlIHZhbHVlIDAuMy4gV2hpY2ggcGFyYW1ldGVyIGRpZCB3ZSB1c2U/DQpgYGB7cn0NCnByaW50KCJhbHBoYSIpDQpgYGANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K