[R-es] convertir el resultado de un regresión lineal en una función

Argel Gastélum Arellánez argel.gastelum en gmail.com
Sab Jun 23 00:58:39 CEST 2012



El 22/06/12 17:04, Argel Gastélum Arellánez escribió:
>     Hola Daniel, tal vez esto te pueda servir...
>
> El 22/06/12 12:28, Daniel Arismendi escribió:
>> Saludos a todos los miembros de la comunidad.
>>
>> Estoy en estos momentos intentando resolver un problemita con R (una
>> metodología que tengo que repetir cerca de 100 veces con un conjunto de
>> datos) y me gustaría convertir el resultado de una regresión lineal 
>> en una
>> función que pueda ser integrada posteriormente, es decir:
>>
>> Tengo los siguiente:
>> >file<- commandArgs(trailingOnly=TRUE)
>> >options(digits=16)
>> >options(max.print=5.5E5)
>> >x<- seq(50001,100000,1)
>> >datos<- read.table(file)
>> >attach(datos)
>> >ajust<- lm(V1~x,data=datos)
>> >ajust.
>>
>> Hasta aquí no tengo problemas y se resolver integrales de manera 
>> numérica
>> en R de manera aislada, por ejemplo:
>>
>>> ## define the integrated function
>>> integrand<- function(x) {1/((x+1)*sqrt(x))}
>>> ## integrate the function from 0 to infinity
>>> integrate(integrand, lower = 0, upper = Inf)
>> Cuando quiero intentar relacionar ambas cosas en una sola, no tengo 
>> idea de
>> como pasar el resultado que arroja "ajust" y convertirlo en una 
>> función que
>> pueda integrarse usando el ejemplo que os muestro arriba.
>>
>> Alguna idea de como pudiera empezar para resolver este problemilla.!
>>
>> Gracias de antemano.
>>
>
> # Datos
>
> x <- c(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
>
> V1 <- c(1, 3, 2, 7, 9, 11, 13, 12, 15, 19, 22)
>
> datos <- data.frame(x, V1)
>
> # Modelo lineal:
>
> ajust <- lm(V1 ~ x, data = datos)
>
> ajust
>
> ## define the integrated function
> integrand <- function(x) {(ajust$coefficients["x"]) * x + 
> ajust$coefficients["(Intercept)"]}
>
> integrand
>
> ## integrate the function from 0 to infinity
> integrate(integrand, lower = 0, upper = 20)

# Otra forma es usar "predict":
integrand.2 <- function(x) {predict(object = ajust, newdata = 
data.frame(x))}

integrate(integrand.2, lower = 0, upper = 20)



Más información sobre la lista de distribución R-help-es