내가 제안하고 싶은 중요한 것은이 개발하는 물리적 현실, 실질적으로 유용한 에너지 비용의 모델을. 이는 원시 데이터의 시각화보다 달성 할 수있는 비용 변화를 감지하는 데 더 효과적입니다. 이 비교함으로써 SO에 제공되는 용액 , 우리의 차이에 아주 좋은 사례가 데이터에 대한 커브를 피팅 하고 의미있는 통계적 분석을 수행한다.
(이 제안은 10 년 전에 이러한 모델을 내 가정의 사용에 맞추고 해당 기간 동안의 변경 사항을 추적하는 데 적용한 모델을 기반으로합니다. 모델이 적합하면 추적 목적으로 스프레드 시트에서 쉽게 계산할 수 있습니다. 스프레드 시트 소프트웨어의 (in) 기능에 제한을받지 않아야합니다.)
이러한 데이터에 대해, 그러한 물리적으로 그럴듯한 모델은 간단한 대안 모델 (매월 평균 온도에 대한 일일 사용량의 2 차 최소 제곱 적합) 과 실질적으로 다른 에너지 비용 및 사용 패턴 그림을 생성합니다 . 결과적으로 더 단순한 모델은 에너지 사용 패턴을 이해, 예측 또는 비교하기위한 신뢰할 수있는 도구로 간주 될 수 없습니다.
분석
뉴턴의 냉각 법칙에 따르면, 대략적인 근사치로 난방 비용 (단위 시간 동안)은 외부 온도의 차이에 정비례해야합니다.티 그리고 내부 온도 티0. 비례의 상수를− α. 냉각 비용은 온도 차이에 비례해야하며, 비례는 비슷하지만 반드시 동일 할 필요는 없습니다.β. (이들 각각은 주택의 단열 능력과 난방 및 냉각 시스템의 효율성에 의해 결정됩니다.)
추정 α 과 β(단위 시간당 학위 당 킬로와트 (또는 달러)로 표시되는)는 달성 할 수있는 가장 중요한 것 중 하나입니다. 미래의 비용 을 예측 하고 집과 에너지 시스템의 효율성을 측정 할 수 있기 때문 입니다.
이러한 데이터는 총 전기 사용량이므로 조명, 요리, 컴퓨팅 및 엔터테인먼트와 같은 비가 열 비용이 포함됩니다. 또한이 평균 기본 에너지 사용량 (단위 시간당) 의 추정치가 있습니다.γ: 그것은 얼마나 많은 에너지를 절약 할 수 있는지에 대한 바닥을 제공하고 알려진 크기의 효율 개선이 이루어질 때 미래의 비용을 예측할 수있게합니다. (예를 들어, 4 년 후 나는 퍼니스를 30 % 더 효율적이라고 주장한 것으로 교체했습니다.
마지막으로 (총) 근사치로 집이 거의 일정한 온도로 유지된다고 가정합니다. 티0일년 내내. (개인 모델에서는 두 가지 온도를 가정합니다.티0≤티1, 겨울과 여름에 각각 해당되지만이 예제에는 두 데이터를 모두 안정적으로 추정 할 수있는 데이터가 충분하지 않으며 어쨌든 매우 가깝습니다.)이 값을 알면 집을 약간 다르게 유지 한 결과를 평가하는 데 도움이됩니다. 중요한 에너지 절약 옵션 중 하나 인 온도.
이 데이터는 외부 적으로 온도가 변동하는 기간 동안의 총 비용 을 반영 하며 일반적으로 매월 연간 범위의 약 1/4 정도 변동합니다. 우리가 볼 수 있듯이 이것은 방금 설명한 정확한 기본 순간 모델과 월 총계의 값 사이에 상당한 차이를 만듭니다 . 그 효과는 특히 난방과 냉방이 모두 발생하는 중간 기간에 특히 두드러집니다. 이 변형을 설명하지 않는 모든 모델은 실수로 에너지 비용을 "생각"해야합니다.γ 한 달 동안 평균 온도가 티0그러나 현실은 크게 다릅니다.
월간 온도 변동에 대한 자세한 정보는 범위를 제외하고는 (쉽게) 없습니다. 실용적이지만 약간 일관성이없는 접근 방식으로 처리를 제안합니다. 극한의 온도를 제외하고는 매월 온도가 점차적으로 증가하거나 감소합니다. 이것은 분포를 대략 균일하게 할 수 있음을 의미합니다. 균일 변수의 범위에 길이가있는 경우엘해당 변수의 표준 편차는 s = L /6–√. 나는 (에서 범위를 변환하려면이 관계를 사용 Avg. Low하는 Avg. High표준 편차로). 그러나 기본적으로 잘 동작하는 모델을 얻기 위해 정규 분포 (이 추정 된 SD 및 평균으로 제공 Avg. Temp) 를 사용하여 이러한 범위의 끝에서 변동을 줄이려고합니다 .
마지막으로 데이터를 공통 단위 시간으로 표준화해야합니다. Daily kWh Avg.변수에 이미 존재하지만 정밀도가 부족하므로 손실 된 정밀도를 되찾기 위해 총계를 일 수로 나눕니다.
따라서 단위 시간 냉각 비용의 모델 와이 실외 온도에서 티 이다
와이( t ) = γ+ α ( t −티0) 나는( t <티0) + β( t −티0) 나는( t >티0) + ε ( t )
어디 나는 표시기 기능이며 ε이 모델에서 명시 적으로 캡처되지 않은 모든 것을 나타냅니다. 추정 할 4 가지 매개 변수가 있습니다.α , β, γ, 티0. (정말 확신한다면티0 값을 추정하지 않고 고칠 수 있습니다.)
보고 기간 동안 총 비용엑스0 에 엑스1 때 온도 t ( x ) 시간에 따라 다르다 엑스 그러므로
비용 (엑스0,엑스1) =∫엑스1엑스0와이( t ) d티=∫엑스1엑스0( γ+ α ( t ( x )) -티0) 나는( t ( x ) <티0) + β( t ( x )) -티0) 나는( t ( x )) >티0) + ε ( t ( x ) ) )티'( x ) dx .
모형이 전혀 좋지 않다면 ε ( 톤 ) 평균값을 가져야한다 ε¯0에 가까우며 월마다 무작위로 변경되는 것으로 보입니다. 변동의 근사치t ( x ) 평균의 정규 분포로 티¯ (매월 평균) 및 표준 편차 s (티¯) (이전에 월별 범위에서 주 었음) 및 적분 수율 수행
와이¯(티¯) = γ+ ( β- α ) 의 (티¯)2ϕ에스(티¯−티0) + (티¯−티0) ( β+ ( α − β)Φ에스(티0−티¯) ) +ε¯(티¯) .
이 공식에서 Φ에스 평균과 표준 편차가 0 인 정규 변량의 누적 분포입니다. s (티¯); ϕ 밀도입니다.
모델 피팅
이 모델은 비용과 온도 간의 비선형 관계를 표현하지만 변수에서 선형 적입니다. α , β, 과 γ. 그러나 비선형이기 때문에티0, 티0알 수없는 경우 비선형 피팅 절차가 필요합니다. 설명하기 위해 간단히 R계산에 사용하는 가능성 최대화 프로그램에 덤프했습니다 .ε¯ 평균이 0이고 공통 표준 편차가 정규 분포를 갖는 독립적이고 동일하게 분포 σ.
이 데이터에 대한 추정치는
(α^,β^,γ^,티0^,σ^) = ( - 1.489 , 1.371 , 10.2 , 63.4 , 1.80 ) .
이것은 다음을 의미합니다.
가열 비용은 대략 1.49 kWh / 일 /도 F.
냉각 비용은 대략 1.37 kWh / 일 /도 F. 냉각이 조금 더 효율적입니다.
기본 (비가 열 / 냉각) 에너지 사용량은 10.2kWh / 일 (이 수치는 상당히 불확실합니다. 추가 데이터를 사용하면 더 잘 파악할 수 있습니다.)
집은 근처 온도에서 유지됩니다 63.4 화씨
모형에서 명시 적으로 설명되지 않은 다른 변형은 표준 편차가 1.80 kWh / 일
이러한 추정치에서 신뢰 구간과 불확실성의 다른 정량적 표현은 최대 가능성 기계 장치를 사용하여 표준 방식으로 얻을 수 있습니다.
심상
이 모델을 설명하기 위해 다음 그림은 데이터, 기본 모델, 월간 평균에 대한 적합도 및 최소 제곱 법에 대한 최소 제곱 법을 보여줍니다.

