首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要使用循环从我的数据集中找到所有预测值(p-value< 0.05)。有什么办法可以做到吗?

我需要使用循环从我的数据集中找到所有预测值(p-value< 0.05)。有什么办法可以做到吗?
EN

Stack Overflow用户
提问于 2020-11-04 22:42:49
回答 1查看 34关注 0票数 0

我是R的新手,我正在使用glm()函数来拟合逻辑模型。我有5列。我需要根据p值(小于0.05)使用循环找到所有可能的预测因子。我的数据集有40,000个条目,其中包含数值和分类变量,它看起来或多或少如下:

代码语言:javascript
复制
  "Age"   "Sex"     "Occupation"    "Education"   "Income"       
   50       Male      Farmer         High School    False
   30      Female      Maid          High School    False
   25       Male     Engineer        Graduate       True 

目标变量"Income“表示该人的收入是否超过30K。如果是真的,他们赚的钱超过30K,反之亦然。我想找出可以用来使用循环预测目标的预测变量。另外,我可以根据p值找到最好的3个预测因子吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-05 05:10:02

如果我正确理解了你的问题,你正在寻找一种测试单变量模型的方法,给定你的数据框架(事实上,我怀疑你是否想测试这些变量的每一个组合,包括交叉变量)

我的建议是使用purrr::map函数并为每一列创建列表。根据您的信息检查以下示例:

代码语言:javascript
复制
library(tidyr)
library(purrr)

## Sample data
df <- data.frame(
  Age = rnorm(n = 40000, 
              mean = mean(c(50,30,25)), 
              sd(c(50,30,25))),
  
  Ocupation = sample(x = c("Farmer", "Maid", "Engineer"), 
                     size = 40000, 
                     replace = TRUE),
  Education = sample(x = c("High School", "Graduate", "UnderGraduate"), 
                     size = 40000, 
                     replace = TRUE),
  Income = as.logical(rbinom(40000, 1, 0.5))
  )


## Split dataframe into lists
list_df <- Map(cbind, split.default(df[-4], names(df)[-4]))
list_df <- lapply(list_df, cbind, "target" = df[4])

## Use map to fit a model for each list
list_models <- map(.x = list_df,
    .f = ~glm(Income ~ ., data = .x, family = binomial))

您可以使用list_modelsi调用每个模型。

现在回答你关于p值的问题的第二部分。鉴于每个项目都是唯一的,它们的指标也是唯一的,我建议您仔细检查p值的使用情况。诚然,它们很重要,但它们为您提供了一个接受概率,这取决于上下文的特定统计测试和treshold。它是统计质量和决策的基本工具(不仅关于t-检验,而且是f-test,因此是向前的)。但是对于排名呢?嗯,我会说这有点奇怪。但我只是想说:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64682188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档