为了访问我的服务器,我被迫使用没有X窗口的旧文本终端应用程序.我要做的最好的事情是emacs/ESS.
通常,我希望制作直方图和散点图等基本图,而不必经历将文件传输到带图形显示的计算机的麻烦.
是否有基于文本终端的R图形库?
是否有一种简单的方法可以在R中的两个大表中为每个类别添加计数?
...表中并不存在完全相同的值(尽管它们大多会重叠):
我想要做的一个小例子.设置一些数据:
x1 <- c(5, 3, 3, 6, 3, 3, 5, 5, 11, 2, 4, 9, 3, 5, 8, 2, 8, 5, 4, 8)
x2 <- c(6, 10, 9, 17, 6, 7, 8, 11, 5, 12, 14, 5, 11, 7, 7)
table(x1)
x1
2 3 4 5 6 8 9 11
2 5 2 5 1 3 1 1
table(x2)
x2
5 6 7 8 9 10 11 12 14 17
2 2 3 1 1 1 …
Run Code Online (Sandbox Code Playgroud) 这次我不会像以前在我的一个问题中那样直接询问如何检测异常值.我确实阅读了一些与此主题相关的帖子,但没有得到我需要的内容.我有一组值,如下所示:
y<-c(0.59, 0.61, 0.59, 1.55, 1.33, 3.50, 1.00, 1.22, 2.50, 3.00, 3.79, 3.98, 4.33, 4.45, 4.59, 4.72, 4.82, 4.90, 4.96, 7.92, 5.01, 5.01, 4.94, 5.05, 5.04, 5.03, 5.06, 5.10, 5.04, 5.06, 7.77, 5.07, 5.08, 5.08, 5.12, 5.12, 5.08, 5.17, 5.18)
Run Code Online (Sandbox Code Playgroud)
现在,大多数研究人员都表示异常检测过程不仅取决于数据,还取决于背景.我使用了R中的几个包,如异常值(grubbs test),extremevalues,mvoutlier(pcout方法),但无法找到使用它们的最佳方法.在这种情况下(取决于我的要求),7.77(第31号视网膜),7.92(20视点中的视点)和3.50(视图第6组)是异常值.使用异常值包的grubbs测试我可以检测7.77和7.92作为异常值但不是3.50.我不知道我是否可以在这里发布我的数据图,但是在查看了图或分布上的数据趋势之后,观察No 6将是一个明显的异常值.
我试图将非线性模型拟合到这些数据,但由于这些异常值,我找不到最合适的(最佳拟合不是唯一的要求),无论如何我需要检测这些异常值,因为我将适合单独的这些异常值的模型.
我的问题很简单.我是否可以通过一些标准包检测这3个异常值?或者如何使用我的非线性生成模型来帮助检测这些异常值?
最好的祝福
沙赫扎德
考虑R中的非线性最小二乘模型,例如以下形式:
y ~ theta / ( 1 + exp( -( alpha + beta * x) ) )
Run Code Online (Sandbox Code Playgroud)
(我的真正的问题有几个变量,外部函数不是逻辑但更多涉及;这个更简单,但我想如果我能做到这一点,我的情况应该几乎立即跟随)
我想用(例如)自然三次样条替换术语"alpha + beta*x".
这里有一些代码用于在逻辑内部创建一些非线性函数的示例数据:
set.seed(438572L)
x <- seq(1,10,by=.25)
y <- 8.6/(1+exp( -(-3+x/4.4+sqrt(x*1.1)*(1.-sin(1.+x/2.9))) )) + rnorm(x, s=0.2 )
Run Code Online (Sandbox Code Playgroud)
如果我在lm中不需要逻辑,我可以轻松地用样条项替换线性项; 所以线性模型是这样的:
lm( y ~ x )
Run Code Online (Sandbox Code Playgroud)
然后成为
library("splines")
lm( y ~ ns( x, df = 5 ) )
Run Code Online (Sandbox Code Playgroud)
生成拟合值很简单,并借助于(例如)rms包得到预测值似乎很简单.
实际上,将原始数据与基于lm的样条拟合拟合并不是太糟糕,但我有理由在逻辑函数中需要它(或者更确切地说,在我的问题中等效).
nls的问题是我需要为所有参数提供名称(我很高兴他们称之为(b1,...,b5)为一个样条拟合(并说c1,...,c6为另一个变量) - 我需要能够制作其中的几个).
是否有一种合理的方法来生成nls的相应公式,以便我可以用样条函数替换非线性函数内的线性项?
我能想到的唯一方法就是可以做到这一点有点尴尬和笨重,如果不编写一大堆代码就不能很好地概括.
(编辑以供澄清)对于这个小问题,我当然可以手工完成 - 写出由ns生成的矩阵中每个变量的内积的表达式,乘以参数的向量.但是,我必须为每个其他变量中的每个样条再次逐个编写整个项目,并且每次我更改任何样条曲线中的df时再次,并且如果我想使用cs而不是ns,则再次.然后,当我想尝试做一些预测(/插值)时,我们会得到一系列新的问题需要处理.我需要一遍又一遍地继续这样做,并且可能需要大量的结和几个变量,以便在分析后进行分析 - 我想知道是否有一种比写出每个单独术语更简洁,更简单的方法,无需编写大量代码.我可以看到一个相当牛逼的方式,这将涉及到相当多的代码,但是作为R,我怀疑有更简洁的方式(或更可能是3或4个更简洁的方式)只是躲避我.因此问题.
我以为我曾经看到有人在过去以相当不错的方式做过这样的事情,但对于我的生活,我现在找不到它; 我已经尝试了很多次来找到它.
[更具体地说,我通常希望能够尝试适合每个变量中的几个不同样条曲线 - 尝试几种可能性 - 以便看看我是否能找到一个简单的模型,但仍然适合这个目的是足够的(噪音真的非常低;合适的偏差可以达到很好的平滑效果,但只能达到一定程度).它更像是"找到一个漂亮的,可解释的,但足够的拟合函数",而不是任何接近推理和数据挖掘的东西都不是这个问题的真正问题.
或者,如果这比gnm或ASSIST或其他包装更容易,那将是有用的知识,但是关于如何继续上述玩具问题的一些指示将有所帮助.
我试图拟合一个非线性模型,但在网上找不到任何好的例子.
这个功能有名字吗?
可以线性化吗?
我试图估计参数a
,b
以及c
随机效应g
(如组中)作为时间的函数t
,如下所示.我可以在nls
没有随机效果的情况下使用模型,但是在模型收敛时遇到了麻烦.建议欢迎(最好在R内,但任何合适的包装都可以)?
## time, repeated 16 times for 4 replicates from each of 4 groups
t <- rep(1:20, 16)
## g, group
g <- rep(1:4, each = 80)
## starting to create an example dataset,
## to see if I can recover known parameters
a <- rep(c(3.5, 4, 4.1, 5), each = 80)
b <- rep(c(1.1, 1.4, 1.8, 2.5), each = 80)
c <- rep(c(0.125, 0.25), …
Run Code Online (Sandbox Code Playgroud) 我想从数据框中创建直方图,但是每次使用代码时都会出错'x' must be numeric
。
df <- data.frame(col1 = c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120),
col2 = c(10, 21, 31, 41, 51, 61, 72, 82, 92, 104, 114, 134))
hist(df)
Run Code Online (Sandbox Code Playgroud) 我想创建一个y vs x的线性模型,并使用它来找到给定x的观测值的y的置信区间.
所以我创建了一些样本:
x=rnorm(100,2)
y=rnorm(100,2)
Run Code Online (Sandbox Code Playgroud)
并创建了线性模型:
bbbb=lm(y~x)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用预测来创建置信区间时,它给出了一系列置信区间而不是一个置信区间?
predict(bbbb,x=2,interval="confidence")
Run Code Online (Sandbox Code Playgroud)
收益:
...
51 2.188294 1.949615 2.426973
52 2.189329 1.932474 2.446183
53 2.176816 1.950111 2.403521
54 2.183961 1.998136 2.369786
...
Run Code Online (Sandbox Code Playgroud)
当x = 2时,如何使y返回一个置信区间?
我在将文件名作为R中的循环中的变量处理时遇到问题
files <- list.files(pattern = "*.tab",full.name=T)
for (a in files) { aname <- strsplit(basename(a), "\\.")[[1]][1]
aname <- read.table(a,header=TRUE, sep="\t",comment.char="")
}
Run Code Online (Sandbox Code Playgroud)
它只生成一个对象:aname
如果我使用以下内容:
for (a in files) { c(strsplit(basename(a), "\\.")[[1]][1]) <- read.table(a,header=TRUE,
sep="\t",comment.char="")
}
Run Code Online (Sandbox Code Playgroud)
它产生:找不到函数"c < - ".但如果我这样做
for (a in files) { aname <- strsplit(basename(a), "\\.")[[1]][1]
print(aname)
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,输出是没有扩展名的文件列表.所以,问题是:如何使函数的结果成为变量名?谢谢!