回归线和散点图上的点之间的差实际上是残差,因此我们需要从模型对象计算残差。这可以通过使用残差函数简单地完成。例如,如果我们创建一个定义为x和y之间的线性模型的线性模型,则残差将被发现为残差(Model)。
请看以下数据帧-
set.seed(999) x1<-rnorm(100,5,1) y1<-rnorm(100,5,2) set.seed(999) x1<-rnorm(50,5,1) x1
输出结果
[1] 4.718260 3.687440 5.795184 5.270070 4.722694 4.433976 3.121342 3.733209 [9] 4.032250 3.878991 6.325464 5.133977 5.938749 5.172538 5.957650 3.637314 [17] 5.068335 5.100658 5.901345 2.925643 3.771437 5.643044 4.640237 5.294036 [25] 3.874732 5.642266 3.893262 4.115160 3.445905 4.873321 7.382664 5.601276 [33] 5.179361 6.080531 4.753188 2.886263 4.629473 5.522868 5.517806 3.597489 [41] 4.514363 5.008498 3.717887 3.888421 5.300665 5.276479 2.949122 5.014190 [49] 5.582266 4.965274
y1<-rnorm(50,5,2) y1
输出结果
[1] 6.222789 3.709758 4.657909 2.502828 6.815813 3.366121 5.061378 2.805245 [9] 6.263176 4.886151 2.502289 4.752686 4.920821 4.117212 4.965663 5.664139 [17] 5.903942 4.077208 6.065462 7.370909 4.147725 2.713465 7.280148 5.385931 [25] 3.962250 2.559837 3.806861 1.682934 4.501635 6.555197 3.401010 2.300028 [33] 5.379501 7.656098 3.800852 7.796749 4.400438 9.056425 6.675732 5.027199 [41] 3.768654 6.341022 5.703656 5.280295 3.070839 6.451703 3.750322 7.117050 [49] 4.822037 4.550620
型号1 <-lm(y1〜x1)
我们可以使用残差函数找到差异,这是该差异的实际描述-
Difference1<-residuals(Model1) Difference1
输出结果
1 2 3 4 5 6 -0.318821302 -1.329658317 3.355482915 0.622179231 -0.219309849 0.492362522 7 8 9 10 11 12 1.120847727 -2.600159409 0.815723717 -1.179206602 -2.003523096 2.225944847 13 14 15 16 17 18 1.944418528 2.101980331 -0.177708526 -2.331382376 -2.917405743 -0.667140236 19 20 21 22 23 24 -0.973596995 1.987479224 -0.255997620 -0.265385092 1.817375711 -0.944140091 25 26 27 28 29 30 1.899985405 -0.001963328 1.028005379 -4.188344031 0.843900482 -0.412835686 31 32 33 34 35 36 -1.489716807 1.845872066 -2.563126203 0.024431186 -2.495232512 -0.757793692 37 38 39 40 41 42 2.645748932 -0.627006899 1.891963477 0.838600642 3.240642878 -0.043017748 43 44 45 46 47 48 -1.998486011 2.518834654 -2.370852257 1.983021019 -1.162755388 -0.686229669 49 50 -0.607433313 0.343427925
让我们看另一个例子-
x2<-rpois(100,5) x2
输出结果
[1] 8 2 6 5 4 4 4 4 2 3 5 5 4 10 3 2 3 5 5 8 9 8 3 6 4 [26] 5 3 2 5 6 5 2 6 8 3 9 11 2 4 4 8 2 8 1 3 2 5 8 2 6 [51] 7 4 3 4 6 2 3 2 8 4 9 4 8 3 6 4 8 9 10 4 9 9 2 7 10 [76] 8 6 7 5 6 1 2 8 8 9 10 5 1 7 3 3 1 7 2 6 2 3 4 2 7
y2<-rpois(100,10) y2
输出结果
[1] 12 4 13 12 9 7 12 7 14 12 8 6 6 15 10 12 8 14 9 11 8 6 9 7 15 [26] 7 12 15 9 7 13 11 5 2 9 11 8 17 8 15 7 12 7 11 6 12 12 8 12 8 [51] 10 6 7 7 5 9 14 9 9 17 12 12 9 10 5 11 18 9 13 7 13 10 9 11 11 [76] 12 9 8 5 9 5 7 14 10 6 10 9 10 13 11 11 9 10 6 8 16 8 8 6 6
型号2 <-lm(y2〜x2)
使用模型对象Model2查找残差-
Difference2<-residuals(Model2) Difference2
输出结果
1 2 3 4 5 6 3.34416495 4.13956424 -0.06503647 1.93496353 2.24186460 -1.16733682 7 8 9 10 11 12 -0.75813540 4.24186460 3.62806246 -2.16733682 0.54876566 -0.16733682 13 14 15 16 17 18 -3.96273611 0.24186460 3.73036282 3.03726389 -2.65583505 0.24186460 19 20 21 22 23 24 -3.75813540 0.24186460 0.13956424 0.44646531 -0.65583505 -5.16733682 25 26 27 28 29 30 -0.75813540 3.03726389 -0.75813540 -4.75813540 2.13956424 1.52576211 31 32 33 34 35 36 -1.75813540 1.03726389 -6.16733682 -2.16733682 -6.26963718 -1.55353469 37 38 39 40 41 42 2.34416495 -1.16733682 -1.06503647 -2.96273611 -2.86043576 -3.75813540 43 44 45 46 47 48 -0.96273611 -0.47423789 -1.55353469 -3.86043576 1.44646531 2.03726389 49 50 51 52 53 54 1.73036282 0.24186460 -2.96273611 2.34416495 -0.96273611 -0.16733682 55 56 57 58 59 60 1.03726389 -0.06503647 -2.16733682 1.24186460 -4.96273611 0.13956424 61 62 63 64 65 66 -2.86043576 -0.65583505 -0.86043576 -1.06503647 -0.06503647 0.24186460 67 68 69 70 71 72 1.13956424 0.13956424 1.24186460 -2.06503647 1.93496353 0.93496353 73 74 75 76 77 78 0.34416495 -4.96273611 1.24186460 -5.06503647 -0.75813540 3.93496353 79 80 81 82 83 84 4.83266318 -1.65583505 7.03726389 4.93496353 6.73036282 2.03726389 85 86 87 88 89 90 -3.96273611 1.13956424 3.83266318 1.34416495 -2.06503647 -2.86043576 91 92 93 94 95 96 9.13956424 2.93496353 -0.16733682 -0.26963718 -0.96273611 0.03726389 97 98 99 100 3.24186460 2.13956424 -3.16733682 -0.86043576
一个数据均匀分布的示例-
x3<-round(runif(50,2,5)) x3
输出结果
[1] 3 5 2 2 4 4 4 2 3 4 4 4 3 4 3 4 4 3 2 5 5 2 3 5 4 4 3 5 3 5 3 3 3 5 4 3 4 5 [39] 5 4 3 4 5 3 5 3 3 3 5 2
y3<-round(runif(50,2,10)) y3
输出结果
[1] 5 5 2 2 8 9 8 4 7 6 6 7 3 4 5 3 5 5 7 9 10 10 6 3 4 [26] 2 6 4 3 10 7 6 8 8 9 8 7 5 3 2 9 3 8 3 9 5 3 3 2 4
型号3 <-lm(y3〜x3)
使用模型对象Model3查找残差-
Difference3<-residuals(Model3) Difference3
输出结果
1 2 3 4 5 6 -1.09603340 -0.13883090 -4.05323591 2.86116910 0.90396660 -3.18162839 7 8 9 10 11 12 -0.05323591 -3.13883090 -1.13883090 -1.13883090 2.90396660 2.86116910 13 14 15 16 17 18 1.86116910 -1.13883090 -2.09603340 0.86116910 -0.09603340 -1.13883090 19 20 21 22 23 24 -0.05323591 1.86116910 -0.13883090 0.90396660 2.81837161 -2.13883090 25 26 27 28 29 30 -1.13883090 0.90396660 2.81837161 -0.09603340 2.81837161 -0.09603340 31 32 33 34 35 36 -0.13883090 -1.05323591 -2.09603340 3.86116910 1.86116910 2.86116910 37 38 39 40 41 42 2.90396660 1.86116910 1.90396660 -3.09603340 0.90396660 -4.18162839 43 44 45 46 47 48 -2.18162839 2.94676409 -4.09603340 -4.18162839 -2.05323591 2.90396660 49 50 1.90396660 -3.13883090