我正在尝试学习潜在组件分析,同时也在学习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(由我的输入值决定)。
我确定我只是天真,但我可以使用任何可用的帮助。非常感谢!
答案 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
(向量/列表/数组的各个元素的名称) )等等。