以下是我的数据示例,可在此链接中找到:http://www.uwyo.edu/crawford/datasets/drugreactions.txt
我为数据制作了这个等式
fit2 <- lm(Allergens~Gender*Race*Druglevel, data=dr)
哪个把我吐出来
我知道如何重新排序数据以提供黑色男性基线
dr$Race<-factor(dr$Race,levels=c("Black","Latino","Indian","Asian","NativeAmerican","Whit e"))
dr$Gender<-factor(dr$Gender,levels=c("Male","Female"))
newfit <- lm(Allergens~Gender*Race, data=dr)
但是我想要的是能够取出某些系数。例如,假设我只想要白色男性和黑色女性在模型中,而不是所有其他类别。 我试过了
whitefit <- lm(Allergens~(Gender="Male"), data=dr)
但由于过敏原之间排列不均匀以及性别等于男性而出现错误。
理想情况下,我想要一种方法来取出任何类别,以便我可以完全自定义模型并为简单起见取出内容。例如,从上面的模型中取出男性印第安人。
答案 0 :(得分:2)
您需要通过索引或使用subset
函数对数据进行子集化:
dr <- read.table("http://www.uwyo.edu/crawford/datasets/drugreactions.txt",
header=TRUE, stringsAsFactors = TRUE)
# Example excluding Indians:
newfit <- lm(Allergens ~ Gender * Race, data = subset(dr, subset = Race != "indian"))
# Example using only White Males and Black Females
wmbf.fit <- lm(Allergens ~ Gender * Race,
data = subset(dr, subset = (Race == "White" & Gender == "Male") |
(Race == "Black" & Gender == "Female")))
但是,如果您想完全排除性别,则需要更改公式以排除性别,因为所有观察结果在性别上都具有相同的值,因此此变量不可能为模型做出贡献。