如何创建由多个残差组成的图?

时间:2014-02-16 10:25:39

标签: r plot statistics dataframe regression

如何根据以下内容创建残差图(这里是y_hat和e)?

enter image description here

这也是残余情节的一种形式吗?

beeflm=lm(PBE ~ CBE + PPO + CPO + PFO +DINC + CFO+RDINC+RFP+YEAR, data = beef)
summary(beeflm)
qqnorm(residuals(beeflm))
#plot(beeflm) #in manuals I have seen they use this but it gives me multiple plot

或者这是正确的吗?

plot(beeflm$residuals,beeflm$fitted.values)

我通过评论知道plot(beeflm,which=1)是正确的但是根据所述问题我应该使用matplot但是我收到以下错误:

matplot(beeflm,which=1,
+         main = "Beef: residual plot",
+         ylab = expression(e[i]), # only 1st is taken
+         xlab = expression(hat(y[i])))

Error in xy.coords(x, y, xlabel, ylabel, log = log) : 
  (list) object cannot be coerced to type 'double'

当我使用plot时,我收到以下错误:

plot(beeflm,which=1,main="Beef: residual plot",ylab = expression(e[i]),xlab = expression(hat(y[i])))
Error in plot.default(yh, r, xlab = l.fit, ylab = "Residuals", main = main,  : 
  formal argument "xlab" matched by multiple actual arguments

你也知道以下是什么意思吗?用于说明此(或外部链接)的任何示例? enter image description here

牛肉数据如下: enter image description here

这是牛肉数据。框架:

   YEAR  PBE  CBE  PPO  CPO  PFO DINC  CFO RDINC RFP
1  1925 59.7 58.6 60.5 65.8 65.8 51.4 90.9  68.5 877
2  1926 59.7 59.4 63.3 63.3 68.0 52.6 92.1  69.6 899
3  1927 63.0 53.7 59.9 66.8 65.5 52.1 90.9  70.2 883
4  1928 71.0 48.1 56.3 69.9 64.8 52.7 90.9  71.9 884
5  1929 71.0 49.0 55.0 68.7 65.6 55.1 91.1  75.2 895
6  1930 74.2 48.2 59.6 66.1 62.4 48.8 90.7  68.3 874
7  1931 72.1 47.9 57.0 67.4 51.4 41.5 90.0  64.0 791
8  1932 79.0 46.0 49.5 69.7 42.8 31.4 87.8  53.9 733
9  1933 73.1 50.8 47.3 68.7 41.6 29.4 88.0  53.2 752
10 1934 70.2 55.2 56.6 62.2 46.4 33.2 89.1  58.0 811
11 1935 82.2 52.2 73.9 47.7 49.7 37.0 87.3  63.2 847
12 1936 68.4 57.3 64.4 54.4 50.1 41.8 90.5  70.5 845
13 1937 73.0 54.4 62.2 55.0 52.1 44.5 90.4  72.5 849
14 1938 70.2 53.6 59.9 57.4 48.4 40.8 90.6  67.8 803
15 1939 67.8 53.9 51.0 63.9 47.1 43.5 93.8  73.2 793
16 1940 63.4 54.2 41.5 72.4 47.8 46.5 95.5  77.6 798
17 1941 56.0 60.0 43.9 67.4 52.2 56.3 97.5  89.5 830

2 个答案:

答案 0 :(得分:2)

使用plot(beeflm, which=1)获取残差和拟合值之间的关系曲线。

require(graphics)

## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
## Page 9: Plant Weight Data.
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
plot(lm.D9, which=1)

被修改

您可以使用下面给出的matplot

matplot(
  x = lm.D9$fitted.values
, y = lm.D9$resid
)

答案 1 :(得分:1)

使用mtcars数据说明此的示例:

fit <- lm(mpg ~ ., data=mtcars)
plot(x=fitted(fit), y=residuals(fit))

par(mfrow=c(3,4)) # or 'layout(matrix(1:12, nrow=3, byrow=TRUE))'
for (coeff in colnames(mtcars)[-1])
  plot(x=mtcars[, coeff], residuals(fit),  xlab=coeff, ylab=expression(e[i]))