Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 提取统计样本拟合的方法_R_Ggplot2 - Fatal编程技术网

R 提取统计样本拟合的方法

R 提取统计样本拟合的方法,r,ggplot2,R,Ggplot2,我正在用geom_xspline平滑器为少量点创建一个绘图,我想得到X范围内所有整数值的平滑y值。知道如何得到它们吗 library(ggplot2) library(ggalt) avgTheta<-c(-0.36,0.497085315,0.599960557,0.574336142,0.400831445,0.105615915,-0.250223072) ageGroup<-c(11,16,23,33,43,53,63) df <- data.frame(ageGrou

我正在用geom_xspline平滑器为少量点创建一个绘图,我想得到X范围内所有整数值的平滑y值。知道如何得到它们吗

library(ggplot2)
library(ggalt)
avgTheta<-c(-0.36,0.497085315,0.599960557,0.574336142,0.400831445,0.105615915,-0.250223072)
ageGroup<-c(11,16,23,33,43,53,63)
df <- data.frame(ageGroup, avgTheta)
p <- ggplot(df, aes(x = ageGroup, y = avgTheta))
p + 
 geom_xspline(spline_shape=-0.3, size=2, color='lightblue') +
 geom_point(size=3)
库(ggplot2)
图书馆(ggalt)
avgTheta来自
图形
包的
xspline()
函数将返回点。您应该能够使用
draw=FALSE
参数,但我仍然需要先调用
plot.new()
才能工作。首先,制作数据

library(ggplot2)
library(ggalt)
avgTheta<-c(-0.36,0.497085315,0.599960557,0.574336142,0.400831445,0.105615915,-0.250223072)
ageGroup<-c(11,16,23,33,43,53,63)
df <- data.frame(ageGroup, avgTheta)
xs
中的值是构成曲线的值。它们不仅仅是
x
的整数值,而且似乎没有办法使它们成为整数值。绘制ggplot以显示这两个结果做相同的事情

p2 <- ggplot() + 
  geom_line(data=xs, aes(x=x, y=y), size=2, color='lightblue') +
  geom_point(data=df, aes(x = ageGroup, y = avgTheta), size=3)
p2
从上面可以看出,该模型的拟合值与观察到的
xspline()
曲线的
y
值之间的相关性约为1。也就是说,黄土模型几乎完美地再现了曲线。现在,你可以在x的整数处预测黄土曲线的值

pred.dat <- data.frame(x=seq(min(df$ageGroup), max(df$ageGroup), by=1))
fit <- predict(lo, newdata=pred.dat)
pred.dat$fit <- fit
head(pred.dat)
#    x         fit
# 1 11 -0.35999980
# 2 12 -0.17044086
# 3 13  0.01636747
# 4 14  0.19932127
# 5 15  0.37068414
# 6 16  0.49624180

pred.dat xspline现在创建了295个观察值——这听起来很随意。如果我能指定一个数字来确保每个整数值都有一个观测值,那就太好了。既然是这样,我就可以绕过它。非常感谢。@sunwukong我添加了一个能够获取整数值的方法。这是一种迂回的方式,但似乎有效。
lo <- loess(y ~ x, data=xs, span=.1)
cor(xs$y, fitted(lo))
# [1] 0.9999994
pred.dat <- data.frame(x=seq(min(df$ageGroup), max(df$ageGroup), by=1))
fit <- predict(lo, newdata=pred.dat)
pred.dat$fit <- fit
head(pred.dat)
#    x         fit
# 1 11 -0.35999980
# 2 12 -0.17044086
# 3 13  0.01636747
# 4 14  0.19932127
# 5 15  0.37068414
# 6 16  0.49624180