我有一类来自双变量正态分布的数据。这给了我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个回归系数吗?
答案 0 :(得分:0)
所以这是一种方法。由于您没有提供任何数据,我们首先要做一些。 mvrnorm(...)
从多元正态分布中生成随机样本。在这里,我们传递一个长度为2的向量作为均值,因此我们得到双变量正态。因此,data.1
和data.2
会为Data_Class1
和Data_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")