Questions tagged «r»

对于(a)涉及“ R”作为问题的关键部分或预期答案的任何* on-topic *问题,请使用此标签;&(b)关于如何使用“ R”并非“正当”。

1
如何使用cv.glmnet(R中的LASSO回归)进行交叉验证?
我想知道如何使用R中的glmnet正确地训练和测试LASSO模型? 具体来说,我想知道如果缺少外部测试数据集该如何使用交叉验证(或其他类似方法)来测试我的LASSO模型,该怎么做。 让我分解一下情况: 我只有一个数据集来通知和训练我的glmnet模型。结果,我将不得不使用交叉验证来拆分数据,以生成一种测试模型的方法。 我已经在使用cv.glmnet,根据软件包的详细信息: 对glmnet进行k折交叉验证,生成图并返回lambda的值。 进行交叉验证cv.glmnet只是为了选择最佳的λ,还是作为更通用的交叉验证程序? 换句话说,我还需要执行另一个交叉验证步骤来“测试”我的模型吗? 我正在假设“是的”。 既然如此,我该如何交叉验证我的cv.glmnet模型? 我是否必须手动执行此caret功能,或者该功能对glmnet模型有用吗? 我是否使用交叉验证的两个同心“循环”?...我是否使用CV的“内循环” cv.glmnet来确定k倍交叉验证处理的“外部循环”的每k倍内的最佳lambda值? 如果我对已经进行交叉验证的cv.glmnet模型进行交叉验证,那么如何cv.glmnet在交叉验证的“外部循环”的每一折中将“最佳”模型(与“最佳” lambda值隔离)与每个模型隔离? 注:我定义“最好”的模式,与产生最小的1 SE内的MSE拉姆达关联的模型......这是$lambda.1se在cv.glmnet模型。 内容: 我正在尝试根据树木直径(“ D”),D ^ 2和种类(“ factor(SPEC)”)来预测树木年龄(“年龄”)。[结果方程式:Age ~ D + factor(SPEC) + D^2]。我有约5万行数据,但数据是纵向的(通过时间跟踪个体),由约65种组成。

