如何正确实现各州年份与人均CO₂排放量的相关性分析?
各州年份与人均CO₂排放量相关性分析修正方案
从你提供的趋势图(
)来看,部分州的人均CO₂排放量呈现非线性或波动式的单调趋势,而你当前使用的默认Pearson相关系数仅能捕捉线性相关关系,这可能是结果不符合预期的核心原因。
当前代码及输出
你使用的代码:
correlations <- co2emissionsdata %>% group_by(State) %>% summarise( correlations = cor( Year, `CO2 Emissions Per Capita (tonne)`)) print(correlations)
输出结果:
State correlations <chr> <dbl> 1 ACT -0.688 2 NSW -0.984 3 NT -0.523 4 QLD -0.931 5 SA -0.770 6 TAS -0.924 7 VIC -0.947 8 WA -0.198
修正方案
1. 改用Spearman秩相关系数
Spearman系数基于数据的秩次计算,能有效捕捉单调相关关系(无论线性与否),更适配图表中部分州的波动上升/下降趋势:
correlations <- co2emissionsdata %>% group_by(State) %>% summarise( pearson_cor = cor(Year, `CO2 Emissions Per Capita (tonne)`), spearman_cor = cor(Year, `CO2 Emissions Per Capita (tonne)`, method = "spearman") ) print(correlations)
2. 可视化线性拟合趋势验证
通过绘制每个州的线性拟合线,直观判断趋势是否适合线性相关分析:
library(ggplot2) co2emissionsdata %>% ggplot(aes(x = Year, y = `CO2 Emissions Per Capita (tonne)`)) + geom_point(size = 1.5) + geom_smooth(method = "lm", se = FALSE, color = "#2c3e50") + facet_wrap(~State, scales = "free_y") + theme_minimal() + labs(title = "各州人均CO₂排放量年份趋势及线性拟合", x = "年份", y = "人均CO₂排放量(吨)")
如果部分州的趋势明显非线性,可进一步尝试多项式拟合或分段回归分析,确保相关性分析匹配数据的真实趋势。
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

