1

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

Value   Temperature
 8.2     70
 3.2     51
 5.8     54
 7.2     61

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

值 = B0 + B1(高温)+ B2(低温)

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

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)

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

4

2 回答 2

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)
于 2015-02-06T18:13:03.210 回答
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    
于 2015-02-06T18:14:14.783 回答