访问R的poLCA中的类值

时间:2013-07-18 20:19:20

标签: r

我正在尝试学习潜在组件分析,同时也在学习R.我正在使用poLCA package,并且在访问属性时遇到了一些麻烦。我可以运行sample code就好了:

ds = read.csv("http://www.math.smith.edu/r/data/help.csv")
ds = within(ds, (cesdcut = ifelse(cesd>20, 1, 0)))

library(poLCA)
res2 = poLCA(cbind(homeless=homeless+1, 
    cesdcut=cesdcut+1, satreat=satreat+1, 
    linkstatus=linkstatus+1) ~ 1, 
    maxiter=50000, nclass=3, 
    nrep=10, data=ds)

但是为了使它更有用,我想访问poLCA类创建的对象中的属性:

attr(res2, 'Nobs')
attr(res2, 'maxiter')

但他们都是'Null'。我希望Nobs为453(由函数确定),maxiter为50000(由我的输入值决定)。

我确定我只是天真,但我可以使用任何可用的帮助。非常感谢!

1 个答案:

答案 0 :(得分:3)

欢迎来到R.你有正确的模型拟合语法,因为你可以得到一个模型(不知道潜在的组件分析是如何工作的,因此不能说明你的结果的统计有效性) 。但是,您已经混淆了R可以存储与模型相关的信息的不同方式。

poLCA返回类poLCA的对象,即

  

包含以下元素的列表:

     

(...)

     

Nobs完全观察到的病例数(小于或等于N)。

     

maxiter通过其设置估计算法的最大迭代次数   跑。

由于它是一个列表,您可以使用$运算符从模型对象中提取单个元素:

res2$Nobs      # number of observations
res2$maxiter   # maximum iterations

在某些情况下,可能有提取器函数来获取此信息而无需进行低级索引。例如,许多模型拟合函数将具有fitted方法,该方法从训练数据中提取拟合值的向量;同样residuals拉出残差向量。您应该检查poLCA包提供的提取器功能是否存在并尽可能使用它们;这样,您就不会对将来可能会被破坏的模型对象的结构做出假设。

这与获取对象的属性截然不同,这是您使用attr的方法。 R中的属性可以称为元数据:它们包含有关对象本身的R特定信息,而不是与对象相关的任何信息。常见属性的示例包括class(对象的类),dim(数组或矩阵的维度),names(向量/列表/数组的各个元素的名称) )等等。