使用R从更大的方程创建特定的线性回归方程

时间:2015-03-26 06:40:54

标签: r linear-regression

以下是我的数据示例,可在此链接中找到:http://www.uwyo.edu/crawford/datasets/drugreactions.txt enter image description here

我为数据制作了这个等式

    fit2 <- lm(Allergens~Gender*Race*Druglevel, data=dr)

哪个把我吐出来

enter image description here

我知道如何重新排序数据以提供黑色男性基线

    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)

但由于过敏原之间排列不均匀以及性别等于男性而出现错误。

理想情况下,我想要一种方法来取出任何类别,以便我可以完全自定义模型并为简单起见取出内容。例如,从上面的模型中取出男性印第安人。

1 个答案:

答案 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")))

但是,如果您想完全排除性别,则需要更改公式以排除性别,因为所有观察结果在性别上都具有相同的值,因此此变量不可能为模型做出贡献。