我对多个连续的预测变量进行了多元回归,其中一些预测变量非常重要,我想针对其中一个预测变量创建DV的散点图或类似散点图,包括“回归线”。我怎样才能做到这一点?
我的情节看起来像这样
D = my.data; plot( D$probCategorySame, D$posttestScore )
如果是简单回归,则可以添加如下回归线:
lmSimple <- lm( posttestScore ~ probCategorySame, data=D )
abline( lmSimple )
但是我的实际模型是这样的:
lmMultiple <- lm( posttestScore ~ pretestScore + probCategorySame + probDataRelated + practiceAccuracy + practiceNumTrials, data=D )
我想添加一条反映系数并从实际模型截取而不是简化模型的回归线。我想为所有其他预测变量都取平均值可以做到这一点,尽管我准备听听相反的建议。
这可能没有什么区别,但是我只是以防万一,由于我可能不想绘制原始数据的事实,情况稍微有些复杂。相反,我想针对预测值的合并值绘制DV的平均值,如下所示:
D[,'probCSBinned'] = cut( my.data$probCategorySame, as.numeric( seq( 0,1,0.04 ) ), include.lowest=TRUE, right=FALSE, labels=FALSE )
D = aggregate( posttestScore~probCSBinned, data=D, FUN=mean )
plot( D$probCSBinned, D$posttestScore )
只是因为当我这样做时,它看起来对我的数据而言更加干净。
您需要在图的域中创建一个x值向量,并从模型中预测它们对应的y值。为此,您需要将此向量注入一个数据帧,该数据帧由与模型中的变量匹配的变量组成。您说过可以将其他变量固定在它们的平均值上,所以可以,因此我在解决方案中使用了该方法。给定绘图中的其他值,您所预测的x值实际上是否合法,应该在设置时考虑。
没有示例数据,我无法确定这是否完全适合您,因此,我对下面是否有任何错误表示歉意,但这至少应该说明这种方法。
# Setup
xmin = 0; xmax=10 # domain of your plot
D = my.data
plot( D$probCategorySame, D$posttestScore, xlim=c(xmin,xmax) )
lmMultiple <- lm( posttestScore ~ pretestScore + probCategorySame + probDataRelated + practiceAccuracy + practiceNumTrials, data=D )
# create a dummy dataframe where all variables = their mean value for each record
# except the variable we want to plot, which will vary incrementally over the
# domain of the plot. We need this object to get the predicted values we
# want to plot.
N=1e4
means = colMeans(D)
dummyDF = t(as.data.frame(means))
for(i in 2:N){dummyDF=rbind(dummyDF,means)} # There's probably a more elegant way to do this.
xv=seq(xmin,xmax, length.out=N)
dummyDF$probCSBinned = xv
# if this gives you a warning about "Coercing LHS to list," use bracket syntax:
#dummyDF[,k] = xv # where k is the column index of the variable `posttestScore`
# Getting and plotting predictions over our dummy data.
yv=predict(lmMultiple, newdata=subset(dummyDF, select=c(-posttestScore)))
lines(xv, yv)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句