R语言回归分析报错:coercion to 'logical(1)'问题排查求助
解决stargazer输出回归结果时的逻辑长度错误问题
我基于调查结果进行回归分析,先通过以下代码生成衍生变量:
firstStepMutatedData <- mydata %>% mutate(republican = ifelse((pid == 2), 1, 0), conservative = ifelse((ideology >= 8), 1, 0), votedTrump = ifelse((Q38 == 2),1,0), white = ifelse((raceXethnic == "white & not hisp"),1,0), asian = ifelse((raceXethnic == "asian & not hisp" | raceXethnic == "asian & hisp"),1,0), otherRace = ifelse((raceXethnic != "white & not hisp" & raceXethnic != "asian & not hisp" & raceXethnic != "asian & hisp" ),1,0), wantMove1year = ifelse((Q17 <= 2),1,0), wantMove5year = ifelse((Q18 <= 2),1,0), jobProsp = ifelse((Q8 == 1), 1, 0), costProsp = ifelse((Q9 == 1), 1, 0), qualityProsp = ifelse((Q10 == 1), 1, 0), taxProsp = ifelse((Q11 == 2), 1, 0), schoolGovtProsp = ifelse((Q12 == 1), 1, 0), peopleProsp = ifelse((Q13 == 1), 1, 0), politicalProsp = ifelse((Q14 == 1), 1, 0), crimeProsp = ifelse((Q15 == 2), 1, 0), childrenLifeProsp = ifelse((Q16 == 1), 1, 0), buyHomeCA = ifelse((Q29 == 1),1,0), buyHomeElsewhere = ifelse((Q29 ==2),1,0), notBuyHome = ifelse((Q29==3),1,0))
随后运行回归并使用stargazer输出结果:
demoVote1 <- lm(votedTrump ~ republican + conservative, firstStepMutatedData) demoVote2 <- lm(votedTrump ~ republican + conservative + white, firstStepMutatedData) stargazer(demoVote1, demoVote2, type = "text")
运行后出现错误:
Error in (.format.s.statistics.list != "p25") && (.format.s.statistics.list != : 'length = 7' in coercion to 'logical(1)'
可能的问题及解决思路
- 版本兼容性冲突:这个错误大多是旧版
stargazer与新版本R(尤其是4.0及以上版本)不兼容导致的。旧版stargazer在处理统计量格式的逻辑判断时,未考虑向量长度的问题,引发逻辑运算的长度不匹配错误。- 解决:执行
install.packages("stargazer")更新到最新版本的stargazer包。
- 解决:执行
- 模型存在奇异拟合问题:如果回归模型中的自变量存在完全共线性(比如某个变量的取值完全由其他变量决定),会导致
lm生成的模型对象结构异常,进而让stargazer无法正常解析。- 解决:先检查变量相关性,比如用
cor(firstStepMutatedData[, c("republican", "conservative", "white")])查看相关系数;或者运行summary(demoVote1)、summary(demoVote2),看模型是否有奇异拟合的警告信息。
- 解决:先检查变量相关性,比如用
- 数据存在缺失或异常值:若
firstStepMutatedData中存在大量缺失值,或者因变量votedTrump的取值不符合预期(比如不是0/1),会导致lm模型的统计量输出结构异常,干扰stargazer的处理流程。- 解决:用
na.omit(firstStepMutatedData)去除缺失值后重新运行回归;或者用table(firstStepMutatedData$votedTrump)确认因变量的取值是否正确。
- 解决:用
内容的提问来源于stack exchange,提问作者Jessica Yu
相关产品推荐
相关产品推荐

