【问题标题】:Flexmix package in R - extracting from Flexmix output object into dataframeR 中的 Flexmix 包 - 从 Flexmix 输出对象中提取到数据框中
【发布时间】:2023-02-07 06:29:54
【问题描述】:

我有一个使用 R 中的 Flexmix 包运行的 2 分量混合模型的输出。我正在尝试提取模型系数列表,该列表存储在一个似乎是列表(mix2@components$Comp.1)的内部“形式类 FLXcomponent”的对象。我想将每个组件的估计值存储在单独的数据框中。

### Simulated data for regression mixture model using Flexmix
### Class 1
x<-seq(from=1,to=2, by=0.01)
y<-seq(from=0,to=1, by=0.01)
z<-x+y+y^2
class_label <- c(rep(c(1), length(z)))
dat1<-data.frame(x,y,z,class_label)
### Class2
x<-seq(from=2,to=3, by=0.01)
y<-seq(from=10,to=11, by=0.01)
z<-x^2+y+y^2
class_label <- c(rep(c(2), length(z)))
dat2<-data.frame(x,y,z,class_label)
simdat<-rbind(dat1,dat2)

### Run the model
mix2 <- flexmix(z ~ x+y+x^2+y^2, data=simdat, k=2)
out2<-summary(mix2)
out2
### Extract model coefficients for Component 1
mix2@components$Comp.1
str(mix2@components$Comp.1)
mix2@components[[1]][["Comp.1"]][,1]
mix2@components$Comp.1[,1]

我尝试在 mix2 上使用 R 中的 getSlots() 函数,但这给出了一个错误:

getSlots(mix2@components$Comp.1)
Error in .getClassesFromCache(Class) : 
  class should be either a character-string name or a class definition

如何提取模型组件中的系数并将它们保存在数据框中? 例如,以下两种方法均无效:

outdat<-as.data.frame(mix2@components[[1]][["Comp.1"]][,1])
outdat<-as.data.frame(mix2@components$Comp.1)

【问题讨论】:

    标签: r list dataframe s4


    【解决方案1】:

    这似乎有效,尽管我对其他(更好的)方法持开放态度。

    mix2 <- flexmix(z ~ I(x^2)+I(y^2), 数据=simdat, k=2)

    p1<-参数(mix2,组件=1)[[1]] p2<-参数(mix2,组件=1)[[2]] 等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 2021-02-28
      相关资源
      最近更新 更多