【问题标题】:Regression Summaries in RR中的回归摘要
【发布时间】:2013-07-05 07:34:13
【问题描述】:

我一直在使用glm 函数进行回归分析,它对我很好。不过我想知道,我想要回归的一些事情涉及大量的回归因素。我有两个主要问题:

  1. 是否可以为回归量提供文本向量?
  2. 可以对summary(glm) 的p 值部分进行排序吗?最好通过每个回归器的 p 值。

例如

A # sample data frame
names(A)
[1] Dog Cat Human Limbs Tail Height Weight Teeth.Count
a = names(A)[4:7]
glm( Dog ~ a, data = A, family = "binomial")

【问题讨论】:

  • 您可以使用类似glm(A$Dog ~ ., data = A[,4:7]) 的方式指定矩阵中的所有剩余列。
  • 您希望按 p 值对输出进行排序,这暗示了您对统计的误解。但是,就像 R 中的几乎任何东西一样,它可以做到。
  • 我是数学家,不是统计学家,但 p 值不是表示结果是随机的概率吗?因此,回归量的强度是相关的 p 值?
  • @riders994,没有效果的强度和意义是两个不同的东西。对于前者,您需要考虑效果的大小,例如通过比较标准化系数或使用 Cohen 的效应大小检验。另外,我认为您的模型中的变量将高度相关(例如身高和体重),这意味着您将遇到严重的多重共线性问题,从而导致模型不可靠。
  • 我的实际数据要复杂得多,而且我一直在其中看到多重共线性问题。我会查一下你描述的这些测试。感谢您的帮助!

标签: r sorting statistics regression


【解决方案1】:

关于您的第一个问题,请参阅as.formula。基本上你想做以下事情:

x <- names(A)[4:7]
regressors <- paste(x,collapse=" + ")
form <- as.formula(c("Dog ~ ",regressors))
glm(form, data = A, family = "binomial")

如果您想要模型中的交互项,则需要通过使用不同的collapse= 参数使结构稍微复杂一些。该参数指定在向量元素之间放置哪些符号。例如,如果您在上面的代码中指定"*",您将拥有一个包含所有可能交互的饱和模型。如果您只需要一些交互,但不是全部,您将需要首先创建包含所有交互的公式部分(使用“*”作为折叠参数),然后在单独的粘贴函数中添加剩余的项(使用“+ ”作为折叠参数)。总而言之,您要创建一个与您的公式相同的字符串,然后将其转换为公式类。

对于第二个问题,您需要将summary 的输出转换为可以排序的数据结构。例如,数据框。假设您的 glm 模型的名称是model

library(plyr)
coef <- summary(model)[12]
coef.sort <- as.data.frame(coef)
names(coef.sort) <- c("Estimate","SE","Tval","Pval")
arrange(coef.sort,Pval)

arrange() 的结果分配给一个变量,然后继续使用它。

【讨论】:

    【解决方案2】:

    一个示例数据框:

    set.seed(42)
    A <- data.frame(Dog = sample(0:1, 100, TRUE), b = rnorm(100), c = rnorm(100))
    a <- names(A)[2:3]
    

    首先,您可以使用字符向量areformulate 创建模型公式:

    glm(Dog ~ a, data = A, family = "binomial")
    
    form <- reformulate(a, "Dog")
    # Dog ~ b + c
    
    model <- glm(form, data = A, family = "binomial")
    

    其次,这是一种按 p 值对模型摘要进行排序的方法:

    modcoef <- summary(model)[["coefficients"]]
    
    modcoef[order(modcoef[ , 4]), ]         
    
    #                Estimate Std. Error    z value  Pr(>|z|)
    # b            0.23902684  0.2212345  1.0804232 0.2799538
    # (Intercept)  0.20855908  0.2025642  1.0295951 0.3032001
    # c           -0.09287769  0.2191231 -0.4238608 0.6716673
    

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      相关资源
      最近更新 更多