示例:
x <- c(1,2,5,6)
y <- c(3,5,2,9)
m <- lm(y ~ x)
plot(m)
plot(m)将吐出一系列情节。我的问题是,我怎么知道它会喷出什么样的情节? Paul Teetor的书如何知道写plot(m, which=1)
来选择残差图? ls.str(m)
在这里显得毫无用处。
我的猜测是lm类具有为plot()
函数定义的某种接口,但我不知道如何获取有关其工作原理或可用图表的任何信息(除了输入{ {1}}并写下黑匣子吐出的内容。)
答案 0 :(得分:3)
此页
http://stat.ethz.ch/R-manual/R-patched/library/stats/html/plot.lm.html
解释了6个情节。
第一个是残差,与您的示例中的which=1
相对应。以下是该页面的引用:
Six plots (selectable by which) are currently available: a plot of residuals against fitted values, a Scale-Location plot of sqrt(| residuals |) against fitted values, a Normal Q-Q plot, a plot of Cook's distances versus row labels, a plot of residuals against leverages, and a plot of Cook's distances against leverage/(1-leverage). By default, the first three and 5 are provided.
我希望网页是朝着正确的方向迈出的一步。
答案 1 :(得分:3)
您提到“lm
类具有为plot()
函数定义的某种接口”。实际上,这是R中的S3机制,它遵循“method.class”命名约定。此处,方法为plot
,类为lm
。您无需键入plot.lm
即可获得这些图表。当你调用plot
时,R将首先检查第一个参数的类类型,并将它(在这种情况下为m
)命名为类lm
;然后R自动调用plot.lm
函数。
对于plot
方法,您可以通过在R中键入methods(plot)
来看到它适用于更多类:
[1] plot.acf* plot.data.frame* plot.decomposed.ts* plot.default plot.dendrogram*
[6] plot.density plot.ecdf plot.factor* plot.formula* plot.function
[11] plot.gofm* plot.gofv* plot.hap.score* plot.hclust* plot.histogram*
[16] plot.HoltWinters* plot.isoreg* plot.lm plot.md plot.medpolish*
[21] plot.mlm plot.ppr* plot.prcomp* plot.princomp* plot.profile.nls*
[26] plot.spec plot.spline* plot.stepfun plot.stl* plot.table*
[31] plot.ts plot.tskernel* plot.TukeyHSD plot.xyVector*
Non-visible functions are asterisked
您看到plot.lm
就是其中之一。要了解其中任何一项,您可以使用fix(plot.lm)
。然后你会注意到第一行:
caption = list("Residuals vs Fitted",
"Normal Q-Q", "Scale-Location", "Cook's distance", "Residuals vs Leverage",
expression("Cook's dist vs Leverage " * h[ii]/(1 - h[ii])))
显然,当你在类plot
的对象上调用lm
时,你会知道构建了哪些图:)希望这会有所帮助!