r-为什么rlm(质量包)返回没有截距的模型?

r-为什么rlm(质量包)返回没有截距的模型?,r,regression,R,Regression,测试代码: rlm(x=runif(100, 100, 200), y=runif(100, 10000, 10002)) lm(runif(100, 10000, 10002)~runif(100, 100, 200)) lm的结果是合理的: Coefficients: (Intercept) runif(100, 100, 200) 1.000e+04 -1.024e-03 然而,rlm提供了一个没有截距的模型 Call

测试代码:

rlm(x=runif(100, 100, 200), y=runif(100, 10000, 10002))
lm(runif(100, 10000, 10002)~runif(100, 100, 200))
lm的结果是合理的:

Coefficients:
         (Intercept)  runif(100, 100, 200)  
           1.000e+04            -1.024e-03
然而,rlm提供了一个没有截距的模型

Call:
rlm(x = runif(100, 100, 200), y = runif(100, 10000, 10002))
Converged in 4 iterations

Coefficients:
runif(100, 100, 200) 
            62.01507 
套餐信息:

packageVersion("MASS")
[1] ‘7.3.51.1’  
编辑:由于Sal Mangiafico,我发现RLM只能考虑截取,如果我们使用~语法


[注意:这里有一个关于统计的潜在问题,但我认为这归结为编程问题。~ssm]

如果在函数调用中使用并行语法,在本例中,结果几乎没有差别

set.seed(sum(utf8ToInt("SalWasHere")))

library(MASS)

x=runif(100, 100, 200)
y=runif(100, 10000, 10002)

plot(x,y)

summary(rlm(y ~ x))

   ### Coefficients:
   ###             Value      Std. Error t value   
   ### (Intercept) 10001.2272     0.3350 29851.0467
   ### x              -0.0018     0.0022    -0.8106

summary(lm(y ~ x))

   ### Coefficients:
   ###              Estimate Std. Error   t value Pr(>|t|)    
   ### (Intercept) 1.000e+04  2.914e-01 34319.556   <2e-16 ***
   ### x           4.925e-06  1.903e-03     0.003    0.998 
set.seed(sum(utf8ToInt("SalWasHere")))

library(MASS)

x=runif(100, 100, 200)
y=runif(100, 10000, 10002)

plot(x,y)

summary(rlm(y ~ x))

   ### Coefficients:
   ###             Value      Std. Error t value   
   ### (Intercept) 10001.2272     0.3350 29851.0467
   ### x              -0.0018     0.0022    -0.8106

summary(lm(y ~ x))

   ### Coefficients:
   ###              Estimate Std. Error   t value Pr(>|t|)    
   ### (Intercept) 1.000e+04  2.914e-01 34319.556   <2e-16 ***
   ### x           4.925e-06  1.903e-03     0.003    0.998