如何在2D散点图上创建线性回归线

时间:2014-02-07 04:22:58

标签: r plot linear-regression

我有一类来自双变量正态分布的数据。这给了我2列,我用

绘制它
plot(Data_Class1).

现在我有来自不同双变量正态分布的另一类数据。我再次有2列,并使用

覆盖此图
points(Data_Class2).

现在我必须在这个图上拟合线性回归线。

LinRegModel <- lm(Data_Class2 ~ DataClass1)

abline(LinRegModel)

这给了我一条线,但它只使用了6个回归系数中的前两个。

               [,1]      [,2]    
(Intercept)     0.88174   1.64518
Data_Class_11   0.02220   0.13223
Data_Class_12  -0.01948   0.13870

并且等于执行abline(0.88174,0.02220)

如何使用所有6个回归系数?我应该使用所有6个回归系数吗?

1 个答案:

答案 0 :(得分:0)

所以这是一种方法。由于您没有提供任何数据,我们首先要做一些。 mvrnorm(...)从多元正态分布中生成随机样本。在这里,我们传递一个长度为2的向量作为均值,因此我们得到双变量正态。因此,data.1data.2会为Data_Class1Data_Class2建模。

由于这些设计截然不同,我们使用rbind(...)将它们合并为一个data.frame,并添加一个分类器列z,其值为data.1,而-1为data.2。现在我们拟合形式的线性模型

  

z = a + b×x 1 + c×x 2

边界将出现在z = 0处,因此我们绘制一条线

  

x 2 =(-a -b×x 1 )/ c

以下是代码:

library(MASS)
data.1 <- mvrnorm(50,mu=c(0,0),Sigma=matrix(c(1,0,0,1),2))
data.2 <- mvrnorm(50,mu=c(3,3),Sigma=matrix(c(1,0,0,1),2))
plot(data.1, xlim=c(-3,5), ylim=c(-3,5), xlab="",ylab="")
points(data.2, col="red")

data.full <- data.frame(rbind(data.1,data.2))
data.full$z <- c(rep(1,50),rep(-1,50))
fit <- lm(z~X1 + X2,data.full)
coef <- coefficients(fit)
x    <- seq(-3,5,.1)
lines(x,(-coef[1]-coef[2]*x)/coef[3], lty=2, col="blue")