2015-02-06 66 views
1

我想创建一个线性回归模型来预测使用两个不同系数的输出,这个系数根据数据中的某个阈值。例如: df:开启和关闭系数R线性回归

Value Temperature 
8.2  70 
3.2  51 
5.8  54 
7.2  61 

等等。对于这个数据,我想弄清楚如何进行以下模型:

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

其中,B1是0,如果温度低于55,和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) 

有没有人有任何输入?我将不胜感激任何帮助。

回答

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) 
+0

这将给出截距和Temp_thresholdTRUE的值。我假设当温度大于55时,温度项的系数。但是对于低于55的项,系数如何?我认为可能有一个根本的概念,我没有抓住。 – 2015-02-06 18:25:06

+1

你可能想要阅读一些回归。简短的回答 - 既然你有两组要比较(Temp_thresholdTRUE和Temp_thresholdFalse),回归会隐式计算一个相对于另一个的coeff,没有两个系数。因此,Temp_thresholdTRUE的系数将TemperatureTRUE与TemperatureFALSE(假定其对简单性没有影响)相比的效果进行量化。 – keegan 2015-02-06 19:17:03

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  
+0

所以如果我把这个结果写成一个模型,高温和低温的系数是多少?例如,在我原来的文章中,我有B1和B2高温和低温系数,根据指标 – 2015-02-06 18:19:11

+0

@DellM'打开'或'关闭''阈值'变量是一个指标(或“虚拟” )当温度> 55时为1,否则为0。因此,解释是如果“温度”超过55,则使用“阈值”的系数,否则您将乘以“阈值”的值,即0,因此该项将为0. – mlegge 2015-02-06 18:27:33

+0

我可以添加另一个术语是用来描述55以下温度的贡献,以及55以上的温度贡献? – 2015-02-06 18:43:07