월간 데이터는 어두운 십자가로 표시됩니다. 그들이 놓인 회색 회색 선은 월별 온도 범위를 보여줍니다. 뉴턴의 법칙을 반영하는 우리의 기본 모델은 빨간색과 파란색 선분이티0. 데이터에 대한 우리의 적합 은 온도 범위에 의존하기 때문에 곡선이 아닙니다 . 따라서 개별 파란색과 빨간색 점으로 표시됩니다. 그럼에도 불구하고 월별 범위는 크게 다르지 않기 때문에 이러한 점은 곡선을 추적하는 것처럼 보입니다 (대표 2 차 곡선과 거의 동일). 마지막으로 점선 곡선은 2 차 최소 제곱에 적합합니다 (어두운 십자가에 적합). ).
특히 중간 온도에서 피팅이 기본 (순시) 모델에서 얼마나 많이 벗어 났는지 확인하십시오! 이것은 월 평균의 효과입니다. (빨간색과 파란색 선의 높이가 각 수평 회색 선분에 걸쳐 "번져"있다고 생각하십시오. 극한의 온도에서는 모든 선이 중앙에 위치하지만 중간 온도에서는 "V"의 양면이 평균화되어 필요를 반영합니다. 한 달 동안 가열하고 다른 달에 냉각하기 위해).
모델 비교
두 가지 적합 (여기서 열심히 개발 된 것과 단순하고 손쉬운 이차 적합)은 서로 및 데이터 요소와 밀접하게 일치합니다. 이차 적합은 그리 좋지는 않지만 여전히 괜찮습니다 : 조정 된 평균 잔차 (3 개의 매개 변수)는 다음과 같습니다.2.07 kWh / 일, 뉴턴의 법칙 모델의 조정 평균 잔차 (4 개의 매개 변수)는 1.97kWh / 일, 약 5 % 감소 데이터 포인트를 통해 곡선을 그리는 것만이라면 이차 적합의 단순성과 상대 충실도가 권장됩니다.
그러나 이차적 적합은 진행 상황을 학습하는 데 전혀 쓸모가 없습니다! 그 공식,
와이¯(티¯) = 219.95 − 6.241티¯+ 0.04879 (티¯)2,
직접 사용하는 것은 없습니다. 모든 공정성에서 우리는 그것을 조금 분석 할 수있었습니다.
이것은 정점이있는 포물선입니다 티^0= 6.241 / ( 2 × 0.04879 ) = 64.0우리는 이것을 일정한 집 온도의 추정치로 취할 수 있습니다. 첫 번째 추정치와 크게 다르지 않습니다.63.4도. 그러나이 온도에서의 예상 비용은219.95 - 6.241 ( 63.4 ) + 0.04879 ( 63.4)2= 20.4kWh / 일 이것은 뉴턴의 법칙에 맞는 기본 에너지 사용량의 두 배 입니다.
가열 또는 냉각의 한계 비용은 미분 값의 절대 값에서 얻습니다. 와이¯'(티¯) = - 6.241 + 2 ( 0.04879 )티¯. 예를 들어,이 공식을 사용하면 외부 온도가 높을 때 집 난방 비용을 추정 할 수 있습니다90 도 − 6.241 + 2 ( 0.04879 ) ( 90 ) = 2.54kWh / day / degree F. 뉴턴의 법칙으로 추정 한 값의 두 배 입니다.
마찬가지로 실외 온도에서 집을 난방하는 비용 32 정도는 다음과 같이 추정됩니다 | −6.241+2(0.04879)(32) | =3.12kWh / 일 /도 F. 이것은 뉴턴의 법칙에 의해 추정 된 값의 두 배 이상입니다.
중간 온도에서 2 차 피팅은 다른 방향으로 잘못됩니다. 실제로, 정점에서60 에 68이 평균 온도는 쿨한 날로 구성 되더라도 거의 영 (0)의 한계 가열 또는 냉각 비용을 예측 합니다.50 정도 그리고 따뜻한 78도. (이 게시물을 읽는 사람은 아직 열이 차단됩니다.50 도 (=10 C)!)
간단히 말해서, 시각화에서 거의 우수 해 보이지만 , 2 차 적합은 에너지 사용과 관련된 기본 관심 량을 추정하는 데 크게 오류가 있습니다. 따라서 사용량의 변화를 평가하는 데 문제가 있으므로 사용하지 않는 것이 좋습니다.
계산
이 R코드는 모든 컴퓨팅 및 플로팅을 수행했습니다. 유사한 데이터 세트에 쉽게 적용 할 수 있습니다.
#
# Read and process the raw data.
#
x <- read.csv("F:/temp/energy.csv")
x$Daily <- x$Usage / x$Length
x <- x[order(x$Temp), ]
#pairs(x)
#
# Fit a quadratic curve.
#
fit.quadratic <- lm(Daily ~ Temp+I(Temp^2), data=x)
# par(mfrow=c(2,2))
# plot(fit.quadratic)
# par(mfrow=c(1,1))
#
# Fit a simple but realistic heating-cooling model with maximum likelihood.
#
response <- function(theta, x, s) {
alpha <- theta[1]; beta <- theta[2]; gamma <- theta[3]; t.0 <- theta[4]
x <- x - t.0
gamma + (beta-alpha)*s^2*dnorm(x, 0, s) + x*(beta + (alpha-beta)*pnorm(-x, 0, s))
}
log.L <- function(theta, y, x, s) {
# theta = (alpha, beta, gamma, t.0, sigma)
# x = time
# s = estimated SD
# y = response
y.hat <- response(theta, x, s)
sigma <- theta[5]
sum((((y - y.hat) / sigma) ^2 + log(2 * pi * sigma^2))/2)
}
theta <- c(alpha=-1, beta=5/4, gamma=20, t.0=65, sigma=2) # Initial guess
x$Spread <- (x$Temp.high - x$Temp.low)/sqrt(6) # Uniform estimate
fit <- nlm(log.L, theta, y=x$Daily, x=x$Temp, x$Spread)
names(fit$estimate) <- names(theta)
#$
# Set up for plotting.
#
i.pad <- 10
plot(range(x$Temp)+c(-i.pad,i.pad), c(0, max(x$Daily)+20), type="n",
xlab="Temp", ylab="Cost, kWh/day",
main="Data, Model, and Fits")
#
# Plot the data.
#
l <- matrix(mapply(function(l,r,h) {c(l,h,r,h,NA,NA)},
x$Temp.low, x$Temp.high, x$Daily), 2)
lines(l[1,], l[2,], col="Gray")
points(x$Temp, x$Daily, type="p", pch=3)
#
# Draw the models.
#
x0 <- seq(min(x$Temp)-i.pad, max(x$Temp)+i.pad, length.out=401)
lines(x0, cbind(1, x0, x0^2) %*% coef(fit.quadratic), lwd=3, lty=3)
#curve(response(fit$estimate, x, 0), add=TRUE, lwd=2, lty=1)
t.0 <- fit$estimate["t.0"]
alpha <- fit$estimate["alpha"]
beta <- fit$estimate["beta"]
gamma <- fit$estimate["gamma"]
cool <- "#1020c0"; heat <- "#c02010"
lines(c(t.0, 0), gamma + c(0, -alpha*t.0), lwd=2, lty=1, col=cool)
lines(c(t.0, 100), gamma + c(0, beta*(100-t.0)), lwd=2, lty=1, col=heat)
#
# Display the fit.
#
pred <- response(fit$estimate, x$Temp, x$Spread)
points(x$Temp, pred, pch=16, cex=1, col=ifelse(x$Temp < t.0, cool, heat))
#lines(lowess(x$Temp, pred, f=1/4))
#
# Estimate the residual standard deviations.
#
residuals <- x$Daily - pred
sqrt(sum(residuals^2) / (length(residuals) - 4))
sqrt(sum(resid(fit.quadratic)^2) / (length(residuals) - 3))