如何计算 R 中的经验 CDF?
我正在从一个文件中读取一个稀疏表,如下所示:
1 0 7 0 0 1 0 0 0 5 0 0 0 0 2 0 0 0 0 1 0 0 0 1
1 0 0 1 0 0 0 3 0 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 1 0 1 0 0 1
1 0 0 1 0 3 0 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 2 1 0 1 0 1
注意行长度不同。
每一行代表一个模拟。每行第 i 列中的值表示在此模拟中观察到值 i-1 的次数。例如,在第一次模拟(第一行)中,我们得到了一个值为“0”的结果(第一列),7 个值为“2”的结果(第三列)等。
我希望创建一个平均累积分布函数( CDF)用于所有模拟结果,因此我稍后可以使用它来计算真实结果的经验 p 值。
为此,我可以首先对每一列求和,但我需要对 undef 列取零。
如何读取这样一个具有不同行长度的表?如何汇总用 0' 替换 'undef' 值的列?最后,如何创建 CDF? (我可以手动执行此操作,但我想有一些包可以执行此操作)。
I'm reading a sparse table from a file which looks like:
1 0 7 0 0 1 0 0 0 5 0 0 0 0 2 0 0 0 0 1 0 0 0 1
1 0 0 1 0 0 0 3 0 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 1 0 1 0 0 1
1 0 0 1 0 3 0 0 0 0 1 0 0 0 1
0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 2 1 0 1 0 1
Note row lengths are different.
Each row represents a single simulation. The value in the i-th column in each row says how many times value i-1 was observed in this simulation. For example, in the first simulation (first row), we got a single result with value '0' (first column), 7 results with value '2' (third column) etc.
I wish to create an average cumulative distribution function (CDF) for all the simulation results, so I could later use it to calculate an empirical p-value for true results.
To do this I can first sum up each column, but I need to take zeros for the undef columns.
How do I read such a table with different row lengths? How do I sum up columns replacing 'undef' values with 0'? And finally, how do I create the CDF? (I can do this manually but I guess there is some package which can do that).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这将读取以下数据:
结果:
如果数据位于文件中,请提供文件名而不是
dat
。根据您提供的数据,此代码假定最多有 29 列。更改29
以适应真实数据。我们使用
ecdf()
函数获取列总和,生成所需的 ECDF,
并且我们可以使用
plot()
方法将其绘制出来:This will read the data in:
Resulting in:
If the data are in a file, provide the file name instead of
dat
. This code presumes that there are a maximum of 29 columns, as per the data you supplied. Alter the29
to suit the real data.We get the column sums using
the
ecdf()
function generates the ECDF you wanted,and we can plot it using the
plot()
method:您可以使用
ecdf()
(在基础 R 中)或Ecdf()
(来自 Hmisc 包)函数。You can use the
ecdf()
(in base R) orEcdf()
(from the Hmisc package) functions.