如何更新代码以创建用于计算多项式趋势的韦尔奇的函数?

时间:2019-06-19 00:15:15

标签: r linear-regression spss anova

我试图重现SPSS输出的重要性,即当不假定均等方差时,均值之间呈线性趋势。 我非常感激地使用了http://www-personal.umich.edu/~gonzo/coursenotes/file3.pdf中的代码来创建一个用于计算单独方差的函数,根据我的搜索,我将其理解为SPSS中的“未假定等方差”输出。

我的问题/目标: 我只是在评估多项式正交趋势(大部分是线性的)。我想修改创建函数的代码,以便使对比度参数可以采用预制的对比度矩阵,而不是每次都手动指定系数(输入错字的空间!)。

...我已经尝试了那些确切的命令,但是收到Error in contrast %*% means : non-conformable arguments。我已经试过了代码,但是无法正常工作。

根据注释创建函数的代码:

sepvarcontrast <- function(dv, group, contrast) {
  means <- c(by(dv, group, mean))
  vars <- c(by(dv, group, var))
  ns <- c(by(dv, group, length))
  ihat <- contrast %*% means
  t.denominator <- sqrt(contrast^2 %*% (vars/ns))
  t.welch <- ihat/ t.denominator
  num.contrast <- ifelse(is.null(dim(contrast)),1,dim(contrast)[1])
  df.welch <- rep(0, num.contrast)
  if (is.null(dim(contrast))) contrast <- t(as.matrix(contrast))
  for (i in 1:num.contrast) {
    num <- (contrast[i,]^2 %*% (vars))^2
    den <- sum((contrast[i,]^2 * vars)^2 / (ns-1))
    df.welch[i] <- num/den
    }
  p.welch <- 2*(1- pt(abs(t.welch), df.welch))
  result <- list(ihat = ihat, se.ihat = t.denominator, t.welch = t.welch,
                 df.welch = df.welch, p.welch = p.welch)
  return(result)
}

我希望能够使用如下功能:

# Create a polynomial contrast matrix for 5 groups, then save 

contr.mat5 <- contr.poly(5)


# Calculate separate variance

sepvarcontrast(dv, group, contrast = contr.mat5)

我已经尝试过使用那些确切的命令来查看它们是否可以工作,但是会收到Error in contrast %*% means : non-conformable arguments

感谢所有建议!我仍在学习如何创建reprex ...

0 个答案:

没有答案