繁体   English   中英

线性回归模型中产生的NA

[英]NA produced in linear regression model

我已经读过类似的帖子,但是给出的答案无法解决我的问题。 我想做一个简单的线性回归,看看咬伤的发生率是否与地区,区域(疫苗或对照组)和年份有关。 如您在输出中看到的,区域RORYA的区域之一被赋予NA系数,并且我收到消息“系数:(由于奇异性而未定义1)”。 我已经阅读了此书,似乎与因素的共线性有关。 给出的一种解决方案是在调用中添加-1,这消除了截距,但不能解决我的问题,因为RORYA区在摘要输出中仍然具有NA。

我尝试过的另一种解决方案是更改调用中解释变量的顺序。 这确实改变了事情...罗里亚区突然有了系数,但Zone变量变为NA'd。 我都不希望对所有的解释性变量都满意,这两者都不是好事。

我想知道是否有人知道为什么会这样,是否有解决此问题的方法,以便所有变量都可以具有系数?

提前致谢。

可重现的示例:

df <- structure(list(DISTRICT = structure(c(1L, 6L, 5L, 3L, 2L, 4L, 
1L, 6L, 5L, 3L, 2L, 4L, 1L, 6L, 5L, 3L, 2L, 4L, 1L, 6L, 5L, 3L, 
2L, 4L), .Label = c("BUNDA", "MASWA", "MUSOMA", "RORYA", "SERENGETI", 
"TARIME"), class = "factor"), zone = structure(c(2L, 2L, 2L, 
1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 
2L, 2L, 1L, 1L, 1L), .Label = c("c", "v"), class = "factor"), 
year = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("2010", 
"2011", "2012", "2013"), class = "factor"), bites = c(7.461327937, 
NA, NA, NA, 35.16164185, 26.39109338, 57.89990479, 1.47191729, 
3.608371422, 51.36718605, NA, 16.21167165, 46.85713945, 15.89670673, 
5.212092054, 259.8137381, 30.80276062, 20.73585909, 10.44585911, 
9.420270656, 7.617673001, 307.4586643, 27.31565565, 30.16124958
), deaths = c(0, NA, NA, NA, 0, 1.508062479, 0.298453117, 
0, 0, 0, NA, 2.262093719, 0.298453117, 0.294383458, 0, 2.233355915, 
0.581184163, 1.131046859, 0.298453117, 0.588766916, 1.202790474, 
2.977807887, 0, 1.885078099)), .Names = c("DISTRICT", "zone", 
"year", "bites", "deaths"), row.names = c(NA, -24L), class = "data.frame")

码:

summary(df )
names(df)
attach(df)
is.numeric(year)
df$year  <- as.factor(as.character(df$year))
is.factor(df$year)

model1 <- lm(bites ~   zone + DISTRICT-1 +year, data = df)
summary(model1)

> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_1.0.0

loaded via a namespace (and not attached):
[1] colorspace_1.2-4 digest_0.6.4     gtable_0.1.2     MASS_7.3-34      munsell_0.4.2   plyr_1.8.1       proto_0.3-10     Rcpp_0.11.2     
[9] reshape2_1.4     scales_0.2.4     stringr_0.6.2    tools_3.1.0     

当您将一个具有因子(在本例中为DISTRICT)且没有截距的模型拟合时,方法是为每个因子创建一个虚拟二进制变量。 因此在内部,“ DISTRICT RORYA中的大小写”有一个二进制0/1值。 现在,每种情况下的zone变量都是c ,因此您在DISTRICT==RORYAzone之间具有完美的一致性。 变量是完全共线的,因此警告:

Coefficients: (1 not defined because of singularities)

并且无法定义两个参数。 因此, NA出现了。

在您的数据中,所有区域都是以下区域之一:

> table(df$DISTRICT, df$zone)

            c v
  BUNDA     0 4
  MASWA     4 0
  MUSOMA    4 0
  RORYA     4 0
  SERENGETI 0 4
  TARIME    0 4

因此,在任何分析中都将包括zoneDISTRICT变量在内将遇到麻烦。 您无法获得zone任何 zone的系数,因为根本没有足够的信息来区分任何区域及其区域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM