【问题标题】:Is there any multiple orthogonal polynomials function in r ? (other than poly)r 中是否有多个正交多项式函数? (除了聚)
【发布时间】:2013-04-22 23:34:34
【问题描述】:

我想为一个 50x30 矩阵生成多个正交多项式。

结果应该有 30 + 30 + 30C2 = 30 + 30 + 435 = 505 列和 50 行。 我在R 基本包中厌倦了poly,即使是第一次订购,它也内存不足。 R中是否有任何函数可以做多个正交多项式?(试过orthopolynom ,但它只适用于单变量)还是太难了?谢谢

这是我的代码

n=50
k=30
x=matrix(rnorm(n*k),nrow=n,ncol=k)
poly(x,degree=1)
Error in rep.int(rep.int(seq_len(nx), rep.int(rep.fac, nx)), orep) :  cannot allocate vector of length 1073741824

【问题讨论】:

    标签: r


    【解决方案1】:

    对于您的 30C2 项,您不需要正交多项式,而是所有双向交互项:

    paste( combn( paste0("X", 1:30), 2, FUN=paste, collapse="*"), collapse="+")
    

    对于您可能想要的 2 次正交多项式:

    paste( "poly(", paste0("X", 1:30), ", degree=2)", collapse="+")
    

    如果您想使用 as.formula 进行回归,则需要使用 R 公式构建它。

    我不确定这是否会给你的正交多项式,但它会给你一个所需复杂度的公式表达式:

    as.formula( paste(" ~ (", paste0("X", 1:30 , collapse="+"), ")^2", collapse=""))
    #--------------
    ~(X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10 + X11 + X12 + 
    X13 + X14 + X15 + X16 + X17 + X18 + X19 + X20 + X21 + X22 + 
    X23 + X24 + X25 + X26 + X27 + X28 + X29 + X30)^2
    

    这将扩展到所有线性项、所有平方项和所有双向组合。见help(formula)。并查看扩展使用的内容:

    terms( as.formula( 
             paste(" ~ (", paste0("X", 1:30 , collapse="+"), ")^2", collapse="")
           ) )
    

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 2023-03-25
      • 2016-02-28
      • 2016-05-02
      • 2015-10-29
      • 2022-01-10
      • 2018-08-24
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多