我使用GSL库在C中进行了线性回归。我在R中执行了相同的回归。我可以使用"摘要"在R中访问此回归的p值。命令。
在C中,我有协方差矩阵,残差平方和值和拟合系数。使用这些,我如何计算p值?
我使用" Getting p-value for linear regression in C gsl_fit_linear() function from GSL library"
尝试了这种方法任何人都可以确认它的有效性吗?与R相比,它给出的结果不同。
我已将此行C代码隔离为错误,但我无法理解原因:
double pv0=t0<0?2*(1-gsl_cdf_tdist_P(-t0,n-2)):2*(1-gsl_cdf_tdist_P(t0,n-2));//This is the p-value of the constant term
R给出的结果:
系数:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -700.000 226.569 -3.090 0.05373 .
x 60.000 6.831 8.783 0.00311 **
C给出的结果:
Coefficients Estimate Std. Error t value Pr(>|t|)
(Intercept) -700.000000 226.568606 -3.089572 -550099700.000000
x 60.000000 6.831301 8.783101 -4.000000
答案 0 :(得分:2)
gsl_cdf_tdist_P
应该预期两个double
个参数,并在0和1之间返回double
。
首先检查所有类型。
如果在所有类型都正确的情况下它返回0-1以外的值,那么某处就会出现非常严重的问题。
答案 1 :(得分:1)
原来我正在编译而没有警告,我没有看到gsl_cdf_tdist_P被隐式声明。这导致编译器认为函数必须返回一个整数。我包含了相关的gsl标头,并获得了与R匹配的值。