我正在使用effects
包来查找线性模型中变量的效果。
library(effects)
data(iris)
lm1 <- lm(Sepal.Length ~ Sepal.Width + Petal.Length*Petal.Width,data=iris)
对于模型中的简单术语,我可以使用
获取每个数据点的效果effect("Sepal.Width", lm1, xlevels=iris['Sepal.Width'])
如何在每个点为我的交互项获得类似的1维值向量?这甚至有意义吗?我尝试过的所有事情都是返回一个二维矩阵,例如
effect("Petal.Length:Petal.Width", lm1 ,xlevels=iris['Petal.Length']*iris['Petal.Width'])
我不确定本例中xlevels
参数应该用什么来给我提供的不仅仅是默认的5个等间距点。
答案 0 :(得分:0)
想想我已经找到了能给我想要的东西。
# Create dataframe with all possible combinations
eff_df <- data.frame(effect("Petal.Length:Petal.Width",lm1,xlevels=list(Petal.Length=iris$Petal.Length, Petal.Width=iris$Petal.Width)))
# Create column to merge on in eff_df
eff_df$merge_col <- paste0(eff_df$Petal.Length,eff_df$Petal.Width)
# Create column it will share in iris
iris$merge_col <- paste0(iris$Petal.Length,iris$Petal.Width)
# Only eff_df$fit values which correspond to a value in iris will be merged
iris <- merge(iris, eff_df[,c(7,3)], by="merge_col", all.x=T)
然后效果向量存储在iris$fit
。