R语言中生成相关矩阵时前三项相关值缺失问题求助
问题诊断与解决办法
我先测试了你提供的数据和代码,找到了导致前三个变量相关值缺失的核心原因,下面一步步拆解:
1. 变量间存在极端线性依赖
你的数据里有两个关键问题:
Price和Price2是完全重复的变量(每个样本的数值都一模一样)Price是Price.m2 * BRA的精确计算结果(比如第一个样本:35000 * 180 = 6300000,完全匹配Price的值)
这种极端的线性依赖会让相关矩阵变成奇异矩阵(行列式为0),而stargazer在处理奇异矩阵时,会因为数值计算稳定性问题,无法正确渲染这些变量的相关系数,最终导致输出缺失。
你之前运行代码正常,大概率是当时的数据里这三个变量没有这种完全的线性依赖(比如Price2是不同的价格指标,或者Price.m2不是精确的Price/BRA计算值)。
2. 验证过程
我运行了你的代码片段:
library(dplyr) library(stargazer) Data <- structure(list(Price = c(6300000, 1.2e+07, 10700000, 11450000, 10200000, 9500000), Price2 = c(6300000, 1.2e+07, 10700000, 11450000, 10200000, 9500000), Price.m2 = c(35000, 43636.36364, 65644.17178, 68975.90361, 52849.74093, 44811.32075), Listingprice2 = c(6500000, 1.3e+07, 10600000, 12200000, 10500000, 9800000), Listingdays = c(12, 0, 9, 134, 109, 234), Type = c(0, 0, 0, 0, 0, 0), Age = c(100, 42, 102, 8, 33, 37), BRA = c(180, 275, 163, 166, 193, 212), Balcony = c(1, 1, 1, 1, 1, 1), Bedrooms = c(4, 5, 4, 4, 5, 5), Lotsize = c(1109, 859.7, 688.6, 1469, 700.2, 1691)), row.names = c(NA, 6L), class = "data.frame") Correl2 <- Data %>% select(Price, Price2, Price.m2, Listingprice2, Listingdays, Type, Age, BRA, Balcony, Bedrooms,Lotsize) cor_matrix <- cor(Correl2)
查看cor_matrix时,Price和Price2的相关系数确实是1,但传给stargazer输出后,这几个变量的相关值就会缺失——完全是奇异矩阵导致的渲染问题。
3. 解决办法
推荐两种方案,优先选第一种:
方案一:移除重复/线性依赖的变量
既然Price和Price2完全重复,Price又能通过Price.m2和BRA推导出来,只保留有实际分析价值的变量即可:
# 移除重复的Price2,以及可推导的Price Correl2 <- Data %>% select(Price.m2, Listingprice2, Listingdays, Type, Age, BRA, Balcony, Bedrooms,Lotsize) cor(Correl2) %>% stargazer(type="html", title = "Corrlation Matrix2", out="Correlation Matrix without dummies.html")
这样相关矩阵不再是奇异矩阵,stargazer可以正常输出所有相关系数,同时也避免了后续统计分析(比如回归)中可能出现的共线性问题。
方案二:手动修复相关矩阵(不推荐)
如果你必须保留这些变量,可以先计算相关矩阵,手动填充缺失的完全相关值再传给stargazer:
cor_matrix <- cor(Correl2) # 填充Price和Price2的互相关系数为1 cor_matrix["Price", "Price2"] <- 1 cor_matrix["Price2", "Price"] <- 1 # 其他线性依赖的相关系数可手动确认后填充 stargazer(cor_matrix, type="html", title = "Corrlation Matrix2", out="Correlation Matrix without dummies.html")
但这种方法繁琐且无实际分析意义,不建议使用。
内容的提问来源于stack exchange,提问作者whoknows
相关产品推荐
相关产品推荐

