我已经使用以下代码在R中运行了Chow-test:
mydata <- read.csv(file="chow.csv", header=TRUE, sep=",")
sctest(fuel~pred, data=mydata, type="Chow", point=44)
我能够成功获得F统计量和p值,但我想查看该图,即分裂回归,其中您将曲线分为两部分(在第44点处),如所附的图像。< / p>
有人可以告诉我R是否可以使用给定的信息绘制该图?谢谢。 enter image description here
答案 0 :(得分:1)
我认为您无法使用sctest
的结果来绘制此图,但是从数据中绘制它应该很容易。只需创建每个相关的线性回归,然后绘制线段即可。
由于您未提供任何数据,因此我将使用NHANES软件包中的NHANES数据进行说明。
library(NHANES)
data(NHANES)
plot(Height ~ Age, data=NHANES, pch=20, col="#00000022")
在年龄= 16岁时,身高似乎随着年龄的变化而发生结构性变化。 您想将完整数据上的线性模型与两个线性模型(年龄<= 16和年龄> 16)进行比较。因此,只需生成它们并绘制它们即可。
## Full data
LM0 = lm(Height ~ Age, data=NHANES)
abline(LM0, col="red", type=2, lwd=3)
## Age <= 16
LM1 = lm(Height ~ Age, data=NHANES[NHANES$Age <= 16,])
y1 = predict(LM1, newdata=data.frame(Age=c(0,16)))
## Age > 16
LM2 = lm(Height ~ Age, data=NHANES[NHANES$Age > 16,])
y2 = predict(LM2, newdata=data.frame(Age=c(16,80)))
lines(x=c(0,16), y=y1, col="green", lty=3, lwd=3)
lines(x=c(16,80), y=y2, col="green", lty=3, lwd=3)
根据注释中提供的数据,这是另一个示例。至少在给出几个要点的情况下,将数据分为两个模型似乎并不明显,但是我选择了一个强调不同模型的划分点。
mydata = structure(list(fuel = c(346591L, 344841L, 369015L, 346062L,
337494L, 355830L, 380516L, 391917L, 356761L, 359326L, 348208L,
358639L, 351659L, 323356L, 364712L), pred = c(346293.4, 344855.5,
355014.2, 342456.1, 347042.1, 371000.1, 376011.6, 391521.4,
364751.5, 358650, 356547.3, 355159.8, 359598.2, 349122.6, 357969.6)),
.Names = c("fuel", "pred"), row.names = c(NA, 15L), class = "data.frame")
plot(pred ~ fuel, data=mydata)
LM0 = lm(pred ~ fuel, data=mydata)
abline(LM0, lty=2)
LM1 = lm(pred ~ fuel, data=mydata[mydata$fuel <= 347500,])
y1 = predict(LM1, newdata=data.frame(fuel=c(320000,347500)))
lines(c(320000,350000), y1, lty=3)
LM2 = lm(pred ~ fuel, data=mydata[mydata$fuel > 347500,])
y2 = predict(LM2, newdata=data.frame(fuel=c(347500,395000)))
lines(c(350000,395000), y2, lty=3)