2013-07-05 80 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