我想创建一个线性回归模型,以根据数据中的某个阈值预测使用两个不同系数的输出。例如: 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)
有没有人有任何意见?我将不胜感激任何帮助。
答案 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