使用R对观察值子集运行回归



假设我有两个变量A:{1、2、3、4、5、6、7、8、9、10}和B:{11、12、13、14、15、16、17、18、19、20},我想在R中运行一个回归,但只使用A>6的观测值,即使用{7、8、9、10}和{17、18、19、20}运行回归。

在STATA中很容易做到:如果A>6,则reg A B,但在R中我找不到一种简单的方法来做到这一点(我使用lm命令)。

请注意,我是R的新手,我只能使用香草R,我不允许安装任何包。

您可以像这样使用subset参数

lm(A ~ B, subset = A > 6 )

最好确保变量存储在同一个对象中,并且该对象最好是数据帧。这种方式可以更普遍地扩展到多元回归,如果您出于某种原因重新排序数据,这种重组将扩展到所有变量。当您设置子集时,它还将扩展到您的所有变量。

那么回答你的问题:

df = data.frame(A = c(1:10), B = c(11:20))
lm(A ~ B, data = df[df$A>6,])

或使用subset函数:

lm(A ~ B, data = subset(df, A > 6))

可以使用条件索引

lm(A[A>6] ~ B[A>6])

最新更新