【问题标题】:Mixture of Linear Regression Models using flexmix使用 flexmix 混合线性回归模型
【发布时间】:2013-11-11 20:44:55
【问题描述】:

我有一个包含响应变量 ADA 和自变量 LEV、ROA 和 ROAL 的数据集。数据称为 dt。我使用以下代码来获取潜在类的系数。

m1 <- stepFlexmix(ADA ~ LEV+ROA+ROAL,data=dt,control= list(verbose=0), 
k=1:5,nrep= 10);  

m1 <- getModel(m1, "BIC");

一切都很好,直到我从http://rss.acs.unt.edu/Rdoc/library/flexmix/html/flexmix.html阅读以下内容

model Object of FLXM of list of FLXM objects. Default is the object returned by calling FLXMRglm().

我认为默认模型调用是广义线性模型,而我对线性模型感兴趣。如何使用线性模型而不是 GLM?我搜索了很长时间,除了这个例子之外,有点无法得到它 http://www.inside-r.org/packages/cran/flexmix/docs/flexmix,我无法理解:

data("NPreg", package = "flexmix")

## mixture of two linear regression models. Note that control parameters
## can be specified as named list and abbreviated if unique.
ex1 <- flexmix(yn~x+I(x^2), data=NPreg, k=2,
                   control=list(verb=5, iter=100))

ex1
summary(ex1)
plot(ex1)

## now we fit a model with one Gaussian response and one Poisson
## response. Note that the formulas inside the call to FLXMRglm are
## relative to the overall model formula.
ex2 <- flexmix(yn~x, data=NPreg, k=2,
               model=list(FLXMRglm(yn~.+I(x^2)), 
                          FLXMRglm(yp~., family="poisson")))
plot(ex2)

请告诉我如何使用线性回归而不是 GLM。还是我已经在使用 LM 并且因为“默认模型线”而感到困惑?请解释。谢谢。

【问题讨论】:

  • 广义线性模型将 OLS 回归作为一种特殊情况。即,当您运行lm(y~x) 时,您正在运行一个GLiM,尽管我们通常不这么认为。从示例中可以看出,使用标识链接和正态分布作为响应是默认设置,尽管其余文档并没有让我非常清楚。换句话说,如果你不写family="poisson" 部分,我想你会没事的。
  • 谢谢。我也做了一个数值分析。我相信我的结果将来可能会对某人有所帮助。因此,将结果发布在这里。
  • 恭喜,这是解决问题的好方法;我自己做很多。为什么不将其发布为您自己的答案,而不是编辑?然后你可以接受它,这个线程不会看起来未完成。如果您想更全面地了解 GLiM 以及逻辑回归和线性回归等事物之间的关系,我在 Cross Validated (stats.SE) 上有一个答案,这可能会有所帮助——尽管写在不同的上下文中:difference-between-logit-and-probit-models.
  • 您好,谢谢您的建议。贴出我的答案。我看了你的帖子,非常好。谢谢你这么棒的帖子。

标签: r


【解决方案1】:

我做了一个数值分析来了解是否

m1 <- stepFlexmix(ADA ~ LEV+ROA+ROAL,data=dt,control= list(verbose=0)

确实会产生线性回归的结果。为了进行实验,我运行了以下代码,发现是的,估计的参数确实来自线性回归。实验帮助我减少了我的保留意见。

  x1 <- c(1:200);
  x2 <- x1*x1;
  x3 <- x1*x2;
  e1 <- rnorm(200,0,1);
  e2 <- rnorm(200,0,1);
  y1 <- 5+12*x1+20*x2+30*x3+e1;
  y2 <- 18+5*x1+10*x2+15*x3+e2;
  y <- c(y1,y2)
  x11 <- c(x1,x1)
  x22 <- c(x2,x2)
  x33 <- c(x3,x3)
  d <- data.frame(y,x11,x22,x33)

  m <- stepFlexmix(y ~ x11+x22+x33, data =d, control = list(verbose=0), k=1:5, nrep = 10);
  m <- getModel(m, "BIC");
  parameters(m);
  plotEll(m, data = d)
  m.refit <- refit(m);
  summary(m.refit)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 2018-03-17
    • 2019-10-09
    • 2015-05-26
    • 1970-01-01
    相关资源
    最近更新 更多