泊松回归如何可视化?


11

我想将代码缺陷与代​​码复杂性指标(如紧密度)相关联。一种常见的模型是将其视为泊松过程,其中持续时间是编码花费的时间,而密度是编码复杂度的函数。我能够进行回归并获得显着性值等。

但是,对我而言,很难直观地看到结果(对于数学上不太喜欢的同事而言,则更加困难)。如果是线性趋势等,是否有一种很好的方法来查看异常值?(感谢您链接到R包。)

例如,我可以绘图,Defects / Time ~ Complexity但是这很嘈杂,并且由于Defects离散且很小,所以很难查看趋势。我想到的一件事是,我可以将数据切成分位数,然后对每个分位数进行回归并绘制结果密度-我不确定这是否有效,尤其是因为我的数据不是正态分布的,因此在分位数上误导人们。

Answers:


6

拟合模型后,为什么不使用预测的缺陷作为变量,使用对他们有意义的任何标准技术与其他缺陷进行比较?它具有连续变量的优点,因此您甚至可以看到很小的差异。例如,人们将了解预期的缺陷数量1.4和0.6之间的差异,即使它们都四舍五入到一个。

例如,关于预测值如何取决于两个变量的示例,您可以绘制时间与复杂性的等高线图,作为两个轴以及颜色和轮廓线,以显示预测的缺陷。并在顶部叠加实际数据点。

下图需要一些打磨和说明,但可能是一个起点。

在此处输入图片说明

另一种选择是添加变量图或部分回归图,这是传统的高斯响应回归所更熟悉的。这些在汽车库中实现。在其余的解释变量对响应和解释变量的贡献都消除之后,有效地显示了响应的剩余量与其中一个解释变量的剩余量之间的关系。根据我的经验,大多数非统计受众都很难理解这些内容(当然,由于我的解释不充分)。

在此处输入图片说明

#--------------------------------------------------------------------
# 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

Ë[ÿ一世|X一世]ÿ一世X一世是您的回归变量,例如代码复杂度。

X一世ÿ一世=0ÿ一世=1个

X一世X一世,但是如果向观众抛出多于4张图,这并不能获得良好的视觉效果立刻。

X一世X一世

顺便说一句:您是否对数据也进行了负二项式回归?结果有很大不同吗?如果是这样,则您的Poisson假设(条件均值等于条件方差)可能过于严格(请参见“过度分散”)。例如,如果您的变量“缺陷”具有许多零,可能就是这种情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.