示例:
x <- c(1,2,5,6)
y <- c(3,5,2,9)
m <- lm(y ~ x)
plot(m)地块(M)将吐出一系列情节。我的问题是,我怎么知道它会吐出什么情节?保罗·提特的书是如何写plot(m, which=1)来选择残差图的?ls.str(m)在这里似乎毫无用处。
我的猜测是,lm类具有为plot()函数定义的某种接口,但我不知道如何获得该函数的工作方式或可用的情节(除了键入plot(m)和写下黑匣子显示的内容外)。
发布于 2013-10-15 05:54:02
您提到了“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 :)时,您将知道构建了哪些地块:)希望这会有所帮助!
发布于 2013-10-15 03:39:48
此页
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.
我希望网页对你来说是朝着正确方向迈出的一步。
https://stackoverflow.com/questions/19372835
复制相似问题