1
使用通用优化器复制glmnet线性回归的结果
如标题所示,我正在尝试使用来自library的LBFGS优化器从g​​lmnet linear复制结果lbfgs。只要我们的目标函数(没有L1正则化项)是凸的,此优化器就可以让我们添加L1正则化项,而不必担心可微性。 glmnet纸中的弹性净线性回归问题由 其中X \ in \ mathbb {R} ^ {n \ times p}是设计矩阵,y \ in \ mathbb {R} ^ p是观测向量,\ alpha \ in [0,1]是弹性网参数,而\ lambda> 0是正则化参数。运算符\ Vert x \ Vert_p表示通常的Lp范数。 X∈[RÑ×pý∈[Rpα∈[0,1]λ>0‖X‖p分β∈ [Rp1个2 n∥ β0+ Xβ- ÿ∥22+ α λ ∥ β∥1个+ 12(1 - α )λ ∥ β∥22minβ∈Rp12n‖β0+Xβ−y‖22+αλ‖β‖1+12(1−α)λ‖β‖22\min_{\beta \in \mathbb{R}^p} \frac{1}{2n}\Vert …

2
比较R中两个多项式回归之间差异的统计显着性
因此,首先,我在这个论坛上进行了一些研究,我知道 已经提出了非常相似的问题,但是通常没有得到正确答案,或者有时答案不够详尽,我无法理解。所以这一次我的问题是:我有两组数据,每组数据都像这样进行多项式回归: Ratio<-(mydata2[,c(2)]) Time_in_days<-(mydata2[,c(1)]) fit3IRC <- lm( Ratio~(poly(Time_in_days,2)) ) 多项式回归图为: 系数为: > as.vector(coef(fit3CN)) [1] -0.9751726 -4.0876782 0.6860041 > as.vector(coef(fit3IRC)) [1] -1.1446297 -5.4449486 0.5883757 现在,我想知道,是否有一种方法可以使用R函数进行检验,从而知道两个天数的相关区间为[ 1100]。 根据我的理解,我无法直接应用方差分析测试,因为这些值来自两组不同的数据或AIC(用于比较模型/真实数据)。 我试图按照@Roland在相关问题中给出的说明进行操作,但在查看结果时可能会误解了一些内容: 这是我所做的: 我将两个数据集合并为一个。 f是@Roland谈到的可变因素。我将第一组的数字设置为1,将另一组的数字设置为0。 y<-(mydata2[,c(2)]) x<-(mydata2[,c(1)]) f<-(mydata2[,c(3)]) plot(x,y, xlim=c(1,nrow(mydata2)),type='p') fit3ANOVA <- lm( y~(poly(x,2)) ) fit3ANOVACN <- lm( y~f*(poly(x,2)) ) 我的数据现在看起来像这样: 红色的fit3ANOVA仍在工作,但我对蓝色的问题fit3ANOVACN有疑问,该模型的结果很奇怪。我不知道拟合模型是否正确,我不明白@Roland的确切含义。 考虑@DeltaIV解决方案,我想在那种情况下: 即使模型重叠,它们的模型也存在显着差异。我可以这样假设吗?

1
如何获得非PCA特征向量的向量的“特征值”(解释方差的百分比)?
我想了解如何获取数据集的方差百分比,而不是在PCA提供的坐标空间中,而是在稍微不同的一组(旋转)向量上。 set.seed(1234) xx <- rnorm(1000) yy <- xx * 0.5 + rnorm(1000, sd = 0.6) vecs <- cbind(xx, yy) plot(vecs, xlim = c(-4, 4), ylim = c(-4, 4)) vv <- eigen(cov(vecs))$vectors ee <- eigen(cov(vecs))$values a1 <- vv[, 1] a2 <- vv[, 2] theta = pi/10 rotmat <- matrix(c(cos(theta), sin(theta), -sin(theta), …

1
在R中的ARIMA时间序列中绘制预测值
这个问题可能有一个以上的严重误解,但这并不是要正确地进行计算,而是要着眼于某些重点来激发时间序列的学习。 在试图理解时间序列的应用时,似乎对数据进行去趋势化使得预测未来值变得难以置信。例如,gtemp来自astsa程序包的时间序列如下所示: 在绘制预测的未来值时,需要考虑过去几十年的上升趋势。 但是,为了评估时间序列的波动,需要将数据转换为固定的时间序列。如果我把它模型或差分(我想这是因为中间的进行了ARIMA过程1中order = c(-, 1, -))为: require(tseries); require(astsa) fit = arima(gtemp, order = c(4, 1, 1)) 然后尝试预测未来价值(年),我错过了上升趋势部分:505050 pred = predict(fit, n.ahead = 50) ts.plot(gtemp, pred$pred, lty = c(1,3), col=c(5,2)) 不必一定要对特定ARIMA参数进行实际优化, 如何恢复图的预测部分中的上升趋势? 我怀疑某个地方存在“隐藏”的OLS,这会导致这种不稳定吗? 我遇到了的概念drift,可以将其合并到包的Arima()功能中forecast,从而得出合理的图形: par(mfrow = c(1,2)) fit1 = Arima(gtemp, order = c(4,1,1), include.drift = T) future = forecast(fit1, …

1
为什么在aov模型中更改协变量的顺序时p值的重要性会发生变化?
我有482个观测值的数据集。 data=Populationfull 我将对3个SNP进行基因型关联分析。我试图使用aov(y〜x,data = ...)为我的分析建立模型。对于一个特征,我有几个固定的影响和协变量,我将它们包括在模型中,如下所示: Starts <- aov(Starts~Sex+DMRT3+Birthyear+Country+Earnings+Voltsec+Autosec, data=Populationfull) summary(Starts) Df Sum Sq Mean Sq F value Pr(>F) Sex 3 17.90 5.97 42.844 < 2e-16 *** DMRT3 2 1.14 0.57 4.110 0.017 * Birthyear 9 5.59 0.62 4.461 1.26e-05 *** Country 1 11.28 11.28 81.005 < 2e-16 *** Earnings 1 …
10 r  anova 


1
在因子分析中计算二元变量的皮尔逊相关性(而不是四项式)有什么危险?
我从事教育游戏的研究,目前的一些项目涉及使用BoardGameGeek(BGG)和VideoGameGeek(VGG)的数据来检查游戏设计元素之间的关系(例如“第二次世界大战”,“涉及掷骰子” )和这些游戏的玩家评分(例如,满分10分)。这些设计元素中的每个元素都与BGG或VGG系统中的标签相对应,因此每个元素本质上都是二分变量。游戏在数据库中为每个存在的标签提供1,为每个不存在的标签提供0。 这些标记有数十种,因此我想使用探索性因子分析(EFA)提出可管理数量的“类型”,以捕获游戏设计中的模式。咨询几个来源,据我所知,因为我有工作二元变量,我应该使用polychoric相关(四项,特别是在这里),而不是皮尔森用我的因素,即将到来的时候(也有其他的选择,喜欢的潜在特质分析-那些那里,但这是我现在正在探索的那个)。 出于好奇,我想出了两套因素,一套使用Pearson相关,另一套使用多色相关(每次使用相同数量的因素)。我的问题是,使用Pearson相关性计算出的因子比使用多色相关性计算出的因子更有意义并且更易于解释。换句话说,来自第一组因素的“类型”具有直觉意义,并且与我对游戏设计的理解相一致。第二组因素则不是这样。 一方面,我想确保我符合正在使用的测试的假设,即使这样做会使我的结果不太美观。另一方面,我认为因素分析和(更广泛的)模型构建的目标的一部分是想出一些有用的东西,而当我“违反规则”时,就会出现更多有用的信息。对有用模型的需求是否足以超过违反该检验假设的条件?使用Pearson相关而不是多选相关的结果到底是什么?

3
如何读取auto.arima()的p,d和q?
我如何获得模型的估计p,d and q值?ARIMA(p,d,q)auto.arima(mytimeseries) arima_model <-auto.arima(mytimeseries,ic ='bic') 如果我们看一下输出 arima_model $ arma 我们得到 [1] 1 0 0 0 1 2 0 上面顺序出现的数字是什么意思?
10 r  arima 

1
如何将简单的感知器内核化?
带有非线性边界的分类问题不能通过简单的感知器来解决。以下R代码出于说明目的,并且基于Python中的此示例): nonlin <- function(x, deriv = F) { if (deriv) x*(1-x) else 1/(1+exp(-x)) } X <- matrix(c(-3,1, -2,1, -1,1, 0,1, 1,1, 2,1, 3,1), ncol=2, byrow=T) y <- c(0,0,1,1,1,0,0) syn0 <- runif(2,-1,1) for (iter in 1:100000) { l1 <- nonlin(X %*% syn0) l1_error <- y - l1 l1_delta <- l1_error * …



1
混合效果模型的模型矩阵
在lmer函数内lme4的R存在是构建随机效应,模型矩阵的呼叫,作为解释在这里,7页- 9。ZZZ 计算需要两个矩阵和 KhatriRao和/或Kronecker积。 ZZZJiJiJ_iXiXiX_i 矩阵是一个的:“分组因子索引的指标矩阵”,但是它似乎是带有伪编码的稀疏矩阵,用于选择对应于较高层次级别的哪个单元(例如,重复测量的主题)在“任何观察。所述矩阵似乎作为在较低层级测量的选择器,以便两个“选择器”的组合将产生一矩阵,通过下面的例子中的纸张所示的形式的:JiJiJ_iXiXiX_iZiZiZ_i (f<-gl(3,2)) [1] 1 1 2 2 3 3 Levels: 1 2 3 (Ji<-t(as(f,Class="sparseMatrix"))) 6 x 3 sparse Matrix of class "dgCMatrix" 1 2 3 [1,] 1 . . [2,] 1 . . [3,] . 1 . [4,] . 1 . [5,] . . 1 …

4
如何避免回归中的log(0)项
我有以下简单的X和Y向量: > X [1] 1.000 0.063 0.031 0.012 0.005 0.000 > Y [1] 1.000 1.000 1.000 0.961 0.884 0.000 > > plot(X,Y) 我想使用X的对数进行回归。为了避免得到log(0),我尝试输入+1或+0.1或+0.00001或+0.000000000000001: > summary(lm(Y~log(X))) Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : NA/NaN/Inf in 'x' > summary(lm(Y~log(1+X))) Call: lm(formula = Y ~ log(1 + X)) …

1
如何测试“先前状态”是否对R中的“后续状态”有影响
想象一个情况:我们有三个矿山的历史记录(已有20年)。白银的存在是否会增加明年发现黄金的可能性?如何测试这样的问题? 这是示例数据: mine_A <- c("silver","rock","gold","gold","gold","gold","gold", "rock","rock","rock","rock","silver","rock","rock", "rock","rock","rock","silver","rock","rock") mine_B <- c("rock","rock","rock","rock","silver","rock","rock", "silver","gold","gold","gold","gold","gold","rock", "silver","rock","rock","rock","rock","rock") mine_C <- c("rock","rock","silver","rock","rock","rock","rock", "rock","silver","rock","rock","rock","rock","silver", "gold","gold","gold","gold","gold","gold") time <- seq(from = 1, to = 20, by = 1)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.