在回归中将类别变量与虚拟变量相乘

我正在尝试进行回归分析,该回归分析的得分与一名女性假人(取值为0或1)有关,并且我也有该女性的国家/地区。我正在尝试对女性与国家/地区互动的回归问题产生固定的影响,但是我尝试的每种方法均无效,因为我将数字乘以因子

我曾尝试使用fastdummies,但这没有用。我也尝试使用country-1方法,并尝试与女性繁殖,但没有成功。

#first wrong
olss1= lm(pv1math ~ female + I(ggi*female) + factor(country) +  factor(year) + I(female * factor(country)),data = f1)
# second wrong
olss1= lm(pv1math ~ female + I(ggi*female) + factor(country) +  factor(year) + factor( female * country ),data = f1)

错误消息是我不能将乘数与数字相乘

a3345887 回答:在回归中将类别变量与虚拟变量相乘

公式中的*运算符将给出交互以及低阶项。这是一个示例:

char arg;
char args[] = {1,2,3};

push:
  uintptr_t pc = get_pc();
  arg = args[some_clever_hash(pc)];
  stack.push(arg);

给予:

char arg;
char args[] = {1,3};

push:
  setarg();
  stack.push(arg);

void setarg(void)
{
  uintptr_t pc = get_pc_of_caller();
  arg = args[some_clever_hash(pc)];
}

我们也可以检查模型矩阵

country <- c("A","A","B","B")
female <- c(1,1,1)
y <- 1:6

fm <- lm(y ~ country * female)
fm

给予

Call:
lm(formula = y ~ country * female)

Coefficients:
    (Intercept)         countryB           female  countryB:female  
            3.0              2.0             -1.5              1.5  
,

您在这里不需要I()。单独*将执行交互,而I()将在回归之前 执行算术运算。

比较:

lm(pv1math ~ ggi*female,data=dat)$coefficients
# (Intercept)         ggi      female  ggi:female 
#         ...         ...         ...         ... 

lm(pv1math ~ I(ggi*female),data=dat)$coefficients
# (Intercept) I(ggi * female) 
#         ...             ... 

I()很有用,例如对于多项式,其中 age 是流行的候选项:pv1math ~ age + I(age^2) + I(age^3),或将GLM中的因变量二值化:glm(I(pv1math > 0.75) ~ ggi*female,family=binomial)

而且-as @G.Grothendieck already wrote-您不需要重复交互项中已经存在的变量(这只是多余的),因此您可以尝试:

lm(pv1math ~ ggi*female + factor(year) + female*factor(country),data=f1)
本文链接:https://www.f2er.com/3169680.html

大家都在问