【问题标题】:Multilinear Principal Component in RR中的多线性主成分
【发布时间】:2017-07-17 15:23:48
【问题描述】:

我希望,我发布在正确的部分! 我学习了 MPCA 方法,但我有任何疑问,因为我是新手,只想自学。有数据集,其中 vars 的值为 scale (sc) 和nominal var(cat) 当我执行分析时,我得到了错误。 我用library rTensor

library("openxlsx")
dat=read.xlsx("C:/Users/admin/Desktop/corr.xlsx")
View(dat)
mpca(dat, ranks=c(10,10), max_iter = 25, tol = 1e-05)

Error: is(tnsr, "Tensor") is not TRUE

我做错了什么?如何正确使用这个方法?

dat

【问题讨论】:

    标签: r pca


    【解决方案1】:

    问题在于函数mpca() 只接受tnsr 类型的对象作为输入。 您必须将对象 dat 转换为包含 matrix 格式之前和 tensor 格式之后的数据。

    您当前的格式如下:

    class(dat)
    [1] "data.frame"
    

    所以你可以这样变换:

    dat <- as.matrix(dat)
    dat <- as.tensor(dat)
    class(dat)
    [1] "Tensor"
    attr(,"package")
    [1] "rTensor"
    

    然后你就可以使用mpca()函数了!

    希望这会有所帮助!

    【讨论】:

    • 我必须在排名中输入什么参数?
    • @schoolboy 因为函数 mpca 中参数等级的长度必须是 dat@num_modes-1。在您的情况下,参数等级向量必须只有 1 个元素
    • 我和你想的一样,但是:mpca(dat, rank=10, max_iter = 25, tol = 1e-05) |====== | list_mat[[i]] 中的 4% 错误:下标超出范围。这个错误是什么意思以及如何修复它。谢谢你的帮助:)
    • @schoolboy 问题源于函数ttl() 包含在函数mpca 中。在函数ttl() 中有参数ms 定义为ms = 1:(num_modes - 1)。因此,考虑到您的数据的num_modes 为2,您的ms() 等于1,并且您的list_mat 定义为lapply(U_list[-num_modes], t),可能您数据中的某些值的长度> 1 请接受我的回答作为问题的解决方案;-)
    • 是的)如何接受您的答案作为解决方案?第二个问题如何定义我的数据集中的 num_modes 数量?)))
    猜你喜欢
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    相关资源
    最近更新 更多