拟合线性模型

时间:2013-02-27 09:43:15

标签: r statistics curve-fitting

我的数据框看起来像

> t
          Institution Subject Class       ML1     ML1SD
aPhysics0           A Physics     0 0.8730469 0.3329205
aPhysics1           A Physics     1 0.8471074 0.3598839
aPhysics2           A Physics     2 0.8593750 0.3476343
aPhysics3           A Physics     3 0.8875000 0.3159806
aPhysics4           A Physics     4 0.7962963 0.4027512

我希望ML1符合Class的线性函数,但是当我打电话时

> lm(ML1 ~ Class, data=t)

我明白了:

Call:
lm(formula = ML1 ~ Class, data = t)

Coefficients:
(Intercept)       Class1       Class2       Class3       Class4  
    0.87305     -0.02594     -0.01367      0.01445     -0.07675  

我真的不明白,因为看起来它为Class的每个值提供了多个渐变值,但有5 Class个值(0-4)。但我想要的是单个拦截和单个梯度值。

此外,当我使用lm致电weights = 1/ML1SD^2时,它不会更改任何值。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

Class被视为categorical variablelm。我认为你的Class是一个因素。

并且回归的结果是正确的,因为估计值对应于4个类别。这是因为,默认情况下,第一级(在您的情况下为0)被视为引用级别,您获得的所有估计值都与引用相关。也就是说,mean(Class1) - mean(Class0)等于-0.02594

如果您不希望Class上的分类变量,并且您想将其建模为连续变量,那么您必须将factor转换为numeric(或{{1} })输入:integer。然后,你得到:

df$Class <- as.numeric(as.character(df$Class))

但你确定> lm(ML1 ~ Class, data=df) Call: lm(formula = ML1 ~ Class, data = df) Coefficients: (Intercept) Class 0.87529 -0.01131 是一个连续变量吗?

修改: Class参数确实有效。它执行加权线性最小二乘回归。当您执行weights时,您可以看到categorical variable

summary(.)

但在您的情况下,分类变量只有一个值。

让我用另一个例子来说明:

summary( ML1 ~ factor(Class), data = df)