В сводных графиках линейной модели, как пометить выбросы с помощью переменной группировки вместо значения индекса? - PullRequest
1 голос
/ 26 февраля 2020

У меня есть фрейм данных, структурированный так:

set.seed(123)
data<- data.frame(
  ID=factor(letters[seq(20)]),
  Location = rep(c("alph","brav", "char","delt"), each = 5),
  Var1 = rnorm(20),
  Var2 = rnorm(20),
  Var3 = rnorm(20)
)  

Я построил линейную модель: mod1 <- lm(Var1~Location,mydata). Когда я использую: plot(mod1) на объекте линейной модели, выбросы помечаются индексом значения. Есть ли способ обозначить эти точки значением в ID? Другими словами, в этом примере значения 6, 16 и 18 помечены на графиках, и я хочу, чтобы они были помечены как f, p и r соответственно, потому что это их соответствующие значения в ID

1 Ответ

1 голос
/ 27 февраля 2020

stats ::: plot.lm используется для построения диагноза c графиков, и есть два варианта:

id.n: number of points to be labelled in each plot, starting with
      the most extreme.

labels.id: vector of labels, from which the labels for extreme points
          will be chosen.  ‘NULL’ uses observation numbers.

По умолчанию id.n = 3, поэтому они всегда обозначают 3 наблюдения с наибольшей дистанцией повара. Я включил это как часть ответа, потому что вы можете быть осторожны, интерпретируя их как выбросы.

Чтобы получить эти баллы, вы должны

mod1 <- lm(Var1~Location,data)
outl = order(-cooks.distance(mod1))[1:3]
outl
[1] 18  6 16

Чтобы построить график, вы можете либо предоставьте label.id идентификатор, который вы хотите, или вы начинаете с нуля:

par(mfrow=c(1,2))
plot(mod1,which=1,labels.id =data$ID)
plot(fitted(mod1),residuals(mod1))
panel.smooth(fitted(mod1),residuals(mod1))
text(fitted(mod1)[outl]+0.01,residuals(mod1)[outl],
data$ID[outl],col="red")

enter image description here

До go через все графики, выполните :

plot(mod1,labels.id=data$ID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...