2016-11-10 21 views
0

我想要給予給定數據集glm,但summary(model1)沒有給我正確的輸出,它沒有給出Estimate Std. Error z value Pr(>|z|)等的係數值,它只是給我NA作爲輸出個體屬性元素。glm總結不給係數值

TEXT <- c('Learned a new concept today : metamorphic testing. t.co/0is1IUs3aW','BMC Bioinformatics BioMed Central: Detecting novel ncRNAs by experimental #RNomics is not an easy task... http:/t.co/ui3Unxpx #bing @MyEN','BMC Bioinformatics BioMed Central: small #RNA with a regulatory function as a scientific ... Detecting novel… http:/t.co/wWHOEkR0vC#bing','True or false? link(#Addition, #Classification) http:/t.co/zMJuTFt8iq #Oxytocin','Biologists do have a sense of humor, especially computational bio people http:/t.co/wFZqaaFy') 
NAME <- c('QSoft Consulting','Fabrice Leclerc','Sungsam Gong','Frederic','Zach Stednick') 
SCREEN_NAME <-c ('QSoftConsulting','rnomics','sunggong','rnomics','jdwasmuth') 
FOLLOWERS_COUNT <- c(734,1900,234,266,788) 
RETWEET <- c(1,3,5,0,2) 
FRIENDS_COUNT <-c(34,532,77,213,422) 
STATUSES_COUNT <- c(234,643,899,222,226) 
FAVOURITES_COUNT <- c(144,2677,445,930,254) 

df <- data.frame(TEXT,NAME,SCREEN_NAME,RETWEET,FRIENDS_COUNT,STATUSES_COUNT,FAVOURITES_COUNT) 
mydata<-df 
mydata$FAVOURITES_COUNT <- ifelse(mydata$FAVOURITES_COUNT >= 445, 1, 0) #converting fav_count to binary values 

拆分數據

library(caret) 
split=0.60 
trainIndex <- createDataPartition(mydata$FAVOURITES_COUNT, p=split, list=FALSE) 
data_train <- mydata[ trainIndex,] 
data_test <- mydata[-trainIndex,] 

GLM模型

library(e1071) 
model1 <- glm(FAVOURITES_COUNT~.,family = binomial, data = data_train) 
summary(model1) 

我想作進一步的分析的p值到目前爲止,我認爲我的代碼是正確的,我怎麼能得到正確的輸出?

+0

嘗試使用CrossValidated來代替:http://stats.stackexchange.com – noumenal

+0

您是否將因變量as.factor()'分解了? – noumenal

+0

確定。不,除了我剛剛發佈的代碼外,我沒有做任何事情。爲什麼我們應該使用as.factor()作爲名義變量? – hyeri

回答

1

二項分佈只有在因變量有兩個結果時纔有效。當因變量是一個計數時,你應該考慮一個泊松分佈。請參閱此處以瞭解更多詳細信息:http://www.statmethods.net/advstats/glm.html

+1

你是對的,但它看起來像OP解決這個問題'mydata $ FAVOURITES_COUNT < - ifelse(mydata $ FAVOURITES_COUNT> = 445,1,0)#converting fav_count爲二進制值' – ilanman

+0

對不起,沒有發現線。謝謝 – MorganBall

1

用於擬合GLM的代碼在編程上是正確的。但是,有幾個問題:

  1. 正如在評論中提到,對於每個變量,分類,你應該使用as.factor(),使之成爲一個因素。 GLM不知道「字符串」變量是什麼。
  2. 正如MorganBall所指出的,如果您的數據真的是計數數據,您可以考慮使用泊松GLM進行擬合,而不是轉換爲二進制數據並使用Logistic迴歸。
  3. 您指出您有13個參數和1000個觀測值。雖然這可能看起來有足夠的數據,但請注意,其中一些參數可能只有很少(接近0?)的觀察值。這是個問題。
  4. 另外,您是否確定您的數據不是perfectly separate的迴應?因爲如果有一些參數組合可以完美地分離響應,那麼最大似然估計不會收斂,理論上會趨於無窮大。實際上,您的估算會出現非常大的標準誤差。