我試圖用tapply()
函數以幾個類別運行模型,但沒有太多成功。我的數據有20個診所,我想在每個診所運行模型。在R中使用tapply()的迴歸模型BY
繼承人我的模型:
attach(qregdata)
rq(logA~ dose+ chtcm + cage +raceth + sex,tau=.9)
我作爲一個變量診所數據(其值1-20)。在其他統計軟件包中,有人知道如何在R的診所運行該模型嗎?
我試圖用tapply()
函數以幾個類別運行模型,但沒有太多成功。我的數據有20個診所,我想在每個診所運行模型。在R中使用tapply()的迴歸模型BY
繼承人我的模型:
attach(qregdata)
rq(logA~ dose+ chtcm + cage +raceth + sex,tau=.9)
我作爲一個變量診所數據(其值1-20)。在其他統計軟件包中,有人知道如何在R的診所運行該模型嗎?
完成此操作的一般方法如下所示。 ddply
函數爲每個運行提供的函數(在這種情況下爲lm
)。您也可以在更復雜的數據橫截面上運行它。例如。 .(clinic,level)
將在和level
的每個組合上運行單獨的模型。術語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])
您可以在診所的獨特價值中使用'lappy',並使用子集來提取該診所的數據集部分。然後,將模型擬合到子集。
這將返回一個模型列表,然後您可以進一步處理。