在一个样本中区分两种不同的线性回归模型

机器算法验证 回归 分类 数据挖掘 混合分布
2022-04-10 13:13:32

假设我观察一个样本(yi,xi),i=1,...,n. 假设我知道以下内容:

yi=α0+α1xi+εi,iJ{1,...,n}

yi=β0+β1xi+εi,iJc

在哪里εi是独立同居和J事先不知道。是否可以估计α0,α1,β0,β1? 或者至少检验以下假设J=?

如果J众所周知,这个问题很容易解决。遍历所有子集是不可行的,因为我们有2n可能的组合。如果我们假设J={1,...,k}与未知k=1,...,n,这是经典的变点问题,有很多测试可用。我怀疑这可能是不适定的问题,所以我想在尝试解决它之前检查一下。

这是问题的简单说明:

N <- 200
s1 <- sample(1:N,N %/% 2)
s2 <- (1:N)[!(1:N) %in% s1]

x <- rnorm(N)
eps <- rnorm(N)

ind <- 1:N

y <- rep(NA,N*T)
y[ind %in% s1] <- 2+0.5*x[ind %in% s1]+eps[ind %in% s1]/5
y[ind %in% s2] <- 1+1*x[ind %in% s2]+eps[ind %in% s2]/5
y

sal1 <- ind %in% s1

plot(x, y)
points(x[sal1], y[sal1], col=2)
abline(2, 0.5, col=2)
abline(1, 1)

从图形上看,我们有两个不同的模型或多或少是显而易见的。也许可以使用一些分类或数据挖掘技术来解决这个问题?

2个回答

您需要将观察结果建模为混合模型。定义:

p作为样本属于第一个数据生成过程的概率。

因此,密度函数yi是(谁)给的:

f(yi|)pf1(yi|)+(1p)f2(yi|)

在哪里

f1(.)是由于第一个数据生成过程而产生的密度,并且

f2(.)是由于第二个数据生成过程而出现的密度。

然后,您可以使用最大似然(参见例如EM 算法)或贝叶斯方法来估计模型。

使用关键字“混合回归”在Rseek上的第一次点击会调出flexmix包,它可以满足您的需求。我似乎记得还有其他的包。