Яка хороша візуалізація для регресій Пуассона?


11

Я хочу пов’язати дефекти коду з такими показниками складності коду, як близькість. Одна поширена модель полягає в тому, щоб розглядати це як процес Пуассона, де тривалість - це скільки часу витрачається на кодування, а щільність - функція складності коду. Я в змозі зробити регресію і отримати значення значущості тощо.

Однак мені важко візуалізувати результати (а ще важче для моїх менш математично схильних колег). Чи є хороший спосіб переконатись у цьому, щоб подивитися на речі, як люди, що випадають, якщо це лінійна тенденція тощо? (Посилання на пакети R високо оцінені.)

Наприклад, я міг просто задуматися, Defects / Time ~ Complexityале це досить шумно, і оскільки Defectsце дискретно і дуже мало, важко побачити тенденцію. Одне, про що я думав, - це те, що я можу нарізати дані на квантили, а потім зробити регресію на квантил і побудувати отриману щільність - я не впевнений, наскільки це правдиво, тим більше, що мої дані зазвичай не розподіляються, щоб вони могли вводити людей в оману щодо того, що таке квантил.

Відповіді:


6

Після того, як ви підійшли до моделі, чому б не використати передбачувані дефекти як змінну для порівняння з іншими, використовуючи будь-які стандартні методи, які для них є значимими? Він має перевагу в тому, що є постійною змінною, тому ви можете бачити навіть невеликі відмінності. Наприклад, люди зрозуміють різницю між очікуваною кількістю дефектів 1,4 і 0,6, навіть якщо вони обидва заокруглені до одного.

На прикладі того, як прогнозоване значення залежить від двох змінних, ви могли б зробити контурний графік складності часу v. Як дві осі, колір і контури, щоб показати прогнозовані дефекти; і зверху накласти фактичні точки даних.

Сюжет, поданий нижче, потребує полірування та легенди, але може бути відправною точкою.

введіть тут опис зображення

Альтернативою є доданий змінний графік або частковий регресійний графік, більш відомий з традиційної регресії реакції Гауса. Вони реалізовані в автомобільній бібліотеці. Ефективно покажіть залежність між тим, що залишилося від відповіді, і тим, що залишилося від однієї з пояснювальних змінних, після того, як решта пояснювальних змінних внесли свій внесок у зміну відповіді та пояснення. На моєму досвіді більшість нестатистичних аудиторій вважають їх трохи важко оцінити (можна, звичайно, з моїх поганих пояснень).

введіть тут опис зображення

#--------------------------------------------------------------------
# Simulate some data
n<-200
time <- rexp(n,.01)
complexity <- sample(1:5, n, prob=c(.1,.25,.35,.2,.1), replace=TRUE)
trueMod <- exp(-1 + time*.005 + complexity*.1 + complexity^2*.05)
defects <- rpois(n, trueMod)
cbind(trueMod, defects)


#----------------------------------------------------------------------
# Fit model
model <- glm(defects~time + poly(complexity,2), family=poisson)
# all sorts of diagnostic checks should be done here - not shown


#---------------------------------------------------------------------
# Two variables at once in a contour plot

# create grid
gridded <- data.frame(
    time=seq(from=0, to=max(time)*1.1, length.out=100),
    complexity=seq(from=0, to=max(complexity)*1.1, length.out=100))

# create predicted values (on the original scale)
yhat <- predict(model, newdata=expand.grid(gridded), type="response")

# draw plot
image(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE),
    xlab="Time", ylab="Complexity", main="Predicted average number of defects shown as colour and contours\n(actual data shown as circles)")
contour(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE), add=TRUE, levels=c(1,2,4,8,15,20,30,40,50,60,70,80,100))

# Add the original data
symbols(time, complexity, circles=sqrt(defects), add=T, inches=.5)

#--------------------------------------------------------------------
# added variable plots

library(car)
avPlots(model, layout=c(1,3))

2

Е[уi|хi]уiхi

хiуi=0,уi=1

хiхi

хiхi

Btw: чи були також ваші дані негативними біноміальними регресіями? Чи дуже різні результати? У такому випадку ваше припущення про Пуассона (середнє умовне значення, яке дорівнює умовної дисперсії) може бути занадто обмежуючим (див. "Завищення"). Так може бути, наприклад, якщо у вашої змінної "дефект" є багато нулів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.