# your code goes here
# 加载绘图包
library(ggplot2)
# 原始数据
population <- c(54167, 55196, 56300, 57482, 58796, 60266, 61465, 62828,
64653, 65994, 67207, 66207, 65859, 67295, 69172, 70499,
72538, 74542, 76368, 78534, 80671, 82992, 85229, 87177,
89211, 90859, 92420, 93717, 94974, 96259, 97542, 98705,
100072, 101654, 103008, 104357, 105851, 107507, 109300, 111026,
112704, 114333, 115823, 117171, 118517, 119850, 121121, 122389,
123626, 124761, 125786, 126743, 127627, 128453, 129227, 129988,
130756, 131448, 132129, 132802)
years <- 1949:2008
df <- data.frame(year = years, population = population)
# 线性模型
linear_model <- lm(population ~ year, data = df)
df$linear_fit <- predict(linear_model)
# 二次多项式模型
poly_model <- lm(population ~ poly(year, 2), data = df)
df$poly_fit <- predict(poly_model)
# 指数模型
df$log_population
<- log(df$population
)exp_model <- lm(log_population ~ year, data = df)
df$exp_fit
<- exp(predict
(exp_model
))
# 绘图
ggplot(df, aes(x = year)) +
geom_point(aes(y = population), label = "原始数据") +
geom_line(aes(y = linear_fit, color = "线性模型")) +
geom_line(aes(y = poly_fit, color = "二次多项式模型")) +
geom_line(aes(y = exp_fit, color = "指数模型")) +
labs(x
= "年份", y
= "人口总数(万人)", title
= "不同模型对1949 - 2008年人口数据的拟合") + scale_color_manual(values = c("blue", "red", "green"))
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCiMg5Yqg6L2957uY5Zu+5YyFCmxpYnJhcnkoZ2dwbG90MikKCiMg5Y6f5aeL5pWw5o2uCnBvcHVsYXRpb24gPC0gYyg1NDE2NywgNTUxOTYsIDU2MzAwLCA1NzQ4MiwgNTg3OTYsIDYwMjY2LCA2MTQ2NSwgNjI4MjgsCiAgICAgICAgICAgICAgICA2NDY1MywgNjU5OTQsIDY3MjA3LCA2NjIwNywgNjU4NTksIDY3Mjk1LCA2OTE3MiwgNzA0OTksCiAgICAgICAgICAgICAgICA3MjUzOCwgNzQ1NDIsIDc2MzY4LCA3ODUzNCwgODA2NzEsIDgyOTkyLCA4NTIyOSwgODcxNzcsCiAgICAgICAgICAgICAgICA4OTIxMSwgOTA4NTksIDkyNDIwLCA5MzcxNywgOTQ5NzQsIDk2MjU5LCA5NzU0MiwgOTg3MDUsCiAgICAgICAgICAgICAgICAxMDAwNzIsIDEwMTY1NCwgMTAzMDA4LCAxMDQzNTcsIDEwNTg1MSwgMTA3NTA3LCAxMDkzMDAsIDExMTAyNiwKICAgICAgICAgICAgICAgIDExMjcwNCwgMTE0MzMzLCAxMTU4MjMsIDExNzE3MSwgMTE4NTE3LCAxMTk4NTAsIDEyMTEyMSwgMTIyMzg5LAogICAgICAgICAgICAgICAgMTIzNjI2LCAxMjQ3NjEsIDEyNTc4NiwgMTI2NzQzLCAxMjc2MjcsIDEyODQ1MywgMTI5MjI3LCAxMjk5ODgsCiAgICAgICAgICAgICAgICAxMzA3NTYsIDEzMTQ0OCwgMTMyMTI5LCAxMzI4MDIpCnllYXJzIDwtIDE5NDk6MjAwOApkZiA8LSBkYXRhLmZyYW1lKHllYXIgPSB5ZWFycywgcG9wdWxhdGlvbiA9IHBvcHVsYXRpb24pCgojIOe6v+aAp+aooeWeiwpsaW5lYXJfbW9kZWwgPC0gbG0ocG9wdWxhdGlvbiB+IHllYXIsIGRhdGEgPSBkZikKZGYkbGluZWFyX2ZpdCA8LSBwcmVkaWN0KGxpbmVhcl9tb2RlbCkKCiMg5LqM5qyh5aSa6aG55byP5qih5Z6LCnBvbHlfbW9kZWwgPC0gbG0ocG9wdWxhdGlvbiB+IHBvbHkoeWVhciwgMiksIGRhdGEgPSBkZikKZGYkcG9seV9maXQgPC0gcHJlZGljdChwb2x5X21vZGVsKQoKIyDmjIfmlbDmqKHlnosKZGYkbG9nX3BvcHVsYXRpb24gPC0gbG9nKGRmJHBvcHVsYXRpb24pCmV4cF9tb2RlbCA8LSBsbShsb2dfcG9wdWxhdGlvbiB+IHllYXIsIGRhdGEgPSBkZikKZGYkZXhwX2ZpdCA8LSBleHAocHJlZGljdChleHBfbW9kZWwpKQoKIyDnu5jlm74KZ2dwbG90KGRmLCBhZXMoeCA9IHllYXIpKSArCiAgZ2VvbV9wb2ludChhZXMoeSA9IHBvcHVsYXRpb24pLCBsYWJlbCA9ICLljp/lp4vmlbDmja4iKSArCiAgZ2VvbV9saW5lKGFlcyh5ID0gbGluZWFyX2ZpdCwgY29sb3IgPSAi57q/5oCn5qih5Z6LIikpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBwb2x5X2ZpdCwgY29sb3IgPSAi5LqM5qyh5aSa6aG55byP5qih5Z6LIikpICsKICBnZW9tX2xpbmUoYWVzKHkgPSBleHBfZml0LCBjb2xvciA9ICLmjIfmlbDmqKHlnosiKSkgKwogIGxhYnMoeCA9ICLlubTku70iLCB5ID0gIuS6uuWPo+aAu+aVsO+8iOS4h+S6uu+8iSIsIHRpdGxlID0gIuS4jeWQjOaooeWei+WvuTE5NDkgLSAyMDA45bm05Lq65Y+j5pWw5o2u55qE5ouf5ZCIIikgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjKCJibHVlIiwgInJlZCIsICJncmVlbiIpKQo=