【问题标题】:glm summary not giving coefficients valuesglm 摘要没有给出系数值
【发布时间】:2023-04-02 13:29:01
【问题描述】:

我正在尝试在给定的数据集上应用 glm,但 summary(model1) 没有给我正确的输出,它没有给出 Estimate Std. Error z value Pr(>|z|) 等的系数值,它只是给我 NA 作为输出单个属性元素。

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 值以进行进一步分析,我认为我的代码是正确的,我怎样才能获得正确的输出?

【问题讨论】:

  • 改用 CrossValidated:stats.stackexchange.com
  • 你是否分解了名义变量as.factor()
  • 确定。不,除了我刚刚发布的代码之外,我没有做任何事情。为什么我们应该使用 as.factor() 作为名义变量?
  • 也许参数数(7)多于观察数(5),p > n?逻辑回归无法拟合此数据?
  • glm 不需要库 e1071,它是 svm 的

标签: r logistic-regression data-science


【解决方案1】:

只有当因变量有两个结果时,二项分布才有效。当因变量是计数时,您应该考虑泊松分布。更多详情请看这里:http://www.statmethods.net/advstats/glm.html

【讨论】:

  • 你是对的,但看起来 OP 用 mydata$FAVOURITES_COUNT &lt;- ifelse( mydata$FAVOURITES_COUNT &gt;= 445, 1, 0) #converting fav_count to binary values 解决了这个问题
  • 啊抱歉没有发现那条线。谢谢
【解决方案2】:

您用于拟合 GLM 的代码在编程上是正确的。但是,有几个问题:

  1. 如 cmets 中所述,对于每个分类变量,您应该使用 as.factor() 将其变为因子。 GLM 不知道什么是“字符串”变量。
  2. 正如 MorganBall 所指出的,如果您的数据确实是计数数据,您可以考虑使用 Poisson GLM 对其进行拟合,而不是转换为二进制并使用 Logistic 回归。
  3. 您表示您有 13 个参数和 1000 个观察值。虽然这似乎是足够的数据,但请注意,其中一些参数可能只有很少(接近 0?)观察值。这是个问题。
  4. 此外,您是否确保您的数据没有perfectly separate 响应?因为如果有一些参数组合可以完美地分离响应,最大似然估计将不会收敛,理论上会趋于无穷大。实际上,您的估计会得到非常大的标准误差。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    相关资源
    最近更新 更多