首页 > 解决方案 > 去除异常值线性回归

问题描述

我正在通过线性回归运行数据并发现异常值。我试过data=dataframe[-c("country1", "country2"),]了,但异常值仍然出现。我可以在这里得到一些帮助吗?谢谢

#Remove outliers
fit <- lm(Robbery ~ Unlawful.acts.involving.controlled.drugs.or.precursors, 
          data=NoNACountry[-c("Spain", "Luxembourg"),])
par(mfrow=c(2,2))
plot(fit)

我想我不知何故丢失了行名,因为我认为RobberyandUnlawful.acts...已经成为向量?我使用的 Country 名称是行标签,RobberyandUnlawful.acts...是列。我已经能够通过此处的指导drop = FALSE在其他代码中使用,但我无法在此处合并此方法

数据框信息如下

structure(list(Intentional.homicide = c(2.03, 0.84, 1.14), Attempted.intentional.homicide = c(3.25, 
1.93, 0.54), Assault = c(5.52, 43.29, 39.54), Kidnapping = c(0.14, 
0.07, 1.03), Sexual.violence = c(5.38, 50.9, 8.64), Robbery = c(3.42, 
29.67, 16.9), Unlawful.acts.involving.controlled.drugs.or.precursors = c(70.26, 
494.05, 78.14), Country.Totals.per.000s = c(90, 620.75, 145.93
)), row.names = c("Albania", "Austria", "Bulgaria"), class = "data.frame")

标签: rdataframegraphlinear-regressionoutliers

解决方案


由于您使用的是带有行名的 data.frame,因此您可以使用

NoNACountry[!row.names(NoNACountry) %in% c("Spain", "Luxembourg"),]

推荐阅读