【问题标题】:Regression model BY categories using tapply() in R在 R 中使用 tapply() 对类别进行回归模型
【发布时间】:2013-01-16 18:58:11
【问题描述】:

我正在尝试使用tapply() 函数按几个类别运行模型,但没有多少成功。我的数据有 20 个诊所,我想按每个诊所运行模型。

这是我的模型:

attach(qregdata)
rq(logA~ dose+ chtcm + cage +raceth + sex,tau=.9)

我作为可变诊所的数据(值为 1-20)。有人知道如何像在其他统计包中一样在 R 中通过诊所运行这个模型吗?

【问题讨论】:

    标签: r regression


    【解决方案1】:

    一个非常通用的方法如下所示。 ddply 函数为每个 clinic 运行一个提供的函数(在本例中为 lm)。您还可以在更复杂的数据横截面上运行它。例如。 .(clinic,level) 将在 cliniclevel 的每个组合上运行一个单独的模型。术语lm(y~x)$coef[1] 获取线性模型的截距。我认为没有简单的方法可以一次保存每个模型拟合的所有输出。

    n <- 10
    clinic <- factor(rep(1:3,each=n))
    x <- rep(0:(n-1),3)
    y <- rnorm(3*n)*x
    d <- data.frame(clinic,x,y)
    
    # plot data and linear fits
    library(ggplot2)
    ggplot(d,aes(x,y)) + geom_point() + facet_wrap(~clinic) + stat_smooth(method='lm')
    
    # run a separate model for each clinic
    library(plyr)
    ddply(d,.(clinic),summarize,intercept=lm(y~x)$coef[1],slope=lm(y~x)$coef[2])
    

    【讨论】:

      【解决方案2】:

      您可以在诊所的唯一值中使用“lappy”,并使用子集来提取该诊所的数据集部分。然后将模型拟合到子集。

      这将返回一个模型列表,然后您可以进一步处理。

      【讨论】:

        【解决方案3】:

        我最近遇到了类似的问题,想分享一下,以防有人仍然对这个话题感兴趣;抱歉挖了一个旧帖子。

        tapply 在输入对象(被“拆分”的对象)是向量时使用起来非常方便。如果要拆分的输入对象是一个矩形数据集,则使用(在这种情况下恰当地命名)by 函数会简单得多,它是用于 data.frame 对象的 tapply 的方便包装器。 by 函数的返回对象属于by 类,可以使用参数simplify = TRUE 简化为arraylist

        当然有更有效的方法来执行此操作,但如果您正在寻找类似 @​​987654330@ 的解决方案 - by 就是这样。

        这是一个使用lm 将花瓣宽度回归到iris 数据集中的萼片宽度“by”物种的示例:

        ## Load iris data 
        data(iris)
        
        ## Fit a model to each species-specific subset of the data 
        fitBySpecies <- by(
            data    = iris,
            INDICES = iris$Species,
            FUN     = function(speciesSubset)
                lm(Petal.Width ~ Sepal.Width, data = speciesSubset)
        )
        

        【讨论】:

          猜你喜欢
          • 2017-07-20
          • 2015-03-06
          • 1970-01-01
          • 1970-01-01
          • 2017-12-23
          • 1970-01-01
          • 2016-05-13
          • 2020-07-02
          • 2016-10-03
          相关资源
          最近更新 更多