我一直在使用glm
函数进行回归分析,它对我很好。不过,我想知道的是,一些我想回归的东西涉及到大量的回归因素。我有两个主要问题:
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")
发布于 2013-07-05 07:53:14
有关您的第一个问题,请参见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()
的结果分配给变体,并按照您的意愿继续进行。
发布于 2013-07-05 07:59:29
一个示例数据框架:
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
https://stackoverflow.com/questions/17483462
复制相似问题