线性模型的系数在摘要()

时间:2018-04-25 08:39:01

标签: r linear

我正在为数据集创建一个线性模型,其中解释变量有4个不同的值:1,2,3和4.当我创建线性模型然后使用summary()函数时,给出的系数是简单拦截和区域(变量的名称)。我之前在线性模型上使用汇总函数的预期是系数的截距,然后是2,3和4.

我已经确认响应变量中的值并非都是空的,尽管数据中有一些空值。

以下是我要进入的内容以及我得到的内容:

lmIron_Region = lm(Ironexp ~ 1 + region , data = water)
summary(lmIron_Region)

这是它返回的内容

Coefficients:
        Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.998010   1.066259   0.936    0.351
region      0.001395   0.003592   0.388    0.698

我想要的是它的风格:

Coefficients:
        Estimate Std. Error t value Pr(>|t|)
(Intercept) ....
region2     ...
region3   ...
region4 ....

这是str(水)的输出(对不起,如果这不是你想要的,我很新R,因为我相信你可以告诉)

'data.frame':   180 obs. of  15 variables:
 $ authority     : int  7 7 7 7 7 7 7 7 7 7 ...
 $ region        : int  1 1 1 1 1 1 1 1 1 1 ...

我删除了另外13个变量,因为我不认为它们是问题的一部分,但我可以在必要时添加它们

这是str(水$地区),如果你想要的话

   str(water_295$region)
   int [1:180] 1 1 1 1 1 1 1 1 1 1 ...

1 个答案:

答案 0 :(得分:0)

这里的问题是您最有可能处理区域的数字列,并且您认为它是一个因素。显然,线性模型只计算一个简单的数值回归,将区域值视为线性。

只需将您的区域列强制转换为因素即可解决此问题。

  

你在做什么

water <- data.frame(region = rep(1:4,5), 
                    Ironexp = c(runif(5,15,20),runif(8,21,23),
                                runif(3,22,26),runif(4,25,28)))
summary(lm(Ironexp ~ 1 + region, water))

# Coefficients:
#               Estimate Std. Error t value Pr(>|t|)    
# (Intercept) 21.70753    2.05216  10.578 3.74e-09 ***  
#  region       0.06931    0.74934   0.092    0.927    
  

你应该做什么

water$region <- factor(water$region)
summary(lm(Ironexp ~ 1 + region, water))

# Coefficients:
#              Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  20.7087     1.7080  12.124 1.77e-09 ***
# region2       2.4645     2.4155   1.020    0.323    
# region3       1.7570     2.4155   0.727    0.478    
# region4       0.4669     2.4155   0.193    0.849