【发布时间】:2022-01-22 00:55:10
【问题描述】:
我目前正在尝试对 2020 年总统选举中每个州的选民投票率进行多元线性回归。
为了创建这个回归模型,我想使用以下变量:State、Total_Voters 和 Population。
当我尝试运行线性回归时,出现以下错误:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : NA/NaN/Inf in 'y'
我收集的数据集非常大。我创建了一个新的数据框,其中包含我需要的变量,如下所示:
Turnout_Rate_2020 <- sqldf("SELECT State_Full, F1a AS Total_Voters, population.Pop AS Population FROM e_2020 INNER JOIN population ON population.State = e_2020.State_Full")
之后我删除所有 NA 值:
Turnout_Rate_2020[is.na(Turnout_Rate_2020)] <- 0
之后我再次过滤数据框并过滤掉所有未报告的状态:
Turnout_Rate_2020 <- sqldf("SELECT State_Full, Total_Voters, Population FROM Turnout_Rate_2020 WHERE Total_Voters <> 0 AND Total_Voters >= 0 GROUP BY State_Full")
最终数据框如下所示:
有以下总结:
但是,当我现在尝试运行多元线性回归时,我得到了上面展示的错误。该命令如下所示:
lmTurnoutRate_2020 <- lm(State_Full ~ Population + Total_Voters, data = Turnout_Rate_2020)
我对线性回归很陌生,但我渴望学习。我已经通过 StackOverflow 看了相当多,但无法弄清楚。
如果有人能帮助我,将不胜感激。
一次完整的脚本:
Turnout_Rate_2020 <- sqldf("SELECT State_Full, F1a AS Total_Voters, population.Pop AS Population FROM e_2020 INNER JOIN population ON population.State = e_2020.State_Full")
# Change all NA to 0
Turnout_Rate_2020[is.na(Turnout_Rate_2020)] <- 0
summary(Turnout_Rate_2020)
# Select all again and filter out states which did not report. (values that were NA)
Turnout_Rate_2020 <- sqldf("SELECT State_Full, Total_Voters, Population FROM Turnout_Rate_2020 WHERE Total_Voters <> 0 AND Total_Voters >= 0 GROUP BY State_Full")
# Does not work and if I turn variables around I get NaN values.
lmTurnoutRate_2020 <- lm(State_Full ~ Population + Total_Voters, data = Turnout_Rate_2020)
summary(lmTurnoutRate_2020)
# Does not work
ggplot(lmTurnoutRate_2020, aes(x=State_Full,y=Population)) + geom_point() + geom_smooth(method=lm, level=0.95) + labs(x = "State", y = "Voters")
【问题讨论】:
-
lm(普通最小二乘回归)需要一个数字的因变量。State_Full不是数字。 -
@Roland 你能否指出如何运行回归的方向,即使
State_Full不是数字?数据集中的所有内容都基于这些状态非常感谢您的回复:) -
你真的需要更多地研究这个主题,因为在这一点上你更有可能弊大于利。您正在寻找的是一种分类算法,线性回归(或任何类型的回归)不再是一种选择。哪种分类算法?有很多,你必须决定。
-
“每个州的选民投票率”基本上是数字。您可能只是对实际的因变量感到困惑。我建议你咨询统计学家。
-
请阅读r标签页顶部的信息。特别是,其他人必须通过简单地将输入和代码复制并粘贴到他们的 R 会话中来重现示例。输入需要使用
dput显示。就目前而言,除了您自己之外没有人可以这样做,因为缺少输入。
标签: r regression linear-regression