2013-07-05 118 views
1

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

  1. 是否有可能为回归者提供文本向量?
  2. summary(glm)的p值部分可以根本排序吗?优选地通过每个回归器的p值。

Ex。

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") 
+0

您可以指定所有剩余的列在矩阵中使用类似于'glm(A $ Dog〜。,data = A [,4:7])'的矩阵。 – Thomas

+0

您希望通过p值排序输出提示您在统计上的误解。但是,像R中的任何东西一样,它可以完成。 – Roland

+0

我是一名数学家,而不是统计学家,但是不是p值表示结果是随机的概率的指示吗?因此,回归的力量是相关的p值? – riders994

回答

4

对于第一个问题,请参阅as.formula。基本上要做到以下几点:

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

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

对于第二个问题,您需要将摘要的输出转换为可以排序的数据结构。例如,一个数据框。比方说,你的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()结果到varable,并用它继续,只要你喜欢。

3

的示例数据帧:

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

首先,可以使用字符向量a创建模型公式与reformulate

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