【问题标题】:Accessing class values in R's poLCA访问 R 的 poLCA 中的类值
【发布时间】:2013-07-18 20:19:20
【问题描述】:

我正在尝试学习潜在成分分析,同时也在学习 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')

但它们都显示为“空”。我希望 Nobs 为 453(由函数确定),maxiter 为 50000(由我的输入值决定)。

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

【问题讨论】:

  • 数据链接已损坏。你有这些数据的备份吗?

标签: r


【解决方案1】:

欢迎来到 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(向量/列表/数组的各个元素的名称)等等。

【讨论】:

  • 啊,现在说得通了。感谢您提供如此详细的答案。我会投票给你,但我的名声太低,不允许这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
相关资源
最近更新 更多