如何在 R 中绘制 Chow 测试结果?

How to plot Chow-test results in R?

我 运行 使用以下代码在 R 中进行了 Chow 测试:

mydata <- read.csv(file="chow.csv", header=TRUE, sep=",")
sctest(fuel~pred, data=mydata, type="Chow", point=44)

我能够成功获得 F 统计量和 p 值,但我想查看图表,即分裂回归,其中一条曲线被分成两部分(在点 44),如附图所示.

谁能告诉我 R 是否可以根据给定的信息绘制这张图?谢谢你。 enter image description here

我不认为你可以用 sctest 的结果绘制它,但它应该很容易从你的数据中绘制出来。只需创建每个相关的线性回归,然后绘制线段。

既然你没有提供任何数据,我就用NHANES包中的NHANES数据来说明。

library(NHANES)
data(NHANES)
plot(Height ~ Age, data=NHANES, pch=20, col="#00000022")

在年龄 = 16 时,身高似乎随着年龄的变化而发生了结构性变化。 您想将完整数据的线性模型与 Age<=16 和 Age > 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)