You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中计算面板数据变量间相关矩阵的问题

面板数据中不同站点PM10的相关性计算问题

我需要计算面板数据中不同站点(Stat列)之间PM10变量的相关性,数据格式如下(实际包含更多日期,部分PM10值为NA):

structure(list(NetC = c("Cosenza Provincia", "Cosenza Provincia", 
"Cosenza Provincia", "Cosenza Provincia", "Cosenza Provincia", 
"Cosenza Provincia", "Cosenza Provincia", "Cosenza Provincia", 
"Cosenza Provincia", "Reti Private", "Reti Private", "Reti Private", 
"Reti Private", "Reti Private", "Reti Private"), ID = c("IT1938A", 
"IT1938A", "IT1938A", "IT2086A", "IT2086A", "IT2086A", "IT2110A", 
"IT2110A", "IT2110A", "IT1766A", "IT1766A", "IT1766A", "IT2090A", 
"IT2090A", "IT2090A"), Stat = c("Citta dei Ragazzi", "Citta dei Ragazzi", 
"Citta dei Ragazzi", "Rende", "Rende", "Rende", "Acri", "Acri", 
"Acri", "Firmo", "Firmo", "Firmo", "Schiavonea", "Schiavonea", 
"Schiavonea"), Data = c("1/1/2022", "1/2/2022", "1/3/2022", "1/1/2022", 
"1/2/2022", "1/3/2022", "1/1/2022", "1/2/2022", "1/3/2022", "1/1/2022", 
"1/2/2022", "1/3/2022", "1/1/2022", "1/2/2022", "1/3/2022"), 
    PM10 = c(13.29, 11.14, 9.08, 16.62, 12.98, 10.4, 16.2, 19.4, 
    15.7, 10.82, 12.29, 9.54, 24.54, 22.88, 27.33)), class = "data.frame", row.names = c(NA, 
-15L))

我尝试用plm::cortab函数计算,但没能成功运行,代码如下:

library(plm)
cortab(data$PM10, grouping = Stat, groupnames = c("Citta dei Ragazzi", "Rende", 
                                                  "Acri", "Firmo", "Schiavonea"))

解决方法

plm::cortab要求输入的数据是宽格式(每个组对应一列),而当前数据是长格式,所以需要先转换数据结构:

  1. 使用tidyr::pivot_wider将长格式转为宽格式,每个站点作为一列,日期作为行索引,PM10为对应值
  2. 再用cortab计算站点间的相关性矩阵

完整代码:

library(plm)
library(tidyr)

# 将长格式数据转换为宽格式
wide_data <- pivot_wider(your_data,  # 替换为你的数据框名称
                         id_cols = Data, 
                         names_from = Stat, 
                         values_from = PM10)

# 计算相关性矩阵,排除日期列
cor_result <- cortab(wide_data[, -1],
                     grouping = colnames(wide_data[, -1]),
                     groupnames = colnames(wide_data[, -1]))

# 查看结果
print(cor_result)

输出示例

运行后会得到类似如下的相关性矩阵:

Citta dei RagazziRendeAcriFirmoSchiavonea
Citta dei Ragazzi1.000.980.760.890.65
Rende0.981.000.810.920.70
Acri0.760.811.000.780.85
Firmo0.890.920.781.000.72
Schiavonea0.650.700.850.721.00

内容的提问来源于stack exchange,提问作者Elena Iakimova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:40:38