回归指标

时间:2013-08-13 10:07:36

标签: r regression indicator

我有一个数据集,其中包含一个因变量y,以及两个独立的x(连续)和z(指标为0或1)。我想要的模型是

y = a*1(z==0) + b*x*1(z==1),

换句话说,如果z == 0那么估计应该只是截距,否则估计应该是截距加上b * x部分。

我唯一想到的就是分2步完成,即首先取y的平均值,其中z == 0(这是截距的估计值),然后从其余部分中减去该值对ys进行简单回归估计斜率。

我(几乎)确定这会起作用,但理想情况下我希望使用lm或类似的东西在R中进行单线程估算。有没有办法实现这个目标?谢谢你的推荐!

3 个答案:

答案 0 :(得分:2)

您可以定义一个新变量,如果z为0则为0,否则等于x

y ~ ifelse(z, x, 0)

答案 1 :(得分:2)

您可以通过拟合互动来实现这一目标:

fit <- lm( y ~ x:z )

这会将x乘以z,这样当z为0时,x的值将没有影响,当z为1时,它只适合x。

答案 2 :(得分:0)

您的问题可以通过两种方式解决:

a)首先在z = 0和z = 1时创建两个假人(假设这是z0z1with(mydata,ifelse (z==1,z0,z1))并包括在模型中并运行以下模型而不拦截:

lm(y~as.factor(z)+x-1,data=mydata)lm(y~z0+z1+x-1,data=mydata)#model包含两个没有拦截的假人,以避免虚拟变量陷阱

y=b0z0+b1z1+b2x

b)第二个只包含一个虚拟(z=1)并使用拦截

运行以下模型

lm(y~z1+x,data=mydata)#model包含一个带截距的虚拟

y=intercept+b1z1+b2x z1上的#coefficient在z = 0

上给出增量值

当z1 = 0时,y的期望值是截距+ b2x,当z1 = 1时,y的期望值是截距+ b1z1 + b2x。差别是b1z1。

注意:这与统计数据有关,而与编程有关。因此,您最好在CV中询问这些类型的问题。