【问题标题】:Creating a loop that will run a Logistic regression across all Independent variables创建一个将在所有自变量上运行逻辑回归的循环
【发布时间】:2014-04-12 11:15:48
【问题描述】:

我想使用所有可用变量运行逻辑回归的因变量(在我的数据集中它是:dat$admit),每个回归都有自己的自变量与因变量。 我想要得到的结果是每个回归摘要的列表。使用下面提交的数据集应该有 3 个回归。

这是一个样本数据集(其中,admit 是逻辑回归因变量):

dat <- read.table(text = "
+ female  apcalc    admit       num
+ 0        0        0         7
+ 0        0        1         1
+ 0        1        0         3
+ 0        1        1         7
+ 1        0        0         5
+ 1        0        1         1
+ 1        1        0         0
+ 1        1        1         6",
+                   header = TRUE)

我得到了一个简单线性回归的示例,但是当我尝试将函数从 lm 更改为 glm 时,结果得到了“list()”。
这是原始代码 - 鸢尾花数据集,其中“Sepal.Length”是因变量:

sapply(names(iris)[-1], 
       function(x) lm.fit(cbind(1, iris[,x]), iris[,"Sepal.Length"])$coef)

如何为逻辑回归创建正确的函数?

【问题讨论】:

    标签: r logistic-regression


    【解决方案1】:
    dat <- read.table(text = "
    female  apcalc    admit       num
    0        0        0         7
    0        0        1         1
    0        1        0         3
    0        1        1         7
    1        0        0         5
    1        0        1         1
    1        1        0         0
    1        1        1         6",
                   header = TRUE)
    

    这可能有点过于简洁,但确实可以。 当然,样本数据集太小,无法获得任何明智的 答案...

    t(sapply(setdiff(names(dat),"admit"),
         function(x) coef(glm(reformulate(x,response="admit"),
                              data=dat,family=binomial))))
    

    【讨论】:

    • 非常感谢..您有什么提示我可以在哪里或如何学习编写此类代码吗?
    • 没什么特别的。您可以 (1) 在此处查看每个函数的帮助页面(您应该已经了解 ?coef?glm,似乎您已经从示例中了解了 ?sapply (2) 编写您自己的版本这将其分解为更多单独的代码行;(3) 浏览 Stack Overflow 问题和答案,r-bloggers.com 等;查看 Matloff 或 Spector 的 R 编程书籍?
    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2012-11-05
    • 2021-08-31
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多