Влияние члена взаимодействия в линейной модели - PullRequest
0 голосов
/ 12 июня 2018

Я использую пакет 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'])

Как получить аналогичный одномерный вектор значений для моегосрок взаимодействия в каждой точке?Имеет ли это смысл?Все, что я пробовал, это возвращение двумерной матрицы, например

effect("Petal.Length:Petal.Width", lm1 ,xlevels=iris['Petal.Length']*iris['Petal.Width'])

Я не уверен, что в этом случае следует использовать для аргумента xlevels, чтобы дать мне больше, чем просто значение по умолчанию5 одинаково расположенных точек.

1 Ответ

0 голосов
/ 12 июня 2018

Думаю, я понял что-то, что дает мне то, что я хочу.

# 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...