【发布时间】: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)
【问题讨论】: