绘图错误 - 半正态图[

时间:2013-11-13 00:29:17

标签: r plot

希望这是一个直截了当的问题。我不确定哪里有错误 - 似乎R在这里不起作用。我重新启动了R并重现了错误,所以我不确定发生了什么。

问题:我有一些数据,我正在尝试为效果生成一个半正常的图。哼哼,一切都很顺利...除了最重要的效果没有出现在我的半正常情节中:

# load data
dat2 <- read.table("http://www.stat.ucla.edu/~hqxu/stat201A/data/solder2.dat")
# required library
library(faraway)
# rename vars
names(dat2) <- tolower(names(dat2))
# create full model
a1.1 <- aov(defects ~ a + b + c + d + e + f + g + h + a:b + a:e + a:f + a:g + a:h +
              b:f + b:g + b:h + c:f + c:g + c:h + d:f + d:g + d:h + e:f + e:g + e:h,data=dat2)
# plot effects
halfnorm(a1.1$coef[-1], nlab= length(a1.1$coef[-1])/3-1, labs= names(a1.1$coef[-1]),
         ylab= "abs|Factor Effects|",
         main= "Half Normal Plot") +  qqline(abs(a1.1$coef[-1]))

enter image description here

正如你所看到的,我的情节缺少效果C.最大的一个。如果您无法重现此错误,请与我们联系。这对我来说似乎很奇怪。

# effects from the model, descending
a1.1$coef[-1][order(abs(a1.1$coef[-1]), decreasing=T)][1:10]
      c       a       e     a:h     b:f     c:f     a:f     c:g     c:h     a:g 
 56.875 -27.500  22.750  13.125 -13.000 -12.750  12.500  12.375   7.375   7.000

编辑正如所料,并在下面说明,这很简单。这是正确的代码:

halfnorm(a1.1$coef[-1], nlab= round(length(a1.1$coef[-1])/3,0), labs= names(a1.1$coef[-1]),
         ylab= "abs|Factor Effects|",
         main= "Half Normal Plot") +  qqline(abs(a1.1$coef[-1]))

1 个答案:

答案 0 :(得分:1)

你的nlab值最终不是一个整数。查看代码会给函数带来问题,并且在某些情况下会导致最后一个效果无法获得标签。如果你对值进行舍入或者直接将其设置为整数,则问题就会消失。