我正在为数据集创建一个线性模型,其中解释变量有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 ...
答案 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