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

Creating Specific linear regression equations from A larger equation using R

这是我的数据样本,可在 link 中找到: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)

但由于过敏原之间的行不均匀以及性别等于男性,所以出现错误。

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

您需要通过索引或使用 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")))

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