打开和关闭系数R线性回归

时间:2015-02-06 18:00:23

标签: r regression coefficients

我想创建一个线性回归模型,以根据数据中的某个阈值预测使用两个不同系数的输出。例如: DF:

Value   Temperature
 8.2     70
 3.2     51
 5.8     54
 7.2     61

等等。对于这些数据,我想弄清楚如何制作以下模型:

值= B0 + B1(HighTemp)+ B2(LowTemp)

如果温度低于55,B1为0,B2为0,则温度高于55。 我尝试了以下方法:

fit = lm(Value ~ I(Temperature > 55), data = df)
fit2 = lm(Value ~ Temperature * I(Temperature > 55), data = df)

fit只给出了温度高于55时的系数,fit2给出了我不完全理解的输出。我还在考虑创建第三列HighorLow,其中指示变量(1或0)表示温度是高还是低。我会:

fit = lm(Value ~ Temperature:HighorLow, data = df)

有没有人有任何意见?我将不胜感激任何帮助。

2 个答案:

答案 0 :(得分:0)

您有两个连续变量,为什么要使用阈值?你的线性回归可能只是

df<-data.frame(Value=c(8.2,3.2,5.8,7.2),Temperature=c(70,51,54,61))
lm(Value~Temperature,data=df)

但如果你真的想根据一个门槛拆分成组,

df$Temp_threshold<-df$Temperature>55
lm(Value ~ Temp_threshold,data=df)

答案 1 :(得分:0)

以下是您的第三个想法的示例,这是一个统计上合适的想法。你的因素是正确的。

> df <- data.frame(Value = runif(100, min = 0, max = 10), Temperature = runif(100, min = 50, max = 90))
> df$Threshold <- with(df, factor(ifelse(Temperature > 55, 1, 0)))
> m <- lm(Value ~ Threshold, data = df)
> summary(m)

Call:
lm(formula = Value ~ Threshold, data = df)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.9916 -2.1260  0.1069  2.4733  4.8550 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   5.4835     0.8155   6.724 1.19e-09 ***
Threshold1   -0.7074     0.8645  -0.818    0.415    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.705 on 98 degrees of freedom
Multiple R-squared:  0.006787,  Adjusted R-squared:  -0.003347 
F-statistic: 0.6697 on 1 and 98 DF,  p-value: 0.4151