如何在R中绘制Chow测试结果?
我使用以下代码在R中运行了Chow测试:如何在R中绘制Chow测试结果?,r,graph,stability,R,Graph,Stability,我使用以下代码在R中运行了Chow测试: mydata <- read.csv(file="chow.csv", header=TRUE, sep=",") sctest(fuel~pred, data=mydata, type="Chow", point=44) mydata我不认为你可以用sctest的结果来绘制这个,但是从你的数据来绘制它应该很容易。只需创建每个相关的线性回归,然后绘制线段 由于您没有提供任何数据,我将使用NHANES包中的NHANES数据进行说明 library(
mydata <- read.csv(file="chow.csv", header=TRUE, sep=",")
sctest(fuel~pred, data=mydata, type="Chow", point=44)
mydata我不认为你可以用sctest
的结果来绘制这个,但是从你的数据来绘制它应该很容易。只需创建每个相关的线性回归,然后绘制线段
由于您没有提供任何数据,我将使用NHANES包中的NHANES数据进行说明
library(NHANES)
data(NHANES)
plot(Height ~ Age, data=NHANES, pch=20, col="#00000022")
在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)
##完整数据
LM0=lm(身高~年龄,数据=NHANES)
abline(LM0,col=“红色”,类型=2,lwd=3)
##16岁,])
y2=预测(LM2,newdata=data.frame(Age=c(16,80)))
线(x=c(0,16),y=y1,col=“绿色”,lty=3,lwd=3)
线条(x=c(16,80),y=y2,col=“绿色”,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)
mydata=structure(列表)燃料=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(“燃料”、“pred”),row.Names=c(NA,15L),class=“data.frame”)
绘图(pred~燃料,数据=mydata)
LM0=lm(pred~燃料,数据=mydata)
abline(LM0,lty=2)
LM1=lm(pred~fuel,data=mydata[mydata$fuel 347500,]))
y2=预测(LM2,newdata=数据帧(燃料=c(347500395000)))
线路(c(35000395000),y2,lty=3)
如果您为mydata
提供可复制的最小数据(例如,包括dput(mydata)
或dput(head(mydata,20))的输出),这将有所帮助。
)。这样我们就有了合作的机会。您还应该明确地包括您一直在使用的非base R库。例如,我假设sctest
来自strucchange
?谢谢。请允许我提供一些数据。dput(head(mydata,15))结构(列表(燃料=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,3535353535798.2,35796.2),.Names=c(“fuel”,“pred”),row.Names=c(NA,15L),class=“data.frame”)不知道“L”是什么意思。