Jaka jest dobra wizualizacja dla regresji Poissona?

11

Chcę powiązać wady kodu z miernikami złożoności kodu, takimi jak bliskość. Jednym z powszechnych modeli jest postrzeganie tego jako procesu Poissona, w którym czas trwania to ilość czasu poświęcanego na kodowanie, a gęstość jest funkcją złożoności kodu. Jestem w stanie zrobić regresję i uzyskać wartości istotności itp.

Jednak trudno mi wizualizować wyniki (a jeszcze trudniej moim mniej skłonnym matematycznie kolegom). Czy istnieje dobry sposób, aby to zobaczyć, patrząc na wartości odstające, jeśli jest to trend liniowy itp.? (Doceniamy linki do pakietów R.)

Na przykład mógłbym po prostu spiskować, Defects / Time ~ Complexityale jest to dość głośne, a ponieważ Defectsjest dyskretne i bardzo małe, trudno jest dostrzec trend. Jedną rzeczą, o której myślałem, było to, że mogłem pokroić dane na kwantyle, a następnie wykonać regresję na kwantyl i wykreślić wynikowe gęstości - nie jestem jednak pewien, czy jest to poprawne, zwłaszcza że moje dane nie są normalnie dystrybuowane, więc może wprowadzać ludzi w błąd co do kwantyla.

Xodarap
źródło

Odpowiedzi:

6

Po dopasowaniu modelu, dlaczego nie zastosować przewidywanych defektów jako zmiennej do porównania z innymi przy użyciu wszelkich standardowych technik, które są dla nich znaczące? Ma tę zaletę, że jest zmienną ciągłą, dzięki czemu można zobaczyć nawet niewielkie różnice. Na przykład ludzie zrozumieją różnicę między oczekiwaną liczbą defektów wynoszącą 1,4 a 0,6, mimo że obie zaokrąglają do jednej.

Na przykład, w jaki sposób przewidywana wartość zależy od dwóch zmiennych, można wykonać wykres konturowy czasu v. Złożoność jako dwie osie oraz kolor i kontury, aby pokazać przewidywane defekty; i nałóż na siebie rzeczywiste punkty danych.

Poniższa fabuła wymaga dopracowania i legendy, ale może być punktem wyjścia.

wprowadź opis zdjęcia tutaj

Alternatywą jest dodany wykres zmiennej lub wykres częściowej regresji, bardziej znany z tradycyjnej regresji odpowiedzi Gaussa. Są one zaimplementowane w bibliotece samochodów. Skutecznie pokazują związek między tym, co pozostało z odpowiedzi a tym, co pozostało z jednej ze zmiennych objaśniających, po tym, jak reszta zmiennych objaśniających przyczyniła się zarówno do odpowiedzi, jak i zmiennych objaśniających. Z mojego doświadczenia wynika, że ​​większość odbiorców niestatystycznych ma trudności z ich docenieniem (oczywiście przy złym wyjaśnieniu).

wprowadź opis zdjęcia tutaj

#--------------------------------------------------------------------
# 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))
Peter Ellis
źródło
2

E[yi|xi]yixi

xiyi=0,yi=1

xixi

xixi

Btw: czy masz również ujemną regresję dwumianową na swoich danych? Czy wyniki są bardzo różne? Jeśli tak, twoje założenie Poissona (średnia warunkowa równa wariancji warunkowej) może być zbyt restrykcyjne (patrz „nadmierna dyspersja”). Może tak być na przykład w przypadku, gdy zmienna „defekt” ma wiele zer.

Bezimienny
źródło