我正在寻找一个具有两个变量(X,Y)的数据集,其中两个变量之间的关系是二次方的(某种形式的倒U)。有没有办法在R中做到这一点?可以理解,关系的确切形状可以不同,二次项在线性项之上和之上的独特作用也可以不同。在理想情况下,模拟将确定总体解释的Y方差和总体中二次项的唯一方差。
我正在寻找类似这样的东西:1000对XY,Y具有正态分布,Mn = 0,SD = 1,X接近正态分布,接近Mn = 0,SD =尽可能1。用线性和二次项弱(R ^ 2 = .05)解释的总方差[通过总方差,我的意思是,如果将Y回归到X和X ^ 2上,则R ^ 2 = 0.05。对于该示例,我没有任何数据,因为这些数据将被模拟;问题是边界交叉验证或堆栈溢出,但是考虑到要在R中进行,这似乎最适合。
感谢您的帮助。
查看更多内容后,偶然发现了simstudy软件包,该软件包在创建模拟二次关系时具有一定的灵活性:
library(psych)
library(simstudy)
#From: https://cran.rstudio.com/web/packages/simstudy/vignettes/simstudy.html, and https://cran.r-project.org/web/packages/simstudy/simstudy.pdf
def <- defData(varname = "nr", dist = "nonrandom", formula = 7, id = "idnum")
def <- defData(def, varname = "uni", dist = "uniform", formula = "10;20")
ddef <- defData(def, varname = "X1_q", formula = "nr + uni * 2", variance = 8)
set.seed(333)
theta1 = c(.2, 0.35, .7, .8, .7, .35, .2)
knots <- c(.3, .5, .7) #quantiles
viewSplines(knots = knots, theta = theta1, degree = 3)
dt <- genData(1000, ddef)
dt <- genSpline(dt = dt, newvar = "Y_q",
predictor = "X1_q", theta = theta1,
knots = knots, degree = 3,
noise.var = .25)
psych::describe (dt)
hist(dt$X1_q)
hist(dt$Y_q)
plot(dt$X1_q, dt$Y_q)
dt$X1_q_sq <- dt$X1_q * dt$X1_q
summary(lm(Y_q~ X1_q + X1_q_sq, data = dt))