go - 如何使用 go 内部包中的统计函数 (MannWhitneyUTest)

标签 go statistics

我正在尝试运行 Mann-Whiteney-U test使用以下代码:

package main
import (
    "fmt"
    "stats" 
)
func main() {
    e, _ = MannWhitneyUTest([]float64{1, 2, 3, 4, 5}, 
                            []float64{1, 2, 3, 5, 6}, 
                            0) 
    fmt.Println("Mann-WhitneyUTest: ", e)
}

但是,这给了我这个错误:

$ go run mainstats2.go 
mainstats2.go:5:2: cannot find package "stats" in any of:
        /usr/local/go/src/stats (from $GOROOT)
        /home/iuser/go/src/stats (from $GOPATH)

我安装了以下统计包:

$ go list all | grep stats
github.com/montanaflynn/stats
github.com/montanaflynn/stats/examples
golang.org/x/perf/internal/stats
golang.org/x/perf/vendor/github.com/aclements/go-moremath/stats
golang.org/x/perf/vendor/google.golang.org/grpc/stats

我需要通过命令安装的统计包 golang.org/x/perf/:go get golang.org/x/perf/internal/stats

我相信这个包已经在 go 安装中了,不需要单独安装。

我该如何解决这个问题?感谢您的帮助。

最佳答案

出现错误是因为你的导入路径不正确,应该是:

import (
    "fmt"
    "golang.org/x/perf/internal/stats" 
)

但即使导入路径问题已解决,您仍会得到另一个 error for trying to use internal package .

stats.go:4:5: use of internal package golang.org/x/perf/internal/stats not allowed

我建议尝试寻找另一个替代库。


编辑#1:

如果您坚持,有一个解决方法。尝试将 $GOPATH/src/golang.org/x/perf/internal/stats 文件夹直接复制到您的项目中,然后将其导入。成功了,请看下面的截图。

enter image description here


编辑 2:

I have copied the folder to ~/go/src/stats. It is still not working. What should I put for import. Currently it is just "stats"

我认为你做错了。首先,您需要创建所谓的项目,它是一个位于$GOPATH/src 中的文件夹。

例如,在下图中,我创建了一个名为 my-example-app 的项目,该项目位于 $GOPATH/src 下。所以项目的完整路径将是$GOPATH/src/my-example-app

enter image description here

在我的项目中,我创建了 main.go 文件。此文件包含代码(我从您的文件中复制)。

此外,我将 $GOPATH/src/golang.org/x/perf/internal/stats 文件夹复制到我的项目中,因此 stats 文件夹将打开与我的 main.go 相同级别。

stats 文件夹的导入需要相对于项目名称进行,因此正确的导入路径为:

import "my-example-app/stats"

enter image description here

这是我的 main.go 的内容(从你的复制而来,添加了一些语法错误修复)。

package main

import (
    "fmt"
    "my-example-app/stats"
)

func main() {
    e, _ := stats.MannWhitneyUTest([]float64{1, 2, 3, 4, 5},
        []float64{1, 2, 3, 5, 6},
        0)
    fmt.Println("Mann-WhitneyUTest: ", e)
}

关于go - 如何使用 go 内部包中的统计函数 (MannWhitneyUTest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57228795/

相关文章:

go - exec.Command 错误,没有输出到 stdout 或 stderr

r - 来自 R 的 glm 例程的预期 Fisher 信息

r - R中fuzzySim包中的错误发现率(FDR)

python-3.x - Python - 根据现有数据集生成相关数据集

不允许 Golang 导入循环

http - 关闭连接后写入响应错误

go - float 的字节顺序

go - 当 Go 返回多个值时到底发生了什么

r - 吴豪斯曼检验检验内生性

php - 重定向用户,然后使用 php 和 mysql 记录他的